import { VGMConverter, ChipInfo } from "./vgm-converter";
import { VGMCommand, VGMWriteDataCommand } from "vgm-parser";
import VGMWriteDataCommandBuffer from "./vgm-write-data-buffer";
import { OPNVoice } from "ym-voice";
type VoiceDefinition = {
    program: number;
    volumeOffset: number;
    octaveOffset: number;
};
export declare abstract class OPNToYM2413Converter extends VGMConverter {
    opts: any;
    _userVoices: {
        [key: number]: number[];
    };
    /** instrument data to voice and volue offset (attenuation) */
    _voiceDefMap: {
        [key: string]: VoiceDefinition;
    };
    _voiceInfoMap: {
        [key: string]: {
            opnVoice: OPNVoice;
            channels: Set<number>;
        };
    };
    _autoMap: boolean;
    _currentVoice: (VoiceDefinition & {
        hash: string;
    })[];
    _div: number;
    _regs: Uint8Array[];
    _buf: VGMWriteDataCommandBuffer;
    _keyFlags: number[];
    _blkFnums: number[];
    _rkeyFlags: number[];
    _rVolumes: {
        hh: number;
        cym: number;
        tom: number;
        sd: number;
        bd: number;
    };
    constructor(from: ChipInfo, to: ChipInfo, opts: any);
    _estimateOPLLVoice(opn: OPNVoice): VoiceDefinition;
    _y(addr: number, data: number, optimize?: boolean): void;
    _identifyVoice(ch: number): void;
    _updateInstVol(port: number, nch: number): void;
    updateRhythmVolume(r: number, vv: number): void;
    convertFM(cmd: VGMWriteDataCommand): VGMCommand[];
    getInitialCommands(): Array<VGMCommand>;
    convertCommand(cmd: VGMCommand): Array<VGMCommand>;
}
export {};
