import { MixerConnection } from '../mixer-connection';
import { MixerStore } from '../state/mixer-store';
import { ShowsWithDetails } from '../types';
/**
 * Controller for Shows, Snapshots and Cues
 */
export declare class ShowController {
    private conn;
    private store;
    /** Currently loaded show */
    readonly currentShow$: import('rxjs').Observable<string>;
    /** Currently loaded snapshot */
    readonly currentSnapshot$: import('rxjs').Observable<string>;
    /** Currently loaded cue */
    readonly currentCue$: import('rxjs').Observable<string>;
    /**
     * All available shows with their snapshots and cues (show name -> { snapshots, cues }).
     * Snapshots and cues are not hierarchical; both hang off a show in parallel.
     * Fetched on connect; refresh manually with {@link refreshShows}.
     */
    readonly shows$: import('rxjs').Observable<ShowsWithDetails>;
    constructor(conn: MixerConnection, store: MixerStore);
    /**
     * Load a show by name
     * @param show Show name
     */
    loadShow(show: string): void;
    /**
     * Load a snapshot in a show
     * @param show Show name
     * @param snapshot Snapshot name in the show
     */
    loadSnapshot(show: string, snapshot: string): void;
    /**
     * Load a cue in a show
     * @param show Show name
     * @param cue Cue name in the show
     */
    loadCue(show: string, cue: string): void;
    /**
     * Save a snapshot in a show. This will overwrite an existing snapshot.
     * @param show Show name
     * @param snapshot Snapshot name in the show
     */
    saveSnapshot(show: string, snapshot: string): void;
    /**
     * Save a cue in a show. This will overwrite an existing cue.
     * @param show Show name
     * @param cue Cue name in the show
     */
    saveCue(show: string, cue: string): void;
    /** Update and overwrite the currently loaded snapshot */
    updateCurrentSnapshot(): void;
    /** Update and overwrite the currently loaded cue */
    updateCurrentCue(): void;
    /**
     * Request the list of shows and, for each show, its snapshots and cues from the mixer.
     * Results are exposed through {@link shows$}.
     * This is called automatically on every connection open.
     */
    refreshShows(): void;
}
