interface PlantVarietySearchResponse {
    totalCount: number;
    data: PlantVariety[];
    meta: {
        page: number;
        perPage: number;
        pages: number;
    };
}
interface PlantVariety {
    id: string;
    mappingId: string;
    category: string;
    name: string;
    type: string;
    subtype: string;
    description: string;
    growingRequirements: GrowingRequirements;
    growthDetails: GrowthDetails;
    lifecycleMilestones: LifecycleMilestones;
    careInstructions: CareInstructions;
    commonUses: string;
    pestAndDiseaseRisks: string;
    highlights: string;
    history: string;
}
interface GrowingRequirements {
    minGrowingZone: number;
    maxGrowingZone: number;
    growingZoneRange: string;
    careInstructions: string;
    soilPreference: string;
    sunlightRequirement: string;
    waterRequirement: string;
    preferredTemperature: string;
    spacingRequirement: string;
}
interface GrowthDetails {
    growthPeriod: string;
    growthType: string;
    matureHeight: number;
    matureWidth: number;
}
interface LifecycleMilestones {
    avgFirstBloomDate: string;
    firstHarvestDate: string | null;
    lastHarvestDate: string | null;
}
interface CareInstructions {
    plantingInstructions: {
        startIndoors: string;
        transplantOutdoors: string;
        directSow: string;
    };
    pruningInstructions: string;
    harvestingInstructions: string | null;
}
interface PlantVarietyFilter {
    category?: string;
    type?: string;
    subtype?: string;
    growingZone?: number;
    sunlightRequirement?: string;
    soilPreference?: string;
    growthPeriod?: string;
    growthType?: string;
    pestAndDiseaseRisks?: string;
    minHeight?: number;
    maxHeight?: number;
    commonUses?: string;
    preferredTemperature?: string;
    waterRequirement?: string;
    highlights?: string;
}

interface PlantSpeciesSearchResponse {
    totalCount: number;
    data: PlantSpecies[];
    meta: {
        page: number;
        perPage: number;
        pages: number;
    };
}
interface PlantSpecies {
    id: string;
    symbol: string;
    acceptedSymbol: string;
    synonymSymbol: string | null;
    commonName: string;
    scientificName: string;
    hybridGenusIndicator: string | null;
    hybridSpeciesIndicator: string | null;
    species: string | null;
    subspeciesPrefix: string | null;
    hybridSubspeciesIndicator: string | null;
    subspecies: string | null;
    varietyPrefix: string | null;
    hybridVarietyIndicator: string | null;
    variety: string | null;
    subvarietyPrefix: string | null;
    subvariety: string | null;
    formaPrefix: string | null;
    forma: string | null;
    generaBinomialAuthor: string | null;
    trinomialAuthor: string | null;
    quadranomialAuthor: string | null;
    questionableTaxonIndicator: string | null;
    parents: string | null;
    stateAndProvince: string | null;
    category: string;
    family: string;
    familySymbol: string;
    familyCommonName: string;
    order: string;
    subclass: string;
    class: string;
    subdivision: string | null;
    division: string;
    superdivision: string;
    subkingdom: string;
    kingdom: string;
    duration: string | null;
    growthHabit: string | null;
    nativeStatus: string | null;
    federalNoxiousStatus: string | null;
    stateNoxiousStatus: string | null;
    stateNoxiousCommonName: string | null;
    invasive: string | null;
    federalTeStatus: string | null;
    stateTeStatus: string | null;
    stateTeCommonName: string | null;
    activeGrowthPeriod: string | null;
}
interface PlantSpeciesFilter {
    symbol?: string;
    acceptedSymbol?: string;
    commonName?: string;
    scientificName?: string;
    family?: string;
    category?: string;
    order?: string;
}

interface VerdantlyClientConfig {
    apiKey: string;
    baseUrl?: string;
}
declare class VerdantlyClient {
    private apiKey;
    private baseUrl;
    constructor(config: VerdantlyClientConfig);
    getPlantVarietyCategories(): Promise<string[]>;
    getTypesByCategory(category: string): Promise<string[]>;
    getSubtypesByType(type: string): Promise<string[]>;
    searchPlantVarietiesByName(query: string, page?: number): Promise<PlantVarietySearchResponse>;
    searchPlantVarietiesByFilter(filters: PlantVarietyFilter, page?: number): Promise<PlantVarietySearchResponse>;
    searchPlantSpeciesByName(query: string, page?: number): Promise<PlantSpeciesSearchResponse>;
    searchPlantSpeciesByFilter(filters: PlantSpeciesFilter, page?: number): Promise<PlantSpeciesSearchResponse>;
    private apiRequest;
}

export { CareInstructions, GrowingRequirements, GrowthDetails, LifecycleMilestones, PlantSpecies, PlantSpeciesFilter, PlantSpeciesSearchResponse, PlantVariety, PlantVarietyFilter, PlantVarietySearchResponse, VerdantlyClient, VerdantlyClientConfig };
