import { EventDispatcher } from '../events/EventDispatcher';
import { EventBase } from '../events/EventBase';
import { WaveAudio } from '../audio/WaveAudio';
export declare abstract class BaseAudioChannel extends EventDispatcher {
    static COMPLETE: string;
    static RESTART: string;
    static STOP: string;
    static ERROR: string;
    protected static RESTART_EVENT: EventBase;
    protected static COMPLETE_EVENT: EventBase;
    protected static STOP_EVENT: EventBase;
    protected static ERROR_EVENT: EventBase;
    owner: WaveAudio;
    get stopped(): boolean;
    protected _stopped: boolean;
    protected _loops: number;
    protected _id: number;
    protected _isLooping: boolean;
    protected _isPlaying: boolean;
    protected _isDecoding: boolean;
    isLooping(): boolean;
    isPlaying(): boolean;
    isDecoding(): boolean;
    play(buffer: ArrayBuffer, offset?: number, loop?: boolean | number, id?: number, meta?: any): void;
    abstract stop(): void;
    protected abstract restart(): boolean;
    protected dispatchRestart(): void;
    /**
     * Check loop and try restart it
     * @protected
     */
    protected tryRestartLoop(): boolean;
    protected completeInternally(dispatchComplete?: boolean, tryRestart?: boolean): void;
    protected dispatchComplete(): void;
    protected dispatchStop(error?: boolean): void;
}
//# sourceMappingURL=BaseAudioChannel.d.ts.map