import { Observable } from '@nativescript/core';
export declare const native_: unique symbol;
export declare const context_: unique symbol;
export declare const nativeCtor_: unique symbol;
export declare class BaseAudioContext extends Observable {
}
export declare function normalizeSourcePath(source: string): string;
export declare function looksLikePath(source: string): boolean;
export declare function toUint8Array(source: ArrayBuffer | ArrayBufferView): Uint8Array;
export type LatencyHint = 'interactive' | 'balanced' | 'playback' | number;
export interface AudioContextOptions {
    sampleRate?: number;
    latencyHint?: LatencyHint;
}
export declare function resolveLatencyHint(hint: LatencyHint | undefined): number;
export interface PannerOptions {
    positionX?: number;
    positionY?: number;
    positionZ?: number;
    orientationX?: number;
    orientationY?: number;
    orientationZ?: number;
    pan?: number;
    distanceModel?: number;
    panningModel?: number;
    refDistance?: number;
    maxDistance?: number;
    rolloffFactor?: number;
    coneInnerAngle?: number;
    coneOuterAngle?: number;
    coneOuterGain?: number;
}
export interface ResolvedPannerOptions {
    positionX: number;
    positionY: number;
    positionZ: number;
    orientationX: number;
    orientationY: number;
    orientationZ: number;
    pan: number;
    distanceModel: number;
    panningModel: number;
    refDistance: number;
    maxDistance: number;
    rolloffFactor: number;
    coneInnerAngle: number;
    coneOuterAngle: number;
    coneOuterGain: number;
}
export declare function resolvePannerOptions(o?: PannerOptions): ResolvedPannerOptions;
export interface StereoPannerOptions {
    pan?: number;
}
export interface ConstantSourceOptions {
    offset?: number;
}
export interface DelayOptions {
    delayTime?: number;
    maxDelayTime?: number;
}
export interface AnalyserOptions {
    fftSize?: number;
    smoothingTimeConstant?: number;
    minDecibels?: number;
    maxDecibels?: number;
}
export interface WaveShaperOptions {
    curve?: Float32Array | number[] | null;
    oversample?: 'none' | '2x' | '4x';
}
export interface IIRFilterOptions {
    feedforward: number[];
    feedback: number[];
}
export interface ConvolverOptions {
    disableNormalization?: boolean;
}
export interface PeriodicWaveOptions {
    real?: Float32Array | number[];
    imag?: Float32Array | number[];
    disableNormalization?: boolean;
}
export interface AudioParamHooks {
    nativeSet(value: number): void;
    nativeScheduleSet(value: number, time: number): void;
    nativeScheduleLinearRamp(value: number, time: number): void;
    nativeCancel(time: number): void;
    nativeScheduleExpRamp?(value: number, time: number): void;
    nativeScheduleTarget?(value: number, startTime: number, timeConstant: number): void;
    nativeScheduleCurve?(values: Float32Array, startTime: number, duration: number): void;
    nativeGetValue?(): number;
    nativeSetAutomationRate?(rate: string): void;
    nativeCancelAndHold(heldValue: number, time: number): void;
}
export declare function makeStubParamHooks(): AudioParamHooks;
export declare class AudioParamBase {
    private readonly hooks;
    private _cachedValue;
    private _automationRate;
    constructor(hooks: AudioParamHooks, initialValue?: number);
    get value(): number;
    set value(v: number);
    protected _syncFromNative(): void;
    get automationRate(): string;
    set automationRate(v: string);
    setValueAtTime(value: number, time?: number): AudioParamBase;
    linearRampToValueAtTime(value: number, time: number): AudioParamBase;
    exponentialRampToValueAtTime(value: number, time: number): AudioParamBase;
    setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParamBase;
    setValueCurveAtTime(values: Float32Array | number[], startTime: number, duration: number): AudioParamBase;
    cancelScheduledValues(time: number): AudioParamBase;
    cancelAndHoldAtTime(time: number): AudioParamBase;
}
