/**
 * Creates an audio source.
 *
 * @remarks
 * This node also has its own transforms. And if it is set as input of other nodes, their objects will be added as children to the object of this node.
 *
 */
import { TypedObjNode } from './_Base';
import { Group } from 'three';
import { TransformController } from './utils/TransformController';
import { FlagsControllerD } from '../utils/FlagsController';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { HierarchyController } from './utils/HierarchyController';
import { ObjType } from '../../poly/registers/nodes/types/Obj';
import { NodeContext } from '../../poly/NodeContext';
import { AudioNodeChildrenMap } from '../../poly/registers/nodes/Audio';
import { NodeCreateOptions } from '../utils/hierarchy/ChildrenController';
import { Constructor, valueof } from '../../../types/GlobalTypes';
import { BaseAudioNodeType } from '../audio/_Base';
declare const PositionalAudioParamConfig_base: {
    new (...args: any[]): {
        transform: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
        keepPosWhenParenting: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        rotationOrder: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        t: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
        r: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
        s: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
        scale: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
        matrixAutoUpdate: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        updateTransformFromObject: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    };
} & typeof NodeParamsConfig;
declare class PositionalAudioParamConfig extends PositionalAudioParamConfig_base {
    audio: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param audio node */
    audioNode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.NODE_PATH>;
    /** @param refDistance. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance*/
    refDistance: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param rolloffFactor. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor */
    rolloffFactor: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param maxDistance. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance */
    maxDistance: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param distanceModel. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel */
    distanceModel: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param coneInnerAngle. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode */
    coneInnerAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param coneOuterAngle. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode */
    coneOuterAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param coneOuterGain. See https://developer.mozilla.org/en-US/docs/Web/API/PannerNode */
    coneOuterGain: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param ensures the transform of the audio listener is updated on very frame */
    listenerTransformAutoUpdate: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param show helper */
    showHelper: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param helper size */
    helperSize: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
}
export declare class PositionalAudioObjNode extends TypedObjNode<Group, PositionalAudioParamConfig> {
    paramsConfig: PositionalAudioParamConfig;
    static type(): ObjType;
    readonly hierarchyController: HierarchyController;
    readonly transformController: TransformController;
    readonly flags: FlagsControllerD;
    private _positionalAudio;
    private _helper;
    createObject(): Group<import("three").Object3DEventMap>;
    initializeNode(): void;
    private _updateToDestination;
    private _updateHelperHierarchy;
    cook(): Promise<void>;
    private _updatePositionalAudio;
    private _createHelper;
    private _resetAudioNode;
    private _connectAudioNode;
    static PARAM_CALLBACK_updatePositionalAudio(node: PositionalAudioObjNode): void;
    protected _childrenControllerContext: NodeContext;
    createNode<S extends keyof AudioNodeChildrenMap>(node_class: S, options?: NodeCreateOptions): AudioNodeChildrenMap[S];
    createNode<K extends valueof<AudioNodeChildrenMap>>(node_class: Constructor<K>, options?: NodeCreateOptions): K;
    children(): BaseAudioNodeType[];
    nodesByType<K extends keyof AudioNodeChildrenMap>(type: K): AudioNodeChildrenMap[K][];
}
export {};
