/**
 * @fileoverview WebAssembly module interface types for Emscripten
 */
export interface EmscriptenModule {
    HEAP8: Int8Array;
    HEAP16: Int16Array;
    HEAP32: Int32Array;
    HEAPU8: Uint8Array;
    HEAPU16: Uint16Array;
    HEAPU32: Uint32Array;
    HEAPF32: Float32Array;
    HEAPF64: Float64Array;
    _malloc(size: number): number;
    _free(ptr: number): void;
    allocate?(data: number[] | Uint8Array, allocator: number): number;
    ALLOC_NORMAL?: number;
    ccall?(ident: string, returnType: string, argTypes: string[], args: any[]): any;
    cwrap?(ident: string, returnType: string, argTypes: string[]): (...args: any[]) => any;
    FS?: any;
    then?(callback: (module: EmscriptenModule) => void): void;
    onRuntimeInitialized?: () => void;
}
export interface FileHandle {
    loadFromBuffer(data: Uint8Array): boolean;
    isValid(): boolean;
    save(): boolean;
    getFormat(): string;
    getProperties(): any;
    setProperties(props: any): void;
    getProperty(key: string): string;
    setProperty(key: string, value: string): void;
    isMP4(): boolean;
    getMP4Item(key: string): string;
    setMP4Item(key: string, value: string): void;
    removeMP4Item(key: string): void;
    getTag(): TagWrapper;
    getAudioProperties(): AudioPropertiesWrapper;
    getBuffer(): Uint8Array;
    getPictures(): any[];
    setPictures(pictures: any[]): void;
    addPicture(picture: any): void;
    removePictures(): void;
    destroy(): void;
}
export interface TagWrapper {
    title(): string;
    artist(): string;
    album(): string;
    comment(): string;
    genre(): string;
    year(): number;
    track(): number;
    setTitle(value: string): void;
    setArtist(value: string): void;
    setAlbum(value: string): void;
    setComment(value: string): void;
    setGenre(value: string): void;
    setYear(value: number): void;
    setTrack(value: number): void;
}
export interface AudioPropertiesWrapper {
    lengthInSeconds(): number;
    lengthInMilliseconds(): number;
    bitrate(): number;
    sampleRate(): number;
    channels(): number;
    bitsPerSample(): number;
    codec(): string;
    isLossless(): boolean;
}
export interface TagLibModule extends Omit<EmscriptenModule, "then"> {
    FileHandle: new () => FileHandle;
    TagWrapper: new () => TagWrapper;
    AudioPropertiesWrapper: new () => AudioPropertiesWrapper;
    createFileHandle(): FileHandle;
    _taglib_file_new_from_buffer?(ptr: number, size: number): number;
    _taglib_file_delete?(fileId: number): void;
    _taglib_file_is_valid?(fileId: number): number;
    _taglib_file_format?(fileId: number): number;
    _taglib_file_tag?(fileId: number): number;
    _taglib_file_audioproperties?(fileId: number): number;
    _taglib_file_save?(fileId: number): number;
    _taglib_tag_title?(tagPtr: number): number;
    _taglib_tag_artist?(tagPtr: number): number;
    _taglib_tag_album?(tagPtr: number): number;
    _taglib_tag_comment?(tagPtr: number): number;
    _taglib_tag_genre?(tagPtr: number): number;
    _taglib_tag_year?(tagPtr: number): number;
    _taglib_tag_track?(tagPtr: number): number;
    _taglib_tag_set_title?(tagPtr: number, titlePtr: number): void;
    _taglib_tag_set_artist?(tagPtr: number, artistPtr: number): void;
    _taglib_tag_set_album?(tagPtr: number, albumPtr: number): void;
    _taglib_tag_set_comment?(tagPtr: number, commentPtr: number): void;
    _taglib_tag_set_genre?(tagPtr: number, genrePtr: number): void;
    _taglib_tag_set_year?(tagPtr: number, year: number): void;
    _taglib_tag_set_track?(tagPtr: number, track: number): void;
    _taglib_audioproperties_length?(propsPtr: number): number;
    _taglib_audioproperties_bitrate?(propsPtr: number): number;
    _taglib_audioproperties_samplerate?(propsPtr: number): number;
    _taglib_audioproperties_channels?(propsPtr: number): number;
}
export interface WasmModule extends EmscriptenModule {
    FileHandle?: new () => FileHandle;
    createFileHandle?(): FileHandle;
}
//# sourceMappingURL=wasm.d.ts.map