taglib-wasm
Version:
TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps
807 lines • 29.6 kB
TypeScript
/**
* Comprehensive property definitions with metadata for all supported audio metadata fields.
* This is the single source of truth for all property information including descriptions,
* types, format support, and format-specific mappings.
*
* Keys are camelCase (e.g. "title", "musicbrainzTrackId"). Each entry's `.key` field
* contains the TagLib ALL_CAPS wire name (e.g. "TITLE", "MUSICBRAINZ_TRACKID").
*
* Use `toTagLibKey()` / `fromTagLibKey()` to translate between the two vocabularies.
*/
export declare const PROPERTIES: {
readonly albumArtistSort: {
readonly key: "ALBUMARTISTSORT";
readonly description: "Sort name for album artist (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSO2";
};
readonly vorbis: "ALBUMARTISTSORT";
readonly mp4: "soaa";
};
};
readonly composerSort: {
readonly key: "COMPOSERSORT";
readonly description: "Sort name for composer (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOC";
};
readonly vorbis: "COMPOSERSORT";
readonly mp4: "soco";
};
};
readonly subtitle: {
readonly key: "SUBTITLE";
readonly description: "Subtitle or description refinement";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TIT3";
};
readonly vorbis: "SUBTITLE";
readonly mp4: "----:com.apple.iTunes:SUBTITLE";
};
};
readonly label: {
readonly key: "LABEL";
readonly description: "Record label name";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPUB";
};
readonly vorbis: "LABEL";
readonly mp4: "----:com.apple.iTunes:LABEL";
readonly wav: "IPUB";
};
};
readonly producer: {
readonly key: "PRODUCER";
readonly description: "Producer of the recording";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "PRODUCER";
};
readonly vorbis: "PRODUCER";
readonly mp4: "----:com.apple.iTunes:PRODUCER";
};
};
readonly radioStationOwner: {
readonly key: "RADIOSTATIONOWNER";
readonly description: "Owner of the radio station";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TRSO";
};
};
};
readonly asin: {
readonly key: "ASIN";
readonly description: "Amazon Standard Identification Number";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ASIN";
};
readonly vorbis: "ASIN";
readonly mp4: "----:com.apple.iTunes:ASIN";
};
};
readonly musicbrainzReleaseArtistId: {
readonly key: "MUSICBRAINZ_ALBUMARTISTID";
readonly description: "MusicBrainz Release Artist ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Album Artist Id";
};
readonly vorbis: "MUSICBRAINZ_ALBUMARTISTID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Album Artist Id";
};
};
readonly musicbrainzWorkId: {
readonly key: "MUSICBRAINZ_WORKID";
readonly description: "MusicBrainz Work ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Work Id";
};
readonly vorbis: "MUSICBRAINZ_WORKID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Work Id";
};
};
readonly musicbrainzReleaseTrackId: {
readonly key: "MUSICBRAINZ_RELEASETRACKID";
readonly description: "MusicBrainz Release Track ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Release Track Id";
};
readonly vorbis: "MUSICBRAINZ_RELEASETRACKID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Release Track Id";
};
};
readonly podcastId: {
readonly key: "PODCASTID";
readonly description: "Podcast episode identifier";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TGID";
};
readonly vorbis: "PODCASTID";
readonly mp4: "egid";
};
};
readonly podcastUrl: {
readonly key: "PODCASTURL";
readonly description: "Podcast feed URL";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "WFED";
};
readonly vorbis: "PODCASTURL";
readonly mp4: "purl";
};
};
readonly originalArtist: {
readonly key: "ORIGINALARTIST";
readonly description: "Original artist of a cover or remix";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TOPE";
};
readonly vorbis: "ORIGINALARTIST";
};
};
readonly originalAlbum: {
readonly key: "ORIGINALALBUM";
readonly description: "Original album of a cover or remix";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TOAL";
};
readonly vorbis: "ORIGINALALBUM";
};
};
readonly originalDate: {
readonly key: "ORIGINALDATE";
readonly description: "Original release date";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TDOR";
};
readonly vorbis: "ORIGINALDATE";
readonly mp4: "----:com.apple.iTunes:ORIGINALDATE";
};
};
readonly script: {
readonly key: "SCRIPT";
readonly description: "Writing script used for text (e.g., Latn, Jpan)";
readonly type: "string";
readonly supportedFormats: readonly ["MP4", "Vorbis"];
readonly mappings: {
readonly vorbis: "SCRIPT";
readonly mp4: "----:com.apple.iTunes:SCRIPT";
};
};
readonly involvedPeople: {
readonly key: "INVOLVEDPEOPLE";
readonly description: "List of involved people and their roles";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TIPL";
};
};
};
readonly encoding: {
readonly key: "ENCODING";
readonly description: "Encoding software or settings";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSSE";
};
readonly vorbis: "ENCODING";
readonly mp4: "©too";
readonly wav: "ISFT";
};
};
readonly musicbrainzArtistId: {
readonly key: "MUSICBRAINZ_ARTISTID";
readonly description: "MusicBrainz Artist ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Artist Id";
};
readonly vorbis: "MUSICBRAINZ_ARTISTID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Artist Id";
};
};
readonly musicbrainzReleaseId: {
readonly key: "MUSICBRAINZ_ALBUMID";
readonly description: "MusicBrainz Release ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Album Id";
};
readonly vorbis: "MUSICBRAINZ_ALBUMID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Album Id";
};
};
readonly musicbrainzTrackId: {
readonly key: "MUSICBRAINZ_TRACKID";
readonly description: "MusicBrainz Recording ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "UFID";
readonly description: "http://musicbrainz.org";
};
readonly vorbis: "MUSICBRAINZ_TRACKID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Track Id";
};
};
readonly musicbrainzReleaseGroupId: {
readonly key: "MUSICBRAINZ_RELEASEGROUPID";
readonly description: "MusicBrainz Release Group ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Release Group Id";
};
readonly vorbis: "MUSICBRAINZ_RELEASEGROUPID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Release Group Id";
};
};
readonly replayGainTrackGain: {
readonly key: "REPLAYGAIN_TRACK_GAIN";
readonly description: "ReplayGain track gain in dB (e.g., '-6.54 dB')";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Track_Gain";
};
readonly vorbis: "REPLAYGAIN_TRACK_GAIN";
readonly mp4: "----:com.apple.iTunes:replaygain_track_gain";
};
};
readonly replayGainTrackPeak: {
readonly key: "REPLAYGAIN_TRACK_PEAK";
readonly description: "ReplayGain track peak value (0.0-1.0)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Track_Peak";
};
readonly vorbis: "REPLAYGAIN_TRACK_PEAK";
readonly mp4: "----:com.apple.iTunes:replaygain_track_peak";
};
};
readonly replayGainAlbumGain: {
readonly key: "REPLAYGAIN_ALBUM_GAIN";
readonly description: "ReplayGain album gain in dB";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Album_Gain";
};
readonly vorbis: "REPLAYGAIN_ALBUM_GAIN";
readonly mp4: "----:com.apple.iTunes:replaygain_album_gain";
};
};
readonly replayGainAlbumPeak: {
readonly key: "REPLAYGAIN_ALBUM_PEAK";
readonly description: "ReplayGain album peak value (0.0-1.0)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Album_Peak";
};
readonly vorbis: "REPLAYGAIN_ALBUM_PEAK";
readonly mp4: "----:com.apple.iTunes:replaygain_album_peak";
};
};
readonly acoustidFingerprint: {
readonly key: "ACOUSTID_FINGERPRINT";
readonly description: "AcoustID fingerprint (Chromaprint)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "Acoustid Fingerprint";
};
readonly vorbis: "ACOUSTID_FINGERPRINT";
readonly mp4: "----:com.apple.iTunes:Acoustid Fingerprint";
};
};
readonly acoustidId: {
readonly key: "ACOUSTID_ID";
readonly description: "AcoustID UUID";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "Acoustid Id";
};
readonly vorbis: "ACOUSTID_ID";
readonly mp4: "----:com.apple.iTunes:Acoustid Id";
};
};
readonly appleSoundCheck: {
readonly key: "ITUNNORM";
readonly description: "Apple Sound Check normalization data";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "iTunNORM";
};
readonly vorbis: "ITUNNORM";
readonly mp4: "----:com.apple.iTunes:iTunNORM";
};
};
readonly appleGaplessInfo: {
readonly key: "ITUNSMPB";
readonly description: "Apple gapless playback data (encoder delay and padding)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "iTunSMPB";
};
readonly vorbis: "ITUNSMPB";
readonly mp4: "----:com.apple.iTunes:iTunSMPB";
};
};
readonly albumArtist: {
readonly key: "ALBUMARTIST";
readonly description: "The album artist (band/orchestra/ensemble)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE2";
};
readonly vorbis: "ALBUMARTIST";
readonly mp4: "aART";
};
};
readonly composer: {
readonly key: "COMPOSER";
readonly description: "The original composer(s) of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCOM";
};
readonly vorbis: "COMPOSER";
readonly mp4: "©wrt";
};
};
readonly copyright: {
readonly key: "COPYRIGHT";
readonly description: "Copyright information";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly vorbis: "COPYRIGHT";
};
};
readonly encodedBy: {
readonly key: "ENCODEDBY";
readonly description: "The encoding software or person";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly vorbis: "ENCODEDBY";
};
};
readonly discNumber: {
readonly key: "DISCNUMBER";
readonly description: "The disc number for multi-disc sets";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPOS";
};
readonly vorbis: "DISCNUMBER";
readonly mp4: "disk";
};
};
readonly bpm: {
readonly key: "BPM";
readonly description: "Beats per minute";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TBPM";
};
readonly vorbis: "BPM";
readonly mp4: "tmpo";
};
};
readonly totalTracks: {
readonly key: "TRACKTOTAL";
readonly description: "Total number of tracks on the album";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TRCK";
};
readonly vorbis: "TRACKTOTAL";
readonly mp4: "trkn";
};
};
readonly totalDiscs: {
readonly key: "DISCTOTAL";
readonly description: "Total number of discs in the set";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPOS";
};
readonly vorbis: "DISCTOTAL";
readonly mp4: "disk";
};
};
readonly compilation: {
readonly key: "COMPILATION";
readonly description: "Whether the album is a compilation (various artists)";
readonly type: "boolean";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCMP";
};
readonly vorbis: "COMPILATION";
readonly mp4: "cpil";
};
};
readonly titleSort: {
readonly key: "TITLESORT";
readonly description: "Sort name for title (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOT";
};
readonly vorbis: "TITLESORT";
readonly mp4: "sonm";
};
};
readonly artistSort: {
readonly key: "ARTISTSORT";
readonly description: "Sort name for artist (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOP";
};
readonly vorbis: "ARTISTSORT";
readonly mp4: "soar";
};
};
readonly albumSort: {
readonly key: "ALBUMSORT";
readonly description: "Sort name for album (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOA";
};
readonly vorbis: "ALBUMSORT";
readonly mp4: "soal";
};
};
readonly lyricist: {
readonly key: "LYRICIST";
readonly description: "The lyrics/text writer(s)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LYRICIST";
};
};
readonly conductor: {
readonly key: "CONDUCTOR";
readonly description: "The conductor";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "CONDUCTOR";
};
};
readonly remixedBy: {
readonly key: "REMIXER";
readonly description: "Person who remixed the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE4";
};
readonly vorbis: "REMIXER";
readonly mp4: "----:com.apple.iTunes:REMIXER";
};
};
readonly language: {
readonly key: "LANGUAGE";
readonly description: "Language of vocals/lyrics";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LANGUAGE";
};
};
readonly publisher: {
readonly key: "PUBLISHER";
readonly description: "The publisher";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "PUBLISHER";
};
};
readonly mood: {
readonly key: "MOOD";
readonly description: "The mood/atmosphere of the track";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "MOOD";
};
};
readonly media: {
readonly key: "MEDIA";
readonly description: "Media type (CD, vinyl, etc.)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "MEDIA";
};
};
readonly grouping: {
readonly key: "GROUPING";
readonly description: "Content group/work";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "GROUPING";
};
};
readonly work: {
readonly key: "WORK";
readonly description: "Work name";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "WORK";
};
};
readonly lyrics: {
readonly key: "LYRICS";
readonly description: "Lyrics content";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LYRICS";
};
};
readonly isrc: {
readonly key: "ISRC";
readonly description: "International Standard Recording Code";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "ISRC";
};
};
readonly catalogNumber: {
readonly key: "CATALOGNUMBER";
readonly description: "Catalog number";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "CATALOGNUMBER";
};
};
readonly barcode: {
readonly key: "BARCODE";
readonly description: "Barcode (EAN/UPC)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "BARCODE";
};
};
readonly title: {
readonly key: "TITLE";
readonly description: "The title of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TIT2";
};
readonly vorbis: "TITLE";
readonly mp4: "©nam";
readonly wav: "INAM";
};
};
readonly artist: {
readonly key: "ARTIST";
readonly description: "The primary performer(s) of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE1";
};
readonly vorbis: "ARTIST";
readonly mp4: "©ART";
readonly wav: "IART";
};
};
readonly album: {
readonly key: "ALBUM";
readonly description: "The album/collection name";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TALB";
};
readonly vorbis: "ALBUM";
readonly mp4: "©alb";
readonly wav: "IPRD";
};
};
readonly date: {
readonly key: "DATE";
readonly description: "The date of recording (typically year)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TDRC";
};
readonly vorbis: "DATE";
readonly mp4: "©day";
readonly wav: "ICRD";
};
};
readonly trackNumber: {
readonly key: "TRACKNUMBER";
readonly description: "The track number within the album";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TRCK";
};
readonly vorbis: "TRACKNUMBER";
readonly mp4: "trkn";
readonly wav: "ITRK";
};
};
readonly genre: {
readonly key: "GENRE";
readonly description: "The musical genre";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCON";
};
readonly vorbis: "GENRE";
readonly mp4: "©gen";
readonly wav: "IGNR";
};
};
readonly comment: {
readonly key: "COMMENT";
readonly description: "Comments or notes about the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "COMM";
};
readonly vorbis: "COMMENT";
readonly mp4: "©cmt";
readonly wav: "ICMT";
};
};
};
/**
* Type representing all valid property keys from the PROPERTIES object.
* This provides TypeScript autocomplete and type safety.
*/
export type PropertyKey = keyof typeof PROPERTIES;
/**
* Type representing the property value type based on the property definition.
* Currently all properties are strings, but this allows for future expansion.
*/
export type PropertyValue<K extends PropertyKey> = typeof PROPERTIES[K]["type"] extends "string" ? string : typeof PROPERTIES[K]["type"] extends "number" ? number : typeof PROPERTIES[K]["type"] extends "boolean" ? boolean : string;
/** Translate a camelCase property key to TagLib's ALL_CAPS wire key. Unknown keys pass through. */
export declare function toTagLibKey(key: string): string;
/**
* TagLib wire key for a standard MP4 atom name, or `undefined` for a freeform
* atom or one we do not model.
*/
export declare function mp4AtomWireKey(atom: string): string | undefined;
/**
* Exact MP4 atom names for the given TagLib wire keys, for keys backed by a
* mixed-case freeform atom. Empty when none apply, which is the common case.
*/
export declare function mp4FreeformAtomNames(wireKeys: Iterable<string>): string[];
/** Translate a TagLib ALL_CAPS wire key to a camelCase property key. Unknown keys pass through. */
export declare function fromTagLibKey(key: string): string;
/** Remap all keys of an object from TagLib ALL_CAPS to camelCase. */
export declare function remapKeysFromTagLib<V>(obj: Record<string, V>): Record<string, V>;
export type { PropertyMetadata } from "./property-types.js";
//# sourceMappingURL=properties.d.ts.map