import { BaseUserMeta, LiveList, LiveObject } from "@liveblocks/client";
import { UndoableAction } from "../redux/reducers/current-release/types";
import { SelectionState } from "../redux/reducers/editor/selection";
export type LiveblocksStorage = {
    meta: LiveObject<{
        subframeVersion: string;
    }>;
    ops: LiveList<LiveblocksOpsTransaction>;
};
declare global {
    interface Window {
        liveblocksSyncStorage: LiveObject<LiveblocksStorage> | null;
    }
}
declare global {
    interface Liveblocks {
        Presence: LiveblocksPresence;
        Storage: LiveblocksStorage;
        UserMeta: UserMeta;
    }
}
export type LiveblocksPresence = {
    editingComponentId: string | null;
    selection: SelectionState | null;
    user: {
        id: string;
        email: string;
        avatarUrl: string | null;
    };
};
export type UserMeta = BaseUserMeta;
/**
 * Ops Transaction types and helpers
 */
export type OpsTransaction = {
    id: string;
    ops: UndoableAction<object>[];
    timestamp: number;
    userId: string;
    appInstanceId: string;
    schemaVersion: number;
};
export type LiveblocksOpsTransaction = LiveObject<Omit<OpsTransaction, "ops"> & {
    ops: LiveList<LiveObject<UndoableAction<any>>>;
}>;
//# sourceMappingURL=types.d.ts.map