/**
 * Once we have new interface for Browser SDK;
 * RoomSessionPlayback in core should be removed
 * RoomSessionPlayback in realtime-api should be moved to core
 */
import type { VideoPlaybackContract, VideoPlaybackEventParams } from '@signalwire/core';
import { ListenSubscriber } from '../../ListenSubscriber';
import { RealTimeRoomPlaybackEvents, RealTimeRoomPlaybackListeners, RealtimeRoomPlaybackListenersEventsMapping } from '../../types';
import { RoomSession } from '../RoomSession';
/**
 * Instances of this class allow you to control (e.g., pause, resume, stop) the
 * playback inside a room session. You can obtain instances of this class by
 * starting a playback from the desired {@link RoomSession} (see
 * {@link RoomSession.play})
 */
export interface RoomSessionPlaybackOptions {
    roomSession: RoomSession;
    payload: VideoPlaybackEventParams;
}
export declare class RoomSessionPlayback extends ListenSubscriber<RealTimeRoomPlaybackListeners, RealTimeRoomPlaybackEvents> implements VideoPlaybackContract {
    private _payload;
    protected _eventMap: RealtimeRoomPlaybackListenersEventsMapping;
    constructor(options: RoomSessionPlaybackOptions);
    get id(): string;
    get roomId(): string;
    get roomSessionId(): string;
    get url(): string;
    get state(): "paused" | "completed" | "playing";
    get volume(): number;
    get startedAt(): Date | undefined;
    get endedAt(): Date | undefined;
    get position(): number;
    get seekable(): boolean;
    get hasEnded(): boolean;
    /** @internal */
    setPayload(payload: VideoPlaybackEventParams): void;
    pause(): Promise<void>;
    resume(): Promise<void>;
    stop(): Promise<void>;
    setVolume(volume: number): Promise<void>;
    seek(timecode: number): Promise<void>;
    forward(offset?: number): Promise<void>;
    rewind(offset?: number): Promise<void>;
}
//# sourceMappingURL=RoomSessionPlayback.d.ts.map