import { PoTokenProvider, PoTokenRequest } from './PoTokenProvider';
export interface PoTokenDirectorOptions {
    enableCache?: boolean;
    preferredProvider?: string;
    fallbackToAdvanced?: boolean;
    logger?: {
        debug: (message: string) => void;
        info: (message: string) => void;
        warn: (message: string) => void;
        error: (message: string) => void;
    };
}
export declare class PoTokenDirector {
    private providers;
    private cache;
    private options;
    constructor(options?: PoTokenDirectorOptions);
    private initializeProviders;
    registerProvider(provider: PoTokenProvider): void;
    getProvider(name: string): PoTokenProvider | undefined;
    getPoToken(request: PoTokenRequest): Promise<string | null>;
    private requestTokenFromProviders;
    private getProviderOrder;
    createPoTokenRequest(options: {
        context: 'gvs' | 'player' | 'subs';
        videoId?: string;
        visitorData?: string;
        isAuthenticated?: boolean;
        clientName?: string;
        clientVersion?: string;
        cookies?: any[];
        headers?: Record<string, string>;
        proxy?: string;
        sourceAddress?: string;
    }): PoTokenRequest;
    clearCache(): void;
    getStats(): {
        providersCount: number;
        providers: string[];
        cacheEnabled: boolean;
        preferredProvider: string;
    };
}
//# sourceMappingURL=PoTokenDirector.d.ts.map