import { VGMCommand, ChipName, ChipOrVariantName } from "vgm-parser";
export type ChipInfo = {
    chip: ChipName;
    variantName?: ChipOrVariantName | null;
    subModule?: "fm" | "ssg" | "adpcm" | "dac" | string | null;
    index: number;
    clock: number;
    relativeClock?: boolean;
};
export declare abstract class VGMConverter {
    from: ChipInfo;
    to: ChipInfo;
    _sink: VGMConverter | null;
    constructor(from: ChipInfo, to: ChipInfo);
    getInitialCommands(): Array<VGMCommand>;
    getLoopCommands(): Array<VGMCommand>;
    abstract convertCommand(cmd: VGMCommand): Array<VGMCommand>;
    get convertedChipInfo(): ChipInfo;
    pipeTo(target: VGMConverter): void;
    convert(cmd: VGMCommand): Array<VGMCommand>;
}
export declare abstract class VGMClockConverter extends VGMConverter {
    _defaultClock: number;
    constructor(from: ChipInfo, toClock: number, defaultClock: number);
    get defaultClock(): number;
}
