/**
 * Once we have new interface for Browser SDK;
 * RoomSessionRecording in core should be removed
 * RoomSessionRecording in realtime-api should be moved to core
 */
import type { VideoRecordingEventParams, VideoRecordingMethods } from '@signalwire/core';
import { RealTimeRoomRecordingEvents, RealTimeRoomRecordingListeners, RealtimeRoomRecordingListenersEventsMapping } from '../../types';
import { ListenSubscriber } from '../../ListenSubscriber';
import { RoomSession } from '../RoomSession';
export interface RoomSessionRecordingOptions {
    roomSession: RoomSession;
    payload: VideoRecordingEventParams;
}
export declare class RoomSessionRecording extends ListenSubscriber<RealTimeRoomRecordingListeners, RealTimeRoomRecordingEvents> implements VideoRecordingMethods {
    private _payload;
    protected _eventMap: RealtimeRoomRecordingListenersEventsMapping;
    constructor(options: RoomSessionRecordingOptions);
    get id(): string;
    get roomId(): string;
    get roomSessionId(): string;
    get state(): "recording" | "paused" | "completed";
    get duration(): number | undefined;
    get startedAt(): Date | undefined;
    get endedAt(): Date | undefined;
    get hasEnded(): boolean;
    /** @internal */
    setPayload(payload: VideoRecordingEventParams): void;
    pause(): Promise<void>;
    resume(): Promise<void>;
    stop(): Promise<void>;
}
//# sourceMappingURL=RoomSessionRecording.d.ts.map