import Model, { Providers } from '@tripian/model';
export type GygTourDataFormPersonsCategory = {
    addon: boolean;
    id: number;
    max_age?: number;
    min_age: number;
    name: string;
    stand_alone: boolean;
};
export type GygTourDataOptionAvailability = {
    availability_id: number;
} & Providers.Gyg.TourAvailabilityEx & Providers.Gyg.TourOptionPricing;
export type GygTourDataOption = Providers.Gyg.TourOption & {
    availabilities: GygTourDataOptionAvailability[];
};
export type GygTourData = {
    tour: Providers.Gyg.Tour;
    availableDates: string[];
    formPersonsCategories: GygTourDataFormPersonsCategory[];
    options: GygTourDataOption[];
};
declare class API {
    private axios;
    private proxyURL;
    private apiUrl;
    private sandbox;
    private lang;
    private currency;
    constructor(apiUrl: string, apiToken: string, sandbox: boolean, proxyURL: string, lang: string, currency: string);
    categories: (limit?: number) => Promise<Providers.Gyg.Category[]>;
    category: (categoryId: number) => Promise<Providers.Gyg.Category>;
    private defaultTours;
    private ticketTours;
    toursAll: (cityName: string, cityCoordinate?: Model.Coordinate, radius?: number, date?: Providers.Gyg.TourDateRange, categoryIds?: number[], unique?: boolean, limit?: number, preformatted?: string) => Promise<Providers.Gyg.CatalogGroup[]>;
    tours: (cityName: string, cityCoordinate?: Model.Coordinate, radius?: number, date?: Providers.Gyg.TourDateRange, categoryIds?: number[], unique?: boolean, limit?: number, preformatted?: string) => Promise<Providers.Gyg.CatalogGroup[]>;
    tour: (tourId: number, preformatted?: string) => Promise<Providers.Gyg.Tour>;
    private tourOptions_1;
    private optionAvailabilities_2;
    private optionPricings_3;
    tourDataEx: (tourId: number, startDate: string, endDate: string) => Promise<GygTourData>;
    /**
     *
     *  REMOVE
     *
     */
    tourAvailabilities: (tourId: number, startDate: string, endDate?: string) => Promise<Providers.Gyg.TourAvailabilityEx[]>;
    options: (tourId: number) => Promise<Providers.Gyg.TourOption[]>;
    optionAvailabilities: (optionId: number, startDate: string, endDate?: string) => Promise<Providers.Gyg.TourAvailabilityEx[]>;
    optionPricings: (optionId: number) => Promise<Providers.Gyg.TourOptionPricing>;
    tourAvailabilitiy: (tourId: number) => Promise<Providers.Gyg.TourAvailability>;
    tourOptions: (tourId: number, startDate: string, endDate?: string, limit?: number) => Promise<Providers.Gyg.TourOptions>;
    tourPriceBreakdown: (tourId: number, tourOptionsRequest: Providers.Gyg.TourPriceBreakdownRequest) => Promise<Providers.Gyg.TourPriceBreakdown>;
    tourData: (tourId: number) => Promise<Providers.Gyg.TourData>;
    bookingAdd: (tourBookingRequest: Providers.Gyg.TourBookingRequest) => Promise<Providers.Gyg.TourBookingMetaData | Providers.Gyg.TourErrorResponse>;
    booking: (bookingHash: string) => Promise<Providers.Gyg.TourBookingInfo[]>;
    bookingDelete: (bookingHash: string) => Promise<Providers.Gyg.TourBooking[]>;
    cartAdd: (tourBookingCartRequest: Providers.Gyg.TourBookingCartRequest) => Promise<Providers.Gyg.TourBookingCart>;
    cart: (shoppingCartHash: string) => Promise<Providers.Gyg.TourBookingCart>;
    paymentConfiguration: (country?: string) => Promise<Providers.Gyg.PaymentConfiguration[]>;
}
export default API;
