import { Pubby } from "../../client";
import { PubbyStream } from "../../lib/streams";
import { Playback } from "../../models/playback";
import { User } from "../../models/user";
import { PubbyModule } from "../../module";
import { MediaActionsUpdateResponse } from "../../websocket/incoming";
declare module "../../client" {
    interface Pubby {
        playback: PlaybackModule;
    }
}
export declare class PlaybackModule extends PubbyModule {
    state: Playback;
    state$: PubbyStream<any>;
    actions$: PubbyStream<MediaActionsUpdateResponse>;
    actions: {
        likes: Set<string>;
        dislikes: Set<string>;
        adds: Set<string>;
    };
    get dj(): any;
    get duration(): number;
    get currentTime(): number;
    get progress(): number;
    constructor(client: Pubby);
    init(): void;
    skip(): void;
    add(playlistId: string): void;
    like(): void;
    dislike(): void;
    isDj(userId: string): boolean;
    on(event: "load", ...listeners: ((state: any) => void)[]): this;
    on(event: "dj-update", ...listeners: ((user: User) => void)[]): this;
    on(event: "update", ...listeners: ((state: Playback) => void)[]): this;
    on(event: "media-update", ...listeners: ((media: any) => void)[]): this;
    on(event: "actions-update", ...listeners: ((state: PlaybackModule["actions"]) => void)[]): this;
}
