import { Model } from 'json-joy/lib/json-crdt';
import { Log } from 'json-joy/lib/json-crdt/log/Log';
import { BehaviorSubject } from 'rxjs';
import { JsonCrdtLogState } from '../JsonCrdtLog/JsonCrdtLogState';
import type { TraceDefinition } from './TraceSelector/traces';
import type { DemoComp } from '../DemoDisplay';
export interface OpenFile {
    id: string;
    openTime: number;
    log: Log<any>;
    name: string;
    logState: JsonCrdtLogState;
    display?: DemoComp;
}
export declare class JsonCrdtExplorerState {
    readonly files$: BehaviorSubject<OpenFile[]>;
    readonly selected$: BehaviorSubject<string>;
    readonly file$: BehaviorSubject<OpenFile | null>;
    readonly sid: number;
    constructor();
    readonly select: (id: string) => void;
    readonly openFile: (log: Log<any>, name?: string) => OpenFile;
    readonly close: (id: string) => void;
    readonly rename: (id: string, name: string) => void;
    readonly addFile: (file: File) => Promise<void>;
    readonly addLog: (uint8: Uint8Array, name?: string, display?: TraceDefinition["display"]) => Promise<void>;
    readonly addTrace: (uint8: Uint8Array, trace: TraceDefinition) => Promise<void>;
    readonly addFiles: (files: File[]) => Promise<void>;
    private newCnt;
    readonly createNew: () => void;
    readonly createFromModel: (model: Model<any>) => void;
}
