export type BoxParserFields = {
    [key: string]: unknown;
};
export type ParsedFieldLocation = {
    offset?: number | undefined;
    byteLength?: number | undefined;
};
export type ParsedNumberField = ParsedFieldLocation & {
    kind: "number";
    value: number;
};
export type ParsedBigIntField = ParsedFieldLocation & {
    kind: "bigint";
    value: bigint;
};
export type ParsedStringField = ParsedFieldLocation & {
    kind: "string";
    value: string;
};
export type ParsedBytesField = ParsedFieldLocation & {
    kind: "bytes";
    value: string;
};
export type ParsedBooleanField = ParsedFieldLocation & {
    kind: "boolean";
    value: boolean;
};
export type ParsedNullField = ParsedFieldLocation & {
    kind: "null";
    value: null;
};
export type ParsedFixedPointField = ParsedFieldLocation & {
    kind: "fixed-point";
    value: number;
    raw: number;
    format: string;
    signed: boolean;
    bits: number;
};
export type ParsedDateField = ParsedFieldLocation & {
    kind: "date";
    value: number | bigint;
    date: string | null;
    epoch: string;
    unit: "seconds";
};
export type ParsedBitsFieldPartDefinition = {
    key: string;
    bits: number;
};
export type ParsedBitsFieldPart = {
    key: string;
    value: number;
    bits: number;
    shift: number;
    mask: number;
};
export type ParsedBitsField = ParsedFieldLocation & {
    kind: "bits";
    value: number;
    raw: number;
    bits: number;
    fields: ParsedBitsFieldPart[];
};
export type ParsedFlagsFieldEntry = {
    key: string;
    value: boolean;
    mask: number;
};
export type ParsedFlagsField = ParsedFieldLocation & {
    kind: "flags";
    value: number;
    raw: number;
    bits: number;
    flags: ParsedFlagsFieldEntry[];
};
export type ParsedArrayField = ParsedFieldLocation & {
    kind: "array";
    items: ParsedField[];
};
export type ParsedStructField = ParsedFieldLocation & {
    kind: "struct";
    fields: ParsedBoxValue[];
    layout?: string;
};
export type ParsedField = ParsedNumberField | ParsedBigIntField | ParsedStringField | ParsedBytesField | ParsedBooleanField | ParsedNullField | ParsedFixedPointField | ParsedDateField | ParsedBitsField | ParsedFlagsField | ParsedArrayField | ParsedStructField;
export type ParsedBoxValue = {
    key: string;
    description?: string;
} & ParsedField;
export type ParsedBoxIssue = {
    severity: "warning" | "error";
    message: string;
};
export type ParsedBox = {
    type: string;
    offset: number;
    size: number;
    actualSize: number;
    headerSize: number;
    sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
    values: ParsedBoxValue[];
    uuid?: string | undefined;
    name?: string | undefined;
    description?: string | undefined;
    children?: ParsedBox[] | undefined;
    issues: ParsedBoxIssue[];
};
export type ParseOptions = {
    format?: ("full" | "simple") | undefined;
};
/**
 * Metadata describing a payload chunk forwarded while progressively consuming a
 * box payload.
 */
export type BoxPayloadChunkInfo = {
    path: string[];
    type: string;
    boxOffset: number;
    boxSize: number;
    headerSize: number;
    sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
    uuid?: string | undefined;
    payloadOffset: number;
    payloadAbsoluteOffset: number;
};
export type BoxPayloadChunkCallback = (info: BoxPayloadChunkInfo, chunk: Uint8Array) => void | Promise<void>;
export type ParseEventsPayloadOptions = {
    include: string[];
    onChunk: BoxPayloadChunkCallback;
};
export type ParseEventsOptions = {
    payloads?: ParseEventsPayloadOptions | undefined;
};
export type SimpleParsedBox = {
    type: string;
    offset: number;
    size: number;
    actualSize: number;
    headerSize: number;
    sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
    uuid?: string | undefined;
    fields: Record<string, unknown>;
    children?: SimpleParsedBox[] | undefined;
    issues?: ParsedBoxIssue[] | undefined;
};
/**
 * Emitted as soon as a box header has been parsed.
 */
export type ParsedBoxStartEvent = {
    event: "box-start";
    path: string[];
    type: string;
    offset: number;
    size: number;
    headerSize: number;
    sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
    uuid?: string | undefined;
};
/**
 * Emitted when a box has been parsed, or when parsing cannot continue after a
 * malformed partial box.
 */
export type ParsedBoxCompleteEvent = {
    event: "box-complete";
    path: string[];
    box: ParsedBox;
};
export type ParsedBoxParseEvent = ParsedBoxStartEvent | ParsedBoxCompleteEvent;
export type ISOBMFFByteChunk = ArrayBuffer | ArrayBufferView;
/**
 * Progressive byte sources supported by the public entry point.
 *
 * This intentionally mirrors usual browser and Node.js APIs:
 * - Blob/File inputs expose stream() and arrayBuffer()
 * - fetch Request/Response objects expose body and arrayBuffer()
 * - Node.js readable streams are AsyncIterable byte chunks
 */
export type ISOBMFFBlobLike = {
    stream?: (() => ReadableStream<ISOBMFFByteChunk>) | undefined;
    arrayBuffer?: (() => Promise<ArrayBuffer>) | undefined;
};
export type ISOBMFFBodyLike = {
    body?: (ReadableStream<ISOBMFFByteChunk> | AsyncIterable<ISOBMFFByteChunk> | Iterable<ISOBMFFByteChunk> | null) | undefined;
    stream?: (() => ReadableStream<ISOBMFFByteChunk>) | undefined;
    arrayBuffer?: (() => Promise<ArrayBuffer>) | undefined;
};
export type ISOBMFFProgressiveInput = ReadableStream<ISOBMFFByteChunk> | AsyncIterable<ISOBMFFByteChunk> | Iterable<ISOBMFFByteChunk> | ISOBMFFBlobLike | ISOBMFFBodyLike;
export type ISOBMFFInput = ISOBMFFByteChunk | ISOBMFFProgressiveInput;
//# sourceMappingURL=types.d.ts.map