import CPU from "../CPU";
import * as util from "../util";
import GameBoy from "../GameBoy";
import AudioDevice from "./AudioDevice";
import SquareAudioChannel from "./SquareAudioChannel";
export default class AudioController {
    cartridgeLeftChannelInputVolume: number;
    cartridgeRightChannelInputVolume: number;
    mixerOutputCache: number;
    sequencerClocks: number;
    sequencePosition: number;
    audioClocksUntilNextEvent: number;
    audioClocksUntilNextEventCounter: number;
    resamplerFirstPassFactor: number;
    leftChannel3: boolean;
    rightChannel3: boolean;
    channel3Enabled: boolean;
    channel3CanPlay: boolean;
    cachedChannel3Sample: number;
    channel3CurrentSampleLeft: number;
    channel3CurrentSampleRight: number;
    channel3CurrentSampleLeftSecondary: number;
    channel3CurrentSampleRightSecondary: number;
    channel3envelopeVolume: number;
    channel3TotalLength: number;
    channel3PatternType: number;
    channel3frequency: number;
    channel3Consecutive: boolean;
    channel3Counter: number;
    channel3FrequencyPeriod: number;
    channel3LastSampleLookup: number;
    channel3PcmData: Int8Array;
    leftChannel4: boolean;
    rightChannel4: boolean;
    channel4Enabled: boolean;
    channel4CanPlay: boolean;
    cachedChannel4Sample: number;
    channel4Counter: number;
    channel4CurrentSampleLeft: number;
    channel4CurrentSampleRight: number;
    channel4CurrentSampleLeftSecondary: number;
    channel4CurrentSampleRightSecondary: number;
    channel4FrequencyPeriod: number;
    channel4TotalLength: number;
    channel4EnvelopeVolume: number;
    channel4CurrentVolume: number;
    channel4EnvelopeType: boolean;
    channel4EnvelopeSweeps: number;
    channel4EnvelopeSweepsLast: number;
    channel4Consecutive: boolean;
    channel4BitRange: number;
    channel4VolumeShifter: number;
    channel4LastSampleLookup: number;
    downSampleInputDivider: number;
    device: AudioDevice;
    memory: util.TypedArray;
    gameboy: GameBoy;
    cpu: CPU;
    LSFR15Table: Int8Array;
    LSFR7Table: Int8Array;
    noiseSampleTable: Int8Array;
    bufferLength: number;
    audioTicks: number;
    audioIndex: number;
    bufferContainAmount: number;
    bufferPosition: number;
    downsampleInput: number;
    buffer: Float32Array;
    enabled: boolean;
    channel1: SquareAudioChannel;
    channel2: SquareAudioChannel;
    constructor({ cpu, gameboy }: {
        cpu: CPU;
        gameboy: GameBoy;
    });
    setMemory(memory: util.TypedArray): void;
    initMemory(): void;
    init(): void;
    setInitialState(): void;
    setSkippedBootRomState(): void;
    generate(sampleCount: number): void;
    enable(): void;
    disable(): void;
    run(): void;
    clockAudioEnvelope(): void;
    performChannel1AudioSweepDummy(): void;
    audioComputeSequencer(): void;
    clockAudioLength(): void;
    clockAudioSweep(): void;
    computeChannels(): void;
    cacheChannel3Update(): void;
    checkChannel3Enable(): void;
    cacheChannel3OutputLevel(): void;
    channel3OutputLevelSecondaryCache(): void;
    checkChannel4Enable(): void;
    cacheChannel4Update(): void;
    cacheChannel4OutputLevel(): void;
    checkChannel4VolumeEnable(): void;
    cacheChannel4OutputLevelSecondary(): void;
    cacheMixerOutputLevel(): void;
    connectDevice(device: AudioDevice): void;
    setVolume(volume: number): void;
    adjustUnderrun(): void;
    recalculateIterationClockLimitForAudio(audioClocking: any): void;
    outputAudio(): void;
    fillBuffer(): void;
    generateWhiteNoise(): void;
    generateLSFR7Table(): Int8Array;
    generateLSFR15Table(): Int8Array;
    registerMemoryWriters(): void;
    registerWaveformMemoryWriters(): void;
    writeWaveformRam(address: number, data: number): void;
    channelVolumeControlWriter: (address: number, data: number) => void;
}
