/** @packageDocumentation ID3v2 chapter frame (CHAP). Marks a chapter within the audio stream. */ import { ByteVector } from "../../../byteVector.js"; import { Id3v2Frame, Id3v2FrameHeader } from "../id3v2Frame.js"; /** * Chapter frame (CHAP). * * Structure: elementId(null-terminated Latin1) * + startTime(4, big-endian ms) + endTime(4) + startOffset(4) + endOffset(4) * + embedded sub-frames. */ export declare class ChapterFrame extends Id3v2Frame { /** Unique chapter identifier as a null-terminated Latin1 byte sequence. */ private _elementId; /** Chapter start time in milliseconds from the beginning of the audio. */ private _startTime; /** Chapter end time in milliseconds from the beginning of the audio. */ private _endTime; /** Chapter start byte offset, or 0xFFFFFFFF if unused. */ private _startOffset; /** Chapter end byte offset, or 0xFFFFFFFF if unused. */ private _endOffset; /** Embedded ID3v2 sub-frames associated with this chapter (e.g. TIT2). */ private _embeddedFrames; /** * Creates a new ChapterFrame. * @param elementId - Unique chapter identifier as a `ByteVector`. * @param startTime - Chapter start time in milliseconds. Defaults to `0`. * @param endTime - Chapter end time in milliseconds. Defaults to `0`. * @param startOffset - Chapter start byte offset. Defaults to `0xFFFFFFFF` (unused). * @param endOffset - Chapter end byte offset. Defaults to `0xFFFFFFFF` (unused). */ constructor(elementId: ByteVector, startTime?: number, endTime?: number, startOffset?: number, endOffset?: number); /** Gets the unique chapter identifier as a `ByteVector`. */ get elementId(): ByteVector; /** Gets the chapter start time in milliseconds. */ get startTime(): number; /** Sets the chapter start time in milliseconds. */ set startTime(v: number); /** Gets the chapter end time in milliseconds. */ get endTime(): number; /** Sets the chapter end time in milliseconds. */ set endTime(v: number); /** Gets the chapter start byte offset, or 0xFFFFFFFF if unused. */ get startOffset(): number; /** Sets the chapter start byte offset. */ set startOffset(v: number); /** Gets the chapter end byte offset, or 0xFFFFFFFF if unused. */ get endOffset(): number; /** Sets the chapter end byte offset. */ set endOffset(v: number); /** Gets the list of embedded ID3v2 sub-frames attached to this chapter. */ get embeddedFrameList(): Id3v2Frame[]; /** * Appends a sub-frame to the list of embedded frames for this chapter. * @param frame - The `Id3v2Frame` to append. */ addEmbeddedFrame(frame: Id3v2Frame): void; /** * Removes the first occurrence of the given sub-frame from the embedded frame list. * @param frame - The `Id3v2Frame` to remove. */ removeEmbeddedFrame(frame: Id3v2Frame): void; /** * Returns the element ID as a Latin1 string. * @returns The element ID string. */ toString(): string; /** @internal Create from raw frame data. */ static fromData(data: ByteVector, header: Id3v2FrameHeader, version: number, frameParser?: (data: ByteVector, version: number) => Id3v2Frame | undefined): ChapterFrame; /** * Parses the raw CHAP frame field data, populating all chapter properties. * @param data - Decoded frame field bytes. * @param version - ID3v2 version number. */ protected parseFields(data: ByteVector, version: number): void; /** * Renders the CHAP frame field data to bytes. * @param version - ID3v2 version number used to render embedded sub-frames. * @returns A `ByteVector` containing the encoded CHAP field data. */ protected renderFields(version: number): ByteVector; /** * Internal implementation that parses chapter fields from decoded frame bytes, * optionally using a caller-supplied parser for embedded sub-frames. * @param data - Decoded field bytes to parse. * @param version - ID3v2 version number. * @param frameParser - Optional function that converts raw sub-frame bytes into * an `Id3v2Frame` instance. When omitted, embedded frames * are not parsed. */ private _parseChapterFields; } //# sourceMappingURL=chapterFrame.d.ts.map