import type { AdaptationFieldControl, TransportScramblingControl } from './Constants';
import type { PacketCursor } from './readers/PacketCursor';
export interface TransportStreamPacket {
    transportErrorIndicator: boolean;
    payloadUnitStartIndicator: boolean;
    transportPriority: boolean;
    packetIdentifier: number;
    scramblingControl: TransportScramblingControl;
    adaptationFieldControl: AdaptationFieldControl;
    continuityCounter: number;
    adaptation: Uint8Array;
    cursor: PacketCursor;
}
export type ProgramNumberZero = {
    programNumber: 0;
    networkPid: number;
};
export type ProgramNumberAny = {
    programNumber: number;
    programMapPid: number;
};
export interface PatPacket extends TransportStreamPacket {
    transportStreamId: number;
    programNumbers: (ProgramNumberZero | ProgramNumberAny)[];
}
export interface PmtPacket extends TransportStreamPacket {
    programNumber: number;
    streams: {
        type: number;
        elementaryPid: number;
    }[];
}
export interface PesContinuationPacket extends TransportStreamPacket {
    payloadUnitStartIndicator: false;
}
export interface PesPacket extends TransportStreamPacket {
    payloadUnitStartIndicator: true;
    streamId: number;
    payloadLength: number;
    hasPts: boolean;
    pts: number;
    hasDts: boolean;
    dts: number;
    hasDuration: boolean;
    duration: number;
}
export type FrameTiming = {
    hasDuration: boolean;
    duration: number;
    hasPts: boolean;
    pts: number;
    hasDts: boolean;
    dts: number;
};
