/** * @fileoverview Adapts Embind-generated FileHandle to the data-oriented interface. * * Embind objects store methods on the prototype, so `{ ...raw }` won't copy them. * A Proxy forwards all property access to the raw Embind object by default, * overriding only getTagData, setTagData, and getAudioProperties. */ import type { FileHandle } from "../wasm.js"; /** @internal Embind-generated TagWrapper — methods on C++ prototype. */ interface EmbindTagWrapper { title(): string; artist(): string; album(): string; comment(): string; genre(): string; year(): number; track(): number; setTitle(v: string): void; setArtist(v: string): void; setAlbum(v: string): void; setComment(v: string): void; setGenre(v: string): void; setYear(v: number): void; setTrack(v: number): void; } /** @internal Embind-generated AudioPropertiesWrapper — methods on C++ prototype. */ interface EmbindAudioPropertiesWrapper { lengthInSeconds(): number; lengthInMilliseconds(): number; bitrate(): number; sampleRate(): number; channels(): number; bitsPerSample(): number; codec(): string; containerFormat(): string; isLossless(): boolean; mpegVersion(): number; mpegLayer(): number; isEncrypted(): boolean; formatVersion(): number; } /** @internal The raw Embind FileHandle before adaptation. */ export interface EmbindFileHandle { getTag(): EmbindTagWrapper; getAudioProperties(): EmbindAudioPropertiesWrapper | null; [key: string]: unknown; } /** @internal Wrap an Embind FileHandle with a Proxy for the data-oriented interface. */ export declare function wrapEmbindHandle(raw: EmbindFileHandle): FileHandle; export {}; //# sourceMappingURL=embind-adapter.d.ts.map