/** @packageDocumentation ID3v2 event timing codes frame (ETCO). Stores timestamped event markers within the audio stream. */ import { ByteVector } from "../../../byteVector.js"; import { Id3v2Frame, Id3v2FrameHeader } from "../id3v2Frame.js"; /** Synched event types for the ETCO frame. */ export declare enum EventType { Padding = 0, EndOfInitialSilence = 1, IntroStart = 2, MainPartStart = 3, OutroStart = 4, OutroEnd = 5, VerseStart = 6, RefrainStart = 7, InterludeStart = 8, ThemeStart = 9, VariationStart = 10, KeyChange = 11, TimeChange = 12, MomentaryUnwantedNoise = 13, SustainedNoise = 14, SustainedNoiseEnd = 15, IntroEnd = 16, MainPartEnd = 17, VerseEnd = 18, RefrainEnd = 19, ThemeEnd = 20, Profanity = 21, ProfanityEnd = 22, NotPredefinedSynch0 = 224, NotPredefinedSynch1 = 225, NotPredefinedSynch2 = 226, NotPredefinedSynch3 = 227, NotPredefinedSynch4 = 228, NotPredefinedSynch5 = 229, NotPredefinedSynch6 = 230, NotPredefinedSynch7 = 231, NotPredefinedSynch8 = 232, NotPredefinedSynch9 = 233, NotPredefinedSynchA = 234, NotPredefinedSynchB = 235, NotPredefinedSynchC = 236, NotPredefinedSynchD = 237, NotPredefinedSynchE = 238, NotPredefinedSynchF = 239, AudioEnd = 253, AudioFileEnds = 254 } /** A single timed event entry in an ETCO frame. */ export interface SynchedEvent { /** Timestamp of the event, in units defined by the frame's timestamp format. */ time: number; /** The type of event occurring at this timestamp. */ type: EventType; } /** * Event timing codes frame (ETCO). * * Structure: timestampFormat(1) + repeated (eventType(1) + timestamp(4 big-endian)). */ export declare class EventTimingCodesFrame extends Id3v2Frame { /** Timestamp format byte: 1 = MPEG frames, 2 = milliseconds. */ private _timestampFormat; /** Ordered list of synched events stored in this frame. */ private _synchedEvents; /** Creates a new, empty ETCO frame with the timestamp format defaulting to milliseconds. */ constructor(); /** 1 = MPEG frames, 2 = milliseconds. */ get timestampFormat(): number; /** Sets the timestamp format. Use 1 for MPEG frames or 2 for milliseconds. */ set timestampFormat(v: number); /** Gets the ordered list of synched events stored in this frame. */ get synchedEvents(): SynchedEvent[]; /** Sets the list of timed events for this frame. */ set synchedEvents(events: SynchedEvent[]); /** * Returns a human-readable summary of the frame. * @returns A string reporting the number of events stored in this frame. */ toString(): string; /** @internal Create from raw frame data. */ static fromData(data: ByteVector, header: Id3v2FrameHeader, version: number): EventTimingCodesFrame; /** * Parses the binary payload of the ETCO frame. * @param data - Raw field bytes beginning with the timestamp format byte. * @param _version - ID3v2 version (unused; parsing is version-independent). */ protected parseFields(data: ByteVector, _version: number): void; /** * Serialises the frame fields into a binary payload. * @param _version - ID3v2 version (unused; rendering is version-independent). * @returns A `ByteVector` containing the timestamp format byte followed by each event's type and 4-byte big-endian timestamp. */ protected renderFields(_version: number): ByteVector; } //# sourceMappingURL=eventTimingCodesFrame.d.ts.map