/** @packageDocumentation ID3v2 table of contents frame (CTOC). Defines hierarchical chapter structure with ordered child entries. */ import { ByteVector } from "../../../byteVector.js"; import { Id3v2Frame, Id3v2FrameHeader } from "../id3v2Frame.js"; /** * Table of contents frame (CTOC). * * Structure: elementId(null-terminated Latin1) + flags(1) + entryCount(1) * + childElementIds(null-terminated Latin1, repeated entryCount times) * + embedded sub-frames. */ export declare class TableOfContentsFrame extends Id3v2Frame { /** Unique element identifier for this CTOC entry, stored as Latin1 bytes. */ private _elementId; /** Whether this is the root (top-level) table-of-contents entry in the tag. */ private _isTopLevel; /** Whether the child entries are ordered (must be played in sequence). */ private _isOrdered; /** Ordered list of child element IDs referenced by this CTOC entry. */ private _childElements; /** Sub-frames embedded within this CTOC frame. */ private _embeddedFrames; /** * Creates a new CTOC frame with the given element identifier. * @param elementId - The unique Latin1 element identifier for this table-of-contents entry. */ constructor(elementId: ByteVector); /** * Gets the element identifier for this CTOC entry. * @returns A {@link ByteVector} containing the Latin1-encoded element ID. */ get elementId(): ByteVector; /** * Sets the element identifier for this CTOC entry. * @param id - The new Latin1-encoded element ID. */ set elementId(id: ByteVector); /** * Gets whether this is the top-level (root) table-of-contents entry. * @returns `true` if this is the root CTOC entry. */ get isTopLevel(): boolean; /** * Sets whether this is the top-level table-of-contents entry. * @param v - `true` to mark this as the root CTOC entry. */ set isTopLevel(v: boolean); /** * Gets whether the child entries must be played in order. * @returns `true` if playback order is enforced. */ get isOrdered(): boolean; /** * Sets whether the child entries must be played in order. * @param v - `true` to enforce sequential playback of child entries. */ set isOrdered(v: boolean); /** * Gets the list of child element IDs referenced by this CTOC entry. * @returns An array of {@link ByteVector} element IDs. */ get childElements(): ByteVector[]; /** * Replaces the list of child element IDs. * @param v - The new array of child element IDs. */ set childElements(v: ByteVector[]); /** * Gets the list of frames embedded within this CTOC frame. * @returns An array of {@link Id3v2Frame} sub-frames. */ get embeddedFrameList(): Id3v2Frame[]; /** * Appends a child element ID to this CTOC entry. * @param id - The Latin1-encoded element ID to add. */ addChildElement(id: ByteVector): void; /** * Removes the first child element ID equal to the given value. * @param id - The element ID to remove. */ removeChildElement(id: ByteVector): void; /** * Appends a sub-frame to the embedded frame list. * @param frame - The {@link Id3v2Frame} to embed in this CTOC frame. */ addEmbeddedFrame(frame: Id3v2Frame): void; /** * Removes a sub-frame from the embedded frame list. * @param frame - The {@link Id3v2Frame} instance to remove. */ removeEmbeddedFrame(frame: Id3v2Frame): void; /** * Returns the element ID as a Latin1 string. * @returns The element identifier decoded as a Latin1 string. */ toString(): string; /** @internal Create from raw frame data. */ static fromData(data: ByteVector, header: Id3v2FrameHeader, version: number, frameParser?: (data: ByteVector, version: number) => Id3v2Frame | undefined): TableOfContentsFrame; /** * Parses the raw frame fields into structured CTOC data. * @param data - The raw field bytes of the frame. * @param version - The ID3v2 version used for parsing embedded sub-frames. */ protected parseFields(data: ByteVector, version: number): void; /** * Serializes the CTOC frame fields into bytes. * @param version - The ID3v2 version used for rendering embedded sub-frames. * @returns A {@link ByteVector} containing the encoded frame fields. */ protected renderFields(version: number): ByteVector; /** * Parses the raw CTOC field data into this frame's properties. * @param data - The raw bytes of the CTOC frame payload. * @param version - The ID3v2 version used for parsing embedded sub-frames. * @param frameParser - Optional callback to parse individual embedded sub-frames. */ private _parseTocFields; } //# sourceMappingURL=tableOfContentsFrame.d.ts.map