/**
 * @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;
    bitrateMode(): string;
    outputGainDb(): 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