export type VisualSampleEntry = {
    /**
     * - 6 reserved bytes
     */
    reserved: number[];
    data_reference_index: number;
    pre_defined: number;
    reserved_1: number;
    pre_defined_1: [number, number, number];
    width: number;
    height: number;
    /**
     * - 16.16 fixed point
     */
    horizresolution: import("../types.js").ParsedFixedPointField;
    /**
     * - 16.16 fixed point
     */
    vertresolution: import("../types.js").ParsedFixedPointField;
    reserved_2: number;
    frame_count: number;
    compressorname: string;
    depth: number;
    pre_defined_2: number;
};
export type AudioSampleEntryVersion1Fields = {
    samples_per_packet: number;
    bytes_per_packet: number;
    bytes_per_frame: number;
    bytes_per_sample: number;
};
export type AudioSampleEntryVersion2Fields = {
    struct_size: number;
    sample_rate: import("../types.js").ParsedFixedPointField;
    channel_count: number;
    reserved_1: number;
    bits_per_channel: number;
    format_specific_flags: number;
    bytes_per_audio_packet: number;
    LPCM_frames_per_audio_packet: number;
};
export type AudioSampleEntryBase = {
    /**
     * - 6 reserved bytes
     */
    reserved: number[];
    data_reference_index: number;
    version: number;
    revision_level: number;
    vendor: number;
    channelcount: number;
    samplesize: number;
    compression_id: number;
    packet_size: number;
    samplerate: import("../types.js").ParsedFixedPointField;
};
export type AudioSampleEntryV1 = AudioSampleEntryBase & {
    version: 1;
} & AudioSampleEntryVersion1Fields;
export type AudioSampleEntryV2 = AudioSampleEntryBase & {
    version: 2;
} & AudioSampleEntryVersion2Fields;
export type AudioSampleEntry = AudioSampleEntryBase | AudioSampleEntryV1 | AudioSampleEntryV2;
/**
 * Internal field shape used by `BoxReader` while parsing audio sample entries.
 *
 * It intentionally accepts both version-specific field sets so the helper can
 * emit them conditionally while the public `AudioSampleEntry` typedef remains
 * strict.
 */
export type AudioSampleEntryParserShape = AudioSampleEntryBase & Partial<AudioSampleEntryVersion1Fields> & Partial<AudioSampleEntryVersion2Fields>;
export type Descriptor = {
    tag: number;
    size: number;
    header_size: number;
    payload: any;
};
/**
 * @param {string} name
 * @param {string} description
 * @returns {import("./types.js").BoxDefinition<{
 *   track_IDs: Array<number>,
 *   trailing_bytes?: Uint8Array,
 * }>}
 */
export function createTrackReferenceTypeBox(name: string, description: string): import("./types.js").BoxDefinition<{
    track_IDs: Array<number>;
    trailing_bytes?: Uint8Array;
}>;
import { decodeFixedPoint } from "../fields.js";
import { decodeSignedFixedPoint } from "../fields.js";
/**
 * @typedef {Object} AudioSampleEntryVersion1Fields
 * @property {number} samples_per_packet
 * @property {number} bytes_per_packet
 * @property {number} bytes_per_frame
 * @property {number} bytes_per_sample
 */
/**
 * @typedef {Object} AudioSampleEntryVersion2Fields
 * @property {number} struct_size
 * @property {import("../types.js").ParsedFixedPointField} sample_rate
 * @property {number} channel_count
 * @property {number} reserved_1
 * @property {number} bits_per_channel
 * @property {number} format_specific_flags
 * @property {number} bytes_per_audio_packet
 * @property {number} LPCM_frames_per_audio_packet
 */
/**
 * @typedef {Object} AudioSampleEntryBase
 * @property {number[]} reserved - 6 reserved bytes
 * @property {number} data_reference_index
 * @property {number} version
 * @property {number} revision_level
 * @property {number} vendor
 * @property {number} channelcount
 * @property {number} samplesize
 * @property {number} compression_id
 * @property {number} packet_size
 * @property {import("../types.js").ParsedFixedPointField} samplerate
 */
/**
 * @typedef {AudioSampleEntryBase & { version: 1 } & AudioSampleEntryVersion1Fields} AudioSampleEntryV1
 * @typedef {AudioSampleEntryBase & { version: 2 } & AudioSampleEntryVersion2Fields} AudioSampleEntryV2
 * @typedef {AudioSampleEntryBase | AudioSampleEntryV1 | AudioSampleEntryV2} AudioSampleEntry
 */
/**
 * Internal field shape used by `BoxReader` while parsing audio sample entries.
 *
 * It intentionally accepts both version-specific field sets so the helper can
 * emit them conditionally while the public `AudioSampleEntry` typedef remains
 * strict.
 *
 * @typedef {AudioSampleEntryBase & Partial<AudioSampleEntryVersion1Fields> & Partial<AudioSampleEntryVersion2Fields>} AudioSampleEntryParserShape
 */
/**
 * @param {import("../BoxReader.js").BoxReader<AudioSampleEntryParserShape>} r
 * @returns {void}
 */
export function parseAudioSampleEntry(r: import("../BoxReader.js").BoxReader<AudioSampleEntryParserShape>): void;
/**
 * @typedef {Object} Descriptor
 * @property {number} tag
 * @property {number} size
 * @property {number} header_size
 * @property {any} payload
 */
/**
 * @template {{ [k: string]: unknown }} T
 * @param {import("../BoxReader.js").BoxReader<T>} r
 * @returns {Descriptor}
 */
export function parseDescriptor<T extends {
    [k: string]: unknown;
}>(r: import("../BoxReader.js").BoxReader<T>): Descriptor;
/**
 * @template {{ [k: string]: unknown }} T
 * @param {import("../BoxReader.js").BoxReader<T>} r
 * @returns {import("../types.js").ParsedStructField}
 */
export function parseTransformationMatrix<T extends {
    [k: string]: unknown;
}>(r: import("../BoxReader.js").BoxReader<T>): import("../types.js").ParsedStructField;
/**
 * @typedef {Object} VisualSampleEntry
 * @property {number[]} reserved - 6 reserved bytes
 * @property {number} data_reference_index
 * @property {number} pre_defined
 * @property {number} reserved_1
 * @property {[number, number, number]} pre_defined_1
 * @property {number} width
 * @property {number} height
 * @property {import("../types.js").ParsedFixedPointField} horizresolution - 16.16 fixed point
 * @property {import("../types.js").ParsedFixedPointField} vertresolution - 16.16 fixed point
 * @property {number} reserved_2
 * @property {number} frame_count
 * @property {string} compressorname
 * @property {number} depth
 * @property {number} pre_defined_2
 */
/**
 * @param {import("../BoxReader.js").BoxReader<VisualSampleEntry>} reader
 */
export function readVisualSampleEntry(reader: import("../BoxReader.js").BoxReader<VisualSampleEntry>): void;
import { toSignedInt } from "../fields.js";
export { decodeFixedPoint, decodeSignedFixedPoint, toSignedInt };
//# sourceMappingURL=helpers.d.ts.map