import { type Audio, type PositionalAudio } from 'three';
type AudioSource = string | AudioBuffer | HTMLMediaElement | AudioBufferSourceNode | MediaStream;
export interface AudioProps {
    src: AudioSource;
    autoplay?: boolean;
    loop?: boolean;
    volume?: number;
    playbackRate?: number;
    detune?: number;
    onload?: (buffer: AudioBuffer | null) => void;
    onerror?: (event: ErrorEvent) => void;
    onprogress?: (event: ProgressEvent) => void;
}
/**
 * This hook handles basic audio functionality.
 * It’s used by the <Audio> and <PositionalAudio> components.
 */
export declare const useAudio: <T extends Audio<GainNode> | PositionalAudio>(audio: () => T | undefined, src: () => AudioSource, autoplay: () => boolean, loop: () => boolean, volume: () => number, playbackRate: () => number, detune: () => number, props: () => {
    onload?: (buffer: AudioBuffer | null) => void;
    onerror?: (event: ErrorEvent) => void;
    onprogress?: (event: ProgressEvent) => void;
}) => {
    play: (delay?: number) => Promise<PositionalAudio | Audio<GainNode> | undefined>;
    pause: () => PositionalAudio | Audio<GainNode> | undefined;
    stop: () => PositionalAudio | Audio<GainNode> | undefined;
};
export {};
