import type { IAudioGraphPlugin } from "./types"; /** * Управляет привязкой отдельного HTMLMediaElement к AudioContext. * * createMediaElementSource(element) необратим — после вызова аудио * элемента навсегда направляется через Web Audio. Этот класс отслеживает * это состояние: первый bind() создаёт узел-источник; unbind() лишь * отключает его; последующий bind() переподключает без создания нового * узла-источника. * * Каждое подключение имеет собственную AudioPluginChain, что позволяет * применять эффекты индивидуально для каждого источника. Выход цепочки * подаётся на общий destination (обычно master gain node). */ export declare class AudioSourceConnection { private readonly _pluginChain; private readonly _element; private readonly _ctx; private _sourceNode; private _isBound; constructor(element: HTMLMediaElement, ctx: AudioContext, destination: AudioNode); get isBound(): boolean; get plugins(): readonly IAudioGraphPlugin[]; /** Привязывает элемент к аудиографу. Создаёт MediaElementSource при первом вызове. */ bind(): void; /** * Отвязывает элемент от аудиографа: источник подключается напрямую к ctx.destination, * минуя все плагины (включая мастер-громкость). Это намеренное поведение — unbind * полностью отключает элемент от любой обработки. */ unbind(): void; addPlugin(plugin: IAudioGraphPlugin): void; removePlugin(id: string): void; /** Снимает сигнал с выхода источника параллельно (для визуализации). */ addAnalyser(analyser: AnalyserNode): void; }