export type SoundEmitterChannels = string;
export namespace SoundEmitterChannels {
    let Effects: string;
    let Music: string;
    let Ambient: string;
}
export class SoundEmitterSystem extends System<any, any, any, any, any> {
    /**
     *
     * @param {AssetManager} assetManager
     * @param {AudioNode} destinationNode
     * @param {AudioContext} context
     * @constructor
     * @property {AssetManager} assetManager
     */
    constructor(assetManager: AssetManager, destinationNode: AudioNode, context: AudioContext);
    dependencies: (typeof Transform | typeof SoundEmitter)[];
    destinationNode: AudioNode;
    /**
     *
     * @type {AudioContext}
     */
    webAudioContext: AudioContext;
    assetManager: AssetManager;
    /**
     *
     * @type {Object<SoundEmitterChannel>}
     */
    channels: any;
    /**
     *
     * @type {SoundEmitterComponentContext[]}
     */
    data: SoundEmitterComponentContext[];
    /**
     *
     * @type {IncrementalDeltaSet<SoundEmitterComponentContext>}
     */
    activeSet: IncrementalDeltaSet<SoundEmitterComponentContext>;
    /**
     * Spatial index
     * @type {BVH}
     * @private
     */
    private __bvh;
    /**
     * Number of currently linked entities
     * @type {number}
     * @private
     */
    private __linkedCount;
    startup(entityManager: any): Promise<void>;
    shutdown(entityManager: any): Promise<void>;
    /**
     *
     * @param {SoundEmitterComponentContext} ctx
     */
    handleContextActivation(ctx: SoundEmitterComponentContext): void;
    /**
     *
     * @param {SoundEmitterComponentContext} ctx
     */
    handleContextDeactivation(ctx: SoundEmitterComponentContext): void;
    /**
     *
     * @param {String} name
     * @returns {number}
     */
    getChannelVolume(name: string): number;
    /**
     *
     * @param {String} name
     * @param {number} value
     */
    setChannelVolume(name: string, value: number): void;
    addChannel(name: any): this;
    /**
     *
     * @param {String} name
     * @returns {boolean}
     */
    hasChannel(name: string): boolean;
    /**
     *
     * @param {SoundEmitter} emitter
     * @param {Transform} transform
     * @param {number} entity
     */
    link(emitter: SoundEmitter, transform: Transform, entity: number): void;
    /**
     *
     * @param {SoundEmitter} emitter
     * @param {Transform} transform
     * @param {number} entity
     */
    unlink(emitter: SoundEmitter, transform: Transform, entity: number): void;
    /**
     *
     * @param {SoundEmitterComponentContext} emitter
     * @returns {boolean}
     */
    emitter_in_hearing_range(emitter: SoundEmitterComponentContext): boolean;
    update(timeDelta: any): void;
    #private;
}
import { System } from '../../../ecs/System.js';
import { Transform } from '../../../ecs/transform/Transform.js';
import { SoundEmitter } from './SoundEmitter.js';
import { SoundEmitterComponentContext } from "./SoundEmitterComponentContext.js";
import { IncrementalDeltaSet } from "../../../graphics/render/visibility/IncrementalDeltaSet.js";
//# sourceMappingURL=SoundEmitterSystem.d.ts.map