import { MatrixClient, MatrixEvent, TypedEventEmitter } from "matrix-js-sdk/src/matrix";
import { VoiceBroadcastPlayback, VoiceBroadcastRecordingsStore } from "..";
import { IDestroyable } from "../../utils/IDestroyable";
export declare enum VoiceBroadcastPlaybacksStoreEvent {
    CurrentChanged = "current_changed"
}
interface EventMap {
    [VoiceBroadcastPlaybacksStoreEvent.CurrentChanged]: (recording: VoiceBroadcastPlayback | null) => void;
}
/**
 * This store manages VoiceBroadcastPlaybacks:
 * - access the currently playing voice broadcast
 * - ensures that only once broadcast is playing at a time
 */
export declare class VoiceBroadcastPlaybacksStore extends TypedEventEmitter<VoiceBroadcastPlaybacksStoreEvent, EventMap> implements IDestroyable {
    private recordings;
    private current;
    /** Playbacks indexed by their info event id. */
    private playbacks;
    constructor(recordings: VoiceBroadcastRecordingsStore);
    setCurrent(current: VoiceBroadcastPlayback): void;
    clearCurrent(): void;
    getCurrent(): VoiceBroadcastPlayback | null;
    getByInfoEvent(infoEvent: MatrixEvent, client: MatrixClient): VoiceBroadcastPlayback;
    private addPlayback;
    private onPlaybackStateChanged;
    private pauseExcept;
    destroy(): void;
}
export {};
