/** * handlers/mp3.ts — MP3/ID3v2 handler * * MP3 files typically begin with an ID3v2 tag. * We embed the signature as a TXXX (user-defined text) frame with * description "MAJIK-SIGNATURE" and value = signature JSON. * * If no ID3v2 header exists, we create one. * * ID3v2.3 frame layout: * [4B frame_id][4B size (not syncsafe in v2.3)][2B flags][encoding(0x03=UTF-8)][description\0][value] * * ID3v2 header: * "ID3" [1B major_ver=3][1B revision=0][1B flags=0][4B syncsafe_size] */ import { FormatHandler } from "../../types"; export declare class Mp3Handler implements FormatHandler { readonly name = "MP3"; readonly supportedMimeTypes: readonly ["audio/mpeg", "audio/mp3"]; canHandle(bytes: Uint8Array, mimeType?: string): boolean; embed(bytes: Uint8Array, signatureJson: string): Promise; extract(bytes: Uint8Array): Promise; strip(bytes: Uint8Array): Promise; private _readSyncsafeInt; private _writeSyncsafeInt; private _parseID3v2Frames; private _buildTXXXFrame; private _readTXXXFrame; private _buildID3v2Header; private _buildID3v2HeaderFromFrames; private _injectFrame; }