export declare enum ManifestProtocol {
    HLS = "HLS",
    DASH = "DASH"
}
export declare enum TrackType {
    VIDEO = "VIDEO",
    AUDIO = "AUDIO",
    TEXT = "TEXT"
}
export declare enum UrlType {
    MASTER_MANIFEST = "MASTER_MANIFEST",
    SUB_MANIFEST = "SUB_MANIFEST",
    INIT_SEGMENT = "INIT_SEGMENT",
    MEDIA_SEGMENT = "MEDIA_SEGMENT"
}
export interface SegmentMatchInfo {
    segmentNumber: number;
    estimatedTimeSecs: number;
    estimatedDurationSecs: number;
}
export interface SegmentIndex {
    readonly segmentCount: number;
    readonly startNumber: number;
    readonly targetDurationSecs: number;
    readonly totalDurationSecs: number;
    readonly isLive: boolean;
    readonly hasUniqueSegmentUris: boolean;
    getSegmentUri(segmentNumber: number): string | undefined;
    getSegmentInfoForUri(chunkUri: string, byteRangeOffset?: number): SegmentMatchInfo | undefined;
    matchesInitUri(chunkUri: string): boolean;
    getSegmentInfoByNumber(segmentNumber: number): SegmentMatchInfo | undefined;
}
export interface UrlMatch {
    urlType: UrlType;
    manifest: Manifest;
    track: Manifest | undefined;
    segmentNumber: number | undefined;
    segmentTimeSecs: number | undefined;
    segmentDurationSecs: number | undefined;
}
export interface ManifestData {
    uri: string;
    id?: string;
    protocol: ManifestProtocol;
    isMasterManifest: boolean;
    isLive?: boolean;
    durationMs?: number;
    trackType?: TrackType;
    bitrate?: number;
    videoCodecs?: string;
    audioCodecs?: string;
    width?: number;
    height?: number;
    language?: string;
    containerMimeType?: string;
    frameRate?: number;
    tracks?: Map<string, Manifest[]>;
    segmentIndex?: SegmentIndex;
    sourceUrl?: string;
}
export declare class Manifest {
    readonly uri: string;
    readonly id: string | undefined;
    readonly protocol: ManifestProtocol;
    readonly isMasterManifest: boolean;
    readonly isLive: boolean;
    readonly durationMs: number;
    readonly trackType: TrackType | undefined;
    readonly bitrate: number;
    readonly videoCodecs: string | undefined;
    readonly audioCodecs: string | undefined;
    readonly width: number;
    readonly height: number;
    readonly language: string | undefined;
    readonly containerMimeType: string | undefined;
    readonly frameRate: number;
    readonly tracks: Map<string, Manifest[]>;
    readonly segmentIndex: SegmentIndex | undefined;
    readonly sourceUrl: string | undefined;
    constructor(data: ManifestData);
    copy(overrides: Partial<ManifestData>): Manifest;
    /**
     * Multi-level URL resolution aligned with Android Manifest.resolveUrl().
     * Level 1: O(1) directory key lookup
     * Level 2: reverse-contains on track keys
     * Level 2b: flattened sub-manifest filenames
     * Own segmentIndex check
     * Level 3: brute-force (if force=true)
     */
    resolveUrl(dirPathOrFullPath: string, filenameOrUndefined?: string, skipPathChecks?: boolean, force?: boolean, byteRangeOffset?: number, preferredTrackUri?: string): UrlMatch | undefined;
    private matchTrackList;
    private isStrongMatch;
    private matchTrack;
    private matchSegmentIndex;
}
