import type { AudioChunkInput, AudioAnalysisResult, AudioAnalysisSettings, AudioClassificationEntry } from '../types/io.js';
/**
 * Audio analyzer capability interface.
 *
 * Responsible for audio level metering (dBFS/RMS) on every chunk and
 * audio classification (in-process, no tRPC roundtrip). This is the
 * "always-on" audio service when audioEnabled is true.
 */
export interface IAudioAnalyzer {
    /**
     * Process a single audio chunk: compute levels + optionally classify.
     * Returns null if the analyzer is not initialized.
     */
    analyseChunk(input: {
        chunk: AudioChunkInput;
        settings: AudioAnalysisSettings;
    }): Promise<AudioAnalysisResult | null>;
    /**
     * Resolve the effective per-device audio-analysis settings for the given
     * camera. Each addon owns its own settings schema (`getConfigSchema()`) and
     * is the only component allowed to read values out of its store — callers
     * like the orchestrator call this method and get a typed DTO with no
     * knowledge of the audio-analyzer's schema field names. Implementations
     * MUST use the 3-level resolver (schema defaults → global → device override).
     *
     * Returns `null` when the addon is not initialized yet.
     */
    resolveDeviceSettings(input: {
        deviceId: number;
    }): Promise<AudioAnalysisSettings | null>;
    /** Check if the audio analyzer is initialized and ready */
    isReady(): boolean;
    /** Dispose resources (called on shutdown) */
    dispose(): Promise<void>;
}
/** Result of audio classification on a single chunk */
export interface AudioClassificationResult {
    /** Macro-aggregated labels (25-class taxonomy from `AUDIO_MACRO_LABELS`). */
    readonly labels: readonly AudioClassificationEntry[];
    /**
     * Raw backend-native labels (e.g. YAMNet's 521 classes or Apple
     * SoundAnalysis's 303 classes), unaggregated. Always populated by the
     * analyzer provider so callers can choose between the macro-mapped
     * and the raw view (the benchmark UI uses this in `micro` mode).
     */
    readonly rawLabels?: readonly AudioClassificationEntry[];
    readonly inferenceMs: number;
}
//# sourceMappingURL=audio-analyzer.d.ts.map