import { AxiosInstance } from "axios";
import { Gender, Coat, Color, Location, Status, Age, Animal, AnimalType, MultipleSize, Sort } from "./types";
export interface IPetfinderClient {
    searchAnimals(params: {
        type: string;
        location?: Location;
        size?: MultipleSize;
        age?: Age;
        gender?: Gender;
        coat?: Coat;
        color?: Color;
        status?: Status;
        limit?: number;
        good_with_children?: boolean;
        good_with_dogs?: boolean;
        good_with_cats?: boolean;
        house_trained?: boolean;
        declawed?: boolean;
        special_needs?: boolean;
        distance?: number;
        before?: string;
        after?: string;
    }): Promise<Animal[]>;
}
export declare class PetfinderClient implements IPetfinderClient {
    private static instance;
    http: AxiosInstance;
    private config;
    private animalTypes;
    private constructor();
    static getInstance(apiKey: string, secretKey: string): PetfinderClient;
    private authenticate;
    searchAnimals(params: {
        type: string;
        location: Location;
        size?: MultipleSize;
        age?: Age;
        gender?: Gender;
        coat?: Coat;
        color?: Color;
        breed?: string;
        status?: Status;
        limit?: number;
        good_with_children?: boolean;
        good_with_dogs?: boolean;
        good_with_cats?: boolean;
        house_trained?: boolean;
        declawed?: boolean;
        special_needs?: boolean;
        distance?: number;
        sort?: Sort;
        before?: string;
        after?: string;
    }): Promise<Animal[]>;
    getAnimalTypes(): Promise<AnimalType[]>;
}
