import { AGCOptions, ExecutionPreference, Logger, ModelCategory, ModelConfig, ModelName, ModelVariant, PerformanceThresholds, SIMDPreference, UsagePreference, VoiceFocusAudioWorkletNode, VoiceFocusConfigureOptions, VoiceFocusDelegate, VoiceFocusFetchBehavior, VoiceFocusFetchConfig, VoiceFocusPaths } from './types.js'; import { Unsupported } from './decider.js'; export interface AssetSpec { assetGroup?: string; revisionID?: string; } export declare type AssetConfig = { assetGroup: string; } | { revisionID: string; }; export interface VoiceFocusSpec extends AssetSpec { category?: ModelCategory; name?: ModelName; variant?: ModelVariant | 'auto'; simd?: SIMDPreference; executionPreference?: ExecutionPreference; usagePreference?: UsagePreference; estimatorBudget?: number; paths?: VoiceFocusPaths; thresholds?: PerformanceThresholds; } interface SupportedVoiceFocusConfig { supported: true; model: ModelConfig; processor: string; fetchConfig: VoiceFocusFetchConfig; } export declare type VoiceFocusConfig = SupportedVoiceFocusConfig | Unsupported; export interface NodeArguments { voiceFocusSampleRate?: number; enabled?: boolean; agc?: AGCOptions; } export interface AudioInputOptions { spec?: VoiceFocusSpec; constraints?: MediaStreamConstraints; delegate?: any; preload?: boolean; options?: NodeArguments; } export declare class VoiceFocus { private processorURL; private nodeConstructor; private nodeOptions; private internal; private constructor(); static isSupported(spec?: AssetSpec & { paths?: VoiceFocusPaths; }, options?: VoiceFocusConfigureOptions): Promise; static configure(spec?: VoiceFocusSpec, options?: VoiceFocusConfigureOptions): Promise; static init(configuration: VoiceFocusConfig, { delegate, preload, logger, }: { delegate: VoiceFocusDelegate; preload: boolean; logger?: Logger; }): Promise; createNode(context: AudioContext, options?: NodeArguments): Promise; applyToStream(stream: MediaStream, context: AudioContext, options?: NodeArguments): Promise<{ node: VoiceFocusAudioWorkletNode; source: MediaStreamAudioSourceNode; destination: MediaStreamAudioDestinationNode; stream: MediaStream; }>; applyToSourceNode(source: MediaStreamAudioSourceNode, context: AudioContext, options?: NodeArguments): Promise; } export declare const createAudioContext: (contextHint?: { latencyHint: number; }) => AudioContext; export declare const getAudioInput: (context: AudioContext, inputOptions: AudioInputOptions, voiceFocusOptions: { logger?: Logger; fetchBehavior?: VoiceFocusFetchBehavior; assetConfig?: AssetConfig; }) => Promise; export {};