import type { ParseMediaSrc } from '../../options';
export type M3uHeader = {
    type: 'm3u-header';
};
export type M3uVersion = {
    type: 'm3u-version';
    version: string;
};
export type M3uIndependentSegments = {
    type: 'm3u-independent-segments';
};
export type M3uMedia = {
    type: 'm3u-media';
};
export type M3uTargetDuration = {
    type: 'm3u-target-duration';
    duration: number;
};
export type M3uPlaylistType = {
    type: 'm3u-playlist-type';
    playlistType: string;
};
export type M3uPlaylist = {
    type: 'm3u-playlist';
    boxes: M3uBox[];
    src: ParseMediaSrc;
};
export type M3uExtInf = {
    type: 'm3u-extinf';
    value: number;
};
export type M3uEndList = {
    type: 'm3u-endlist';
};
export type M3uMediaSequence = {
    type: 'm3u-media-sequence';
    value: number;
};
export type M3uDiscontinuitySequence = {
    type: 'm3u-discontinuity-sequence';
    value: number;
};
export type M3uIFrameStreamInfo = {
    type: 'm3u-i-frame-stream-info';
};
export type M3uMap = {
    type: 'm3u-map';
    value: string;
};
export type M3uStreamInfo = {
    type: 'm3u-stream-info';
    bandwidthInBitsPerSec: number | null;
    averageBandwidthInBitsPerSec: number | null;
    codecs: string[] | null;
    dimensions: {
        width: number;
        height: number;
    } | null;
    audio: string | null;
};
export type M3uMediaInfo = {
    type: 'm3u-media-info';
    groupId: string;
    language: string | null;
    name: string | null;
    autoselect: boolean;
    default: boolean;
    channels: number | null;
    uri: string;
    mediaType: string | null;
};
export type M3uTextValue = {
    type: 'm3u-text-value';
    value: string;
};
export type M3uAllowCache = {
    type: 'm3u-allow-cache';
    allowsCache: boolean;
};
export type M3uProgramDateTime = {
    type: 'm3u-program-date-time';
    dateTime: string;
};
export type M3uBox = M3uHeader | M3uPlaylist | M3uVersion | M3uIndependentSegments | M3uStreamInfo | M3uTargetDuration | M3uPlaylistType | M3uExtInf | M3uMedia | M3uMediaInfo | M3uEndList | M3uMediaSequence | M3uDiscontinuitySequence | M3uMap | M3uIFrameStreamInfo | M3uTextValue | M3uAllowCache | M3uProgramDateTime;
export type M3uStructure = {
    type: 'm3u';
    boxes: M3uBox[];
};
