import type { MediaParserCodecData } from './codec-data';
import type { MediaParserMatrixCoefficients, MediaParserPrimaries, MediaParserTransferCharacteristics } from './containers/avc/color';
import type { MoovBox } from './containers/iso-base-media/moov/moov';
import type { TrakBox } from './containers/iso-base-media/trak/trak';
import type { M3uPlaylistContext } from './options';
import type { IsoBaseMediaState } from './state/iso-base-media/iso-state';
import type { ParserState } from './state/parser-state';
import type { StructureState } from './state/structure';
export type MediaParserSampleAspectRatio = {
    numerator: number;
    denominator: number;
};
export type MediaParserAdvancedColor = {
    transfer: MediaParserTransferCharacteristics | null;
    matrix: MediaParserMatrixCoefficients | null;
    primaries: MediaParserPrimaries | null;
    fullRange: boolean | null;
};
export type MediaParserVideoCodec = 'vp8' | 'vp9' | 'h264' | 'av1' | 'h265' | 'prores';
export type MediaParserAudioCodec = 'opus' | 'aac' | 'mp3' | 'ac3' | 'vorbis' | 'pcm-u8' | 'pcm-s16' | 'pcm-s24' | 'pcm-s32' | 'pcm-f32' | 'flac' | 'aiff';
export type MediaParserVideoTrack = {
    codec: string;
    description: Uint8Array | undefined;
    colorSpace: VideoColorSpaceInit;
    codedWidth: number;
    codedHeight: number;
    displayAspectWidth: number;
    displayAspectHeight: number;
    type: 'video';
    trackId: number;
    codecEnum: MediaParserVideoCodec;
    codecData: MediaParserCodecData | null;
    sampleAspectRatio: MediaParserSampleAspectRatio;
    width: number;
    height: number;
    rotation: number;
    fps: number | null;
    timescale: 1000000;
    originalTimescale: number;
    advancedColor: MediaParserAdvancedColor;
    m3uStreamFormat: 'ts' | 'mp4' | null;
    startInSeconds: number;
    trackMediaTimeOffsetInTrackTimescale: number;
};
export type MediaParserAudioTrack = {
    codec: string;
    sampleRate: number;
    description: Uint8Array | undefined;
    numberOfChannels: number;
    type: 'audio';
    trackId: number;
    codecEnum: MediaParserAudioCodec;
    timescale: 1000000;
    originalTimescale: number;
    codecData: MediaParserCodecData | null;
    startInSeconds: number;
    trackMediaTimeOffsetInTrackTimescale: number;
};
export type MediaParserOtherTrack = {
    type: 'other';
    trackId: number;
    timescale: 1000000;
    originalTimescale: number;
    trakBox: TrakBox | null;
    startInSeconds: number;
    trackMediaTimeOffsetInTrackTimescale: number;
};
export type MediaParserTrack = MediaParserVideoTrack | MediaParserAudioTrack | MediaParserOtherTrack;
export declare const getNumberOfTracks: (moovBox: MoovBox) => number;
export declare const isoBaseMediaHasTracks: (state: ParserState, mayUsePrecomputed: boolean) => boolean;
export declare const getHasTracks: (state: ParserState, mayUsePrecomputed: boolean) => boolean;
export declare const getTracksFromMoovBox: (moovBox: MoovBox) => MediaParserTrack[];
export declare const getTracksFromIsoBaseMedia: ({ mayUsePrecomputed, structure, isoState, m3uPlaylistContext, }: {
    structure: StructureState;
    isoState: IsoBaseMediaState;
    m3uPlaylistContext: M3uPlaylistContext | null;
    mayUsePrecomputed: boolean;
}) => MediaParserTrack[];
export declare const defaultGetTracks: (parserState: ParserState) => MediaParserTrack[];
export declare const defaultHasallTracks: (parserState: ParserState) => boolean;
export declare const getTracks: (state: ParserState, mayUsePrecomputed: boolean) => MediaParserTrack[];
