import React from 'react';
import type { RendererProps } from 'jamis-core';
import type { AudioSchema } from './types';
interface AudioProps extends RendererProps, Omit<AudioSchema, 'className'> {
}
export interface AudioState {
    src?: string;
    isReady?: boolean;
    muted?: boolean;
    playing?: boolean;
    played: number;
    seeking?: boolean;
    volume: number;
    prevVolume: number;
    loaded?: number;
    playbackRate: number;
    showHandlePlaybackRate: boolean;
    showHandleVolume: boolean;
}
export declare class Audio extends React.Component<AudioProps, AudioState> {
    audio: HTMLMediaElement;
    progressTimeout: ReturnType<typeof setTimeout>;
    durationTimeout: ReturnType<typeof setTimeout>;
    static defaultProps: Pick<AudioProps, 'inline' | 'autoPlay' | 'playbackRate' | 'loop' | 'rates' | 'progressInterval' | 'controls'>;
    state: AudioState;
    componentWillUnmount(): void;
    componentDidMount(): void;
    componentDidUpdate(prevProps: AudioProps): void;
    progress(): void;
    audioRef(audio: HTMLMediaElement): void;
    load(): void;
    handlePlaybackRate(rate: number): void;
    handleMute(): void;
    handlePlaying(): void;
    getCurrentTime(): string;
    getDuration(): string | number;
    onDurationCheck(): void;
    onSeekChange(e: any): void;
    onSeekMouseDown(): void;
    onSeekMouseUp(e: any): void;
    setVolume(e: any): void;
    formatTime(seconds: number): string;
    pad(string: number): string;
    toggleHandlePlaybackRate(): void;
    toggleHandleVolume(type: boolean): void;
    renderRates(): JSX.Element | null;
    renderPlay(): JSX.Element;
    renderTime(): JSX.Element;
    renderProcess(): JSX.Element;
    renderVolume(): JSX.Element;
    render(): JSX.Element;
}
export declare class AudioRenderer extends Audio {
}
export {};
