import { Providers } from '@tripian/model';
declare class API {
    private static instance;
    private axios;
    private proxyURL;
    private apiUrl;
    private apiToken;
    private apiSecret;
    private static cache;
    private readonly CACHE_DURATION;
    constructor(apiUrl: string, apiToken: string, proxyURL: string);
    static getInstance(apiUrl: string, apiToken: string, proxyURL: string): API;
    /**
     * Generates an HMAC-SHA256 signature for authentication.
     */
    private generateSignature;
    /**
     * Constructs headers for API requests.
     */
    private getHeaders;
    private static getCacheKey;
    private getFromCache;
    private static setCache;
    /**
     * Fetches events based on latitude, longitude, and optional date filters.
     */
    events: (lat: number, lon: number, startDate?: string, endDate?: string) => Promise<Providers.Victory.Event[]>;
    /**
     * Fetches event details by event ID.
     */
    eventDetails: (eventid: string) => Promise<Providers.Victory.EventDetail>;
    /**
     * Fetches venue details by venue ID.
     */
    venue: (venueid: string) => Promise<Providers.Victory.Venue>;
    /**
     * Fetches list of ticket groups by event ID.
     */
    listTicketGroups: (eventid: string) => Promise<Providers.Victory.TicketResponse>;
    /**
     * Fetches ticket info by ticket ID.
     */
    ticketInfo: (ticketid: string) => Promise<Providers.Victory.TicketGroup>;
    clientsCreate: (request: Providers.Victory.ClientsCreateRequest) => Promise<Providers.Victory.ClientsData>;
    order: (request: Providers.Victory.ClientsCreateRequest) => Promise<Providers.Victory.OrdersResponse>;
}
export default API;
