export type ChipName = "sn76489" | "gameGearStereo" | "ym2413" | "ym2612" | "ym2151" | "segaPcm" | "rf5c68" | "ym2203" | "ym2608" | "ym2610" | "ym3812" | "ym3526" | "y8950" | "ymf262" | "ymf278b" | "ymf271" | "ymz280b" | "rf5c164" | "pwm" | "ay8910" | "gameBoyDmg" | "nesApu" | "multiPcm" | "upd7759" | "okim6258" | "okim6295" | "k051649" | "k054539" | "huc6280" | "c140" | "k053260" | "pokey" | "qsound" | "scsp" | "wonderSwan" | "vsu" | "saa1099" | "es5503" | "es5506" | "x1_010" | "c352" | "ga20" | "unknown"; export type ChipOrVariantName = ChipName | YM2413VariantName | YM2151VariantName | YM2610VariantName | YM2612VariantName | ES5506VariantName | AY8910VariantName | C140VariantName; export type YM2413VariantName = "ym2413" | "vrc7"; export type YM2151VariantName = "ym2151" | "ym2164"; export type YM2610VariantName = "ym2610" | "ym2610b"; export type YM2612VariantName = "ym2612" | "ym3438"; export type ES5506VariantName = "es5505" | "es5506"; export type AY8910VariantName = "ay8910" | "ay8912" | "ay8913" | "ay8930" | "ym2149" | "ym3439" | "ymz284" | "ymz294" | "unknown"; export type C140VariantName = "c140" | "c140_system_21" | "asic_219" | "unknown"; export declare function chipIdToName(chipId: number): ChipName | undefined; export type ChipTypeObject = { value: number; name: V; }; export type ChipClockObject = { clock: number; dual?: boolean; flags?: number; chipType?: ChipTypeObject; }; export type ChipsObject = { sn76489?: ChipClockObject & { feedback?: number; shiftRegisterWidth?: number; t6w28?: boolean; }; gameGearStereo?: null; ym2413?: ChipClockObject; ym2612?: ChipClockObject; ym2151?: ChipClockObject; segaPcm?: ChipClockObject & { interfaceRegister?: number; }; rf5c68?: ChipClockObject; ym2203?: ChipClockObject & { ssgFlags?: number; }; ym2608?: ChipClockObject & { ssgFlags?: number; }; ym2610?: ChipClockObject; ym3812?: ChipClockObject; ym3526?: ChipClockObject; y8950?: ChipClockObject; ymf262?: ChipClockObject; ymf278b?: ChipClockObject; ymf271?: ChipClockObject; ymz280b?: ChipClockObject; rf5c164?: ChipClockObject; pwm?: ChipClockObject; ay8910?: ChipClockObject; gameBoyDmg?: ChipClockObject; nesApu?: ChipClockObject & { fds?: boolean; }; multiPcm?: ChipClockObject; upd7759?: ChipClockObject; okim6258?: ChipClockObject; okim6295?: ChipClockObject; k051649?: ChipClockObject; k054539?: ChipClockObject; huc6280?: ChipClockObject; c140?: ChipClockObject; k053260?: ChipClockObject; pokey?: ChipClockObject; qsound?: ChipClockObject; scsp?: ChipClockObject; wonderSwan?: ChipClockObject; vsu?: ChipClockObject; saa1099?: ChipClockObject; es5503?: ChipClockObject & { numberOfChannels?: number; }; es5506?: ChipClockObject & { numberOfChannels?: number; }; x1_010?: ChipClockObject; c352?: ChipClockObject & { clockDivider?: number; }; ga20?: ChipClockObject; unknown?: null; }; export declare function deepCloneChipsObject(chips: ChipsObject): any; export type GD3TagObject = { version: number; size: number; trackTitle: string; gameName: string; system: string; composer: string; releaseDate: string; vgmBy: string; notes: string; japanese: { trackTitle: string; gameName: string; system: string; composer: string; }; }; export type ExtraChipClockObject = { chip: ChipName; chipId: number; clock: number; }; export type ExtraChipVolumeObject = { chip: ChipName; chipId: number; paired: boolean; flags: number; volume: number; absolute: boolean; }; export type ExtraHeaderObject = { clocks?: Array; volumes?: Array; }; export declare function deepCloneExtraHeaderObject(arg: ExtraHeaderObject | undefined): ExtraHeaderObject | undefined; export declare function createEmptyGD3TagObject(): GD3TagObject; export declare function deepCloneGD3TagObject(arg: GD3TagObject | undefined): GD3TagObject | undefined; export type VersionObject = { /** raw version code (ex. 0x0170) */ code: number; /** major major version number in string (ex. "1"). */ major: string; /** minor version number in 2 digit string (ex. "70").*/ minor: string; }; export type OffsetsObject = { /** offset to end of file, relative from the top of the vgm file. */ eof: number; /** offset to gd3 tag, relative from the top of the vgm file. 0 if no gd3 tag is present. */ gd3: number; /** offset to loop point, relative from the top of the vgm file. 0 if no loop is present. */ loop: number; /** offset to VGM data stream, relative from the top of the vgm file. */ data: number; /** offset to extra header, relative from the top of the vgm file. 0 if no extra header is present. */ extraHeader: number; }; export type SamplesObject = { /** Total of all wait values in the file. */ total: number; /** Total of all wait values between the loop point and the end of the file, or 0 if there is no loop. */ loop: number; }; export type VGMObject = { version: VersionObject; offsets: OffsetsObject; samples: SamplesObject; rate: number; chips: ChipsObject; loopModifier: number; loopBase: number; volumeModifier: number; extraHeader?: ExtraHeaderObject; data: ArrayBuffer; gd3tag?: GD3TagObject; }; export declare function deepCloneVGMObject(arg: VGMObject): VGMObject; export declare function createEmptyVGMObject(): VGMObject; export declare function calcGD3TagBodySize(obj: GD3TagObject): number; export declare function calcExtraHeaderSize(obj: ExtraHeaderObject): number; export declare function updateOffsets(obj: VGMObject): void;