import { SegmentIndex, SegmentMatchInfo } from './ManifestModel';
export interface DashTimelineEntry {
    t?: number;
    d: number;
    r: number;
}
/**
 * Template-based DASH segment index aligned with Android DashSegmentIndex.
 * Supports $Number$, $Time$, $Bandwidth$, $RepresentationID$ with format tags.
 */
export default class DashSegmentIndex implements SegmentIndex {
    readonly startNumber: number;
    readonly isLive: boolean;
    readonly hasUniqueSegmentUris = true;
    readonly resolvedMediaTemplate: string;
    readonly resolvedInitUri: string | undefined;
    private readonly mediaTemplate;
    private readonly timescale;
    private readonly bandwidth;
    private readonly representationId;
    private readonly timeline;
    private readonly presentationTimeOffset;
    private readonly fixedSegmentDuration;
    private readonly manifestDurationMs;
    private readonly usesFixedDuration;
    private readonly usesTimeTemplate;
    private templateRegex;
    private initRegex;
    constructor(opts: {
        mediaTemplate: string;
        initTemplate?: string;
        timescale?: number;
        startNumber?: number;
        bandwidth?: number;
        representationId?: string;
        timeline?: DashTimelineEntry[];
        isLive?: boolean;
        presentationTimeOffset?: number;
        fixedSegmentDuration?: number;
        manifestDurationMs?: number;
    });
    get segmentCount(): number;
    get targetDurationSecs(): number;
    get totalDurationSecs(): number;
    getSegmentUri(segmentNumber: number): string | undefined;
    getSegmentInfoForUri(chunkUri: string, byteRangeOffset?: number): SegmentMatchInfo | undefined;
    matchesInitUri(chunkUri: string): boolean;
    getSegmentInfoByNumber(segmentNumber: number): SegmentMatchInfo | undefined;
    private buildMatchInfo;
    private resolveSegment;
    private findSegmentByTime;
    private getTemplateRegex;
    private getInitRegex;
}
