/**
 * Global URL token deduplication utility
 * Ensures that multiple EFMedia elements requesting tokens for the same resource
 * share a single token request, preventing unnecessary duplicate token generation
 */
export interface TokenCacheEntry {
    tokenPromise: Promise<string>;
    expiration: number;
}
export declare class URLTokenDeduplicator {
    private tokenCache;
    /**
     * Get or create a URL token with global deduplication
     * Multiple requests for the same cache key will share the same token promise
     */
    getToken(cacheKey: string, tokenFactory: () => Promise<string>, parseExpiration: (token: string) => number): Promise<string>;
    /**
     * Clear all cached tokens (used in testing)
     */
    clear(): void;
    /**
     * Get number of cached tokens
     */
    getCachedCount(): number;
    /**
     * Check if a token is cached and valid
     */
    hasValidToken(cacheKey: string): boolean;
    /**
     * Get all cached token keys
     */
    getCachedKeys(): string[];
    /**
     * Remove expired tokens from cache
     */
    cleanup(): void;
}
export declare const globalURLTokenDeduplicator: URLTokenDeduplicator;
