//#region src/sound/engine.d.ts export interface SplitFlapMechanicalEvent { /** Scheduled impact time on the same monotonic clock used by `now`. */ at: number; final: boolean; index: number; pan: number; } export interface SplitFlapMechanicalEventSource { subscribeMechanicalEvents(listener: (events: readonly SplitFlapMechanicalEvent[]) => void): () => void; } export interface SplitFlapSoundBank { clicks: readonly string[]; settles: readonly string[]; } export interface SplitFlapSoundTuning { clickLevel: number; pitchVariation: number; settleLevel: number; stereoWidth: number; volume: number; } export declare const defaultSplitFlapSoundTuning: Readonly; export interface SplitFlapSoundEngineOptions { bank: SplitFlapSoundBank; context?: AudioContext; fetch?: typeof fetch; now?: () => number; tuning?: Partial; } export declare class SplitFlapSoundEngine { private options; private activeSources; private bank; private compressor; private destroyed; private fetcher; private master; private now; private ownsSharedContext; private preparePromise; private tuning; private unsubscribe; constructor(options: SplitFlapSoundEngineOptions); /** Starts fetching assets without creating an AudioContext. */ preload(): void; /** Call from a user gesture. Failure is intentionally reported as `false`. */ prepare(): Promise; connect(source: SplitFlapMechanicalEventSource): () => void; setTuning(tuning: Partial): void; schedule(events: readonly SplitFlapMechanicalEvent[]): void; destroy(): void; private createOutput; } //#endregion //# sourceMappingURL=engine.d.ts.map