/**
 * @class
 */
export class SoundEmitter {
    /**
     *
     * @param json
     * @returns {SoundEmitter}
     */
    static fromJSON(json: any): SoundEmitter;
    /**
     * @readonly
     * @type {List<SoundTrack>}
     */
    readonly tracks: List<SoundTrack>;
    /**
     *
     * @type {String|SoundEmitterChannels|null}
     */
    channel: string | SoundEmitterChannels | null;
    /**
     *
     * @type {number}
     * @private
     */
    private __distanceMin;
    /**
     *
     * @type {number}
     * @private
     */
    private __distanceMax;
    /**
     * @deprecated
     * @type {number}
     * @private
     */
    private __distanceRolloff;
    /**
     * TODO add to binary serialization
     * @type {SoundPanningModelType}
     */
    panningModel: SoundPanningModelType;
    /**
     * Type of attenuation used for sound fall-off, this is only used if Attenuation flag is set
     * @type {SoundAttenuationFunction|number}
     */
    attenuation: SoundAttenuationFunction | number;
    /**
     *
     * @type {number|SoundEmitterFlags}
     */
    flags: number | SoundEmitterFlags;
    /**
     * @readonly
     */
    readonly nodes: {
        /**
         * @type {GainNode}
         */
        volume: GainNode;
        /**
         * @type {PannerNode}
         */
        panner: PannerNode;
        /**
         * @type {GainNode}
         */
        attenuation: GainNode;
        /**
         * One of the other nodes, depending on the configuration
         * @type {AudioNode}
         */
        endpoint: AudioNode;
    };
    /**
     *
     * @type {Vector1}
     */
    volume: Vector1;
    /**
     * @readonly
     * @type {BvhClient}
     */
    readonly bvh: BvhClient;
    /**
     *
     * @param {SoundEmitter} other
     * @returns number
     */
    compare(other: SoundEmitter): any;
    /**
     *
     * @param {number|SoundEmitterFlags} flag
     * @returns {void}
     */
    setFlag(flag: number | SoundEmitterFlags): void;
    /**
     *
     * @param {number|SoundEmitterFlags} flag
     * @returns {void}
     */
    clearFlag(flag: number | SoundEmitterFlags): void;
    /**
     *
     * @param {number|SoundEmitterFlags} flag
     * @param {boolean} value
     */
    writeFlag(flag: number | SoundEmitterFlags, value: boolean): void;
    /**
     *
     * @param {number|SoundEmitterFlags} flag
     * @returns {boolean}
     */
    getFlag(flag: number | SoundEmitterFlags): boolean;
    /**
     * @deprecated
     * @param {boolean} v
     */
    set isPositioned(v: boolean);
    /**
     * @deprecated
     * @return {boolean}
     */
    get isPositioned(): boolean;
    /**
     * @return {AudioNode}
     */
    getTargetNode(): AudioNode;
    /**
     * @returns {boolean}
     * @param {SoundEmitter} other
     */
    equals(other: SoundEmitter): boolean;
    /**
     *
     * @return {number}
     */
    hash(): number;
    /**
     *
     * @param {AudioContext} ctx
     */
    buildNodes(ctx: AudioContext): void;
    /**
     * @private
     * @param {number} distance
     */
    private writeAttenuationVolume;
    /**
     * @param {number} v
     */
    set distanceMin(v: number);
    /**
     *
     * @returns {number}
     */
    get distanceMin(): number;
    /**
     * @param {number} v
     */
    set distanceMax(v: number);
    /**
     *
     * @returns {number}
     */
    get distanceMax(): number;
    /**
     * @deprecated
     * @param {number} v
     */
    set distanceRolloff(v: number);
    /**
     * @deprecated
     * @returns {number}
     */
    get distanceRolloff(): number;
    /**
     *
     * @param {number} x
     * @param {number} y
     * @param {number} z
     */
    updatePosition(x: number, y: number, z: number): void;
    /**
     *
     * @param {number} [duration] fade duration in seconds
     * @param startAfter
     */
    fadeOutAllTracks(duration?: number, startAfter?: number): void;
    stopAllTracks(): void;
    toJSON(): {
        isPositioned: boolean;
        isAttenuated: boolean;
        channel: any;
        volume: number;
        tracks: any;
        distanceMin: number;
        distanceMax: number;
        attenuation: string;
        panningModel: string;
    };
    fromJSON(json: any): void;
}
export namespace SoundEmitter {
    let typeName: string;
}
import List from '../../../../core/collection/list/List.js';
import { SoundTrack } from "./SoundTrack.js";
import { SoundPanningModelType } from "./SoundPanningModelType.js";
import { SoundAttenuationFunction } from "./SoundAttenuationFunction.js";
import { SoundEmitterFlags } from "./SoundEmitterFlags.js";
import Vector1 from "../../../../core/geom/Vector1.js";
import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
//# sourceMappingURL=SoundEmitter.d.ts.map