#![doc = include_str!("../README.md")]
use thiserror::Error;
pub mod client;
pub mod mcp;
pub mod models;
pub use client::NsipClient;
pub use models::{
AnimalDetails, AnimalProfile, Breed, BreedGroup, ContactInfo, DateLastUpdated, Lineage,
LineageAnimal, Progeny, ProgenyAnimal, SearchCriteria, SearchResults, Trait, TraitRange,
TraitRangeFilter,
};
#[derive(Error, Debug)]
pub enum Error {
#[error("validation error: {0}")]
Validation(String),
#[error("API error (HTTP {status}): {message}")]
Api {
status: u16,
message: String,
},
#[error("not found: {0}")]
NotFound(String),
#[error("request timed out: {0}")]
Timeout(String),
#[error("connection error: {0}")]
Connection(String),
#[error("parse error: {0}")]
Parse(String),
}
pub type Result<T> = std::result::Result<T, Error>;