/**
 * imports an audio file
 *
 *
 */
import { TypedAudioNode } from './_Base';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { AudioBuilder } from '../../../core/audio/AudioBuilder';
import { OnBeforePlayCallback, OnPlaySuccessCallback, OnPlayErrorCallback, OnStopCallback } from './../../../core/audio/PlayerCallbacksManager';
import { AudioType } from '../../poly/registers/nodes/types/Audio';
declare class FileAudioParamsConfig extends NodeParamsConfig {
    /** @param url to fetch the audio file from */
    url: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    /** @param auto start */
    autostart: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param duration */
    duration: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param display currentTime param */
    updateCurrentTimeParam: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param currentTime */
    currentTime: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param loop */
    loop: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param useLoopRange */
    /** @param loop Range */
    /** @param play the audio */
    play: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param stop the audio */
    pause: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param restart the audio */
    restart: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param seek 10 seconds back */
    seekM10: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param seek 5 seconds back */
    seekM5: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param seek 5 seconds forward */
    seekP5: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
    /** @param seek 10 seconds forward */
    seekP10: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
}
export declare class FileAudioNode extends TypedAudioNode<FileAudioParamsConfig> {
    paramsConfig: FileAudioParamsConfig;
    static type(): AudioType;
    initializeNode(): void;
    dispose(): void;
    private _startedAt;
    private _stoppedAt;
    cook(inputContents: AudioBuilder[]): Promise<void>;
    private _player;
    private _loadUrl;
    play(): Promise<void>;
    pause(): Promise<void>;
    private _reset;
    restart(): Promise<void>;
    seekOffset(offset: number): void;
    static PARAM_CALLBACK_updateUpdateCurrentTimeParam(node: FileAudioNode): void;
    private _updateCurrentTimeParam;
    private _currentTime;
    static PARAM_CALLBACK_updateLoop(node: FileAudioNode): void;
    private _updateLoop;
    private _updateOnTickHook;
    private _registerOnTickHook;
    private _unRegisterOnTickHook;
    private _tickCallbackName;
    static PARAM_CALLBACK_seekOffset(node: FileAudioNode, offset: number): void;
    static PARAM_CALLBACK_play(node: FileAudioNode): void;
    static PARAM_CALLBACK_pause(node: FileAudioNode): void;
    static PARAM_CALLBACK_restart(node: FileAudioNode): void;
    private _playerCallbacks;
    onBeforePlay(callback: OnBeforePlayCallback): void;
    private _runOnBeforePlay;
    onPlaySuccess(callback: OnPlaySuccessCallback): void;
    private _runOnPlaySuccess;
    onPlayError(callback: OnPlayErrorCallback): void;
    private _runOnPlayError;
    onStop(callback: OnStopCallback): void;
    removeOnStop(callback: OnStopCallback): void;
    private _runOnStop;
    private _on;
    private _removeCallback;
}
export {};
