import { PitchDetector } from 'pitchy';

interface TunerConfig {
    a4?: number;
    clarityThreshold?: number;
    minVolumeDecibels?: number;
    bufferSize?: number;
    smoothingTimeConstant?: number;
    minFrequency?: number;
    maxFrequency?: number;
    updateInterval?: number;
    sampleRate?: number;
    onNote?: (note: Note) => void;
}
declare const TunerDefaults: TunerConfig;
interface Note {
    name: string;
    value: number;
    cents: number;
    octave: number;
    frequency: number;
    clarity: number;
}
declare function createTuner(config?: TunerConfig): {
    start: () => Promise<void>;
    stop: () => Promise<void>;
    context: AudioContext;
    analyser: AnalyserNode;
    detector: PitchDetector<Float32Array>;
    config: TunerConfig;
    getNote: (frequency: number, clarity?: number) => Note;
};

export { type Note, type TunerConfig, TunerDefaults, createTuner };
