import { UrlMatch } from './ManifestModel';
import Resource from '../Resource/Resource';
interface ResolveStats {
    parseCount: number;
    resolveCount: number;
    resolveHits: number;
    resolveMisses: number;
    lookaheadHits: number;
    lastHitFastHits: number;
    lastHitForceHits: number;
    multiPassHits: number;
    subManifestAttachments: number;
}
/**
 * Manifest registry and URL resolver aligned with Android ResourceIdentifier.
 * Manages parsed manifests, sub-manifest attachment, lookahead cache, and multi-level resolution.
 */
export default class ResourceIdentifier {
    private readonly hlsParser;
    private readonly dashParser;
    private readonly resource;
    private readonly manifests;
    private readonly segmentLookahead;
    private readonly lookaheadEvictionQueue;
    private manifestOrder;
    private lastHitManifestKey;
    private lastHitTrackUri;
    private readonly manifestLastHitTime;
    private stats;
    constructor(resource: Resource);
    /**
     * Parse a manifest and register it. Returns parsed info for callers that need
     * isMasterManifest / targetDuration.
     */
    onManifest(url: string, rawData: string): {
        isMasterManifest: boolean;
        targetDurationSeconds?: number;
    } | undefined;
    /**
     * Multi-level URL resolution aligned with Android ResourceIdentifier.resolveUrl().
     * Priority: manifest cache → lookahead → last-hit manifest → ordered manifests.
     */
    resolveUrl(url: string, byteRangeOffset?: number): UrlMatch | undefined;
    isTrackOfKnownMaster(url: string): boolean;
    clear(): void;
    getResolveStats(): ResolveStats & {
        manifestCount: number;
        lookaheadSize: number;
    };
    private acceptMatch;
    private updateTrackAffinity;
    private triggerLookaheadIfNeeded;
    private populateLookahead;
    private evictLookaheadIfNeeded;
    private resolveFromLookahead;
    private findTrackByIdentity;
    private processManifest;
    private tryAttachSubManifest;
    private findTrackKey;
    private promoteManifest;
    private touchManifest;
    private evictIfNeeded;
    private logResolve;
}
export {};
