import { Client as LiveblocksClient, User } from "@liveblocks/client";
import { DeepReadonly } from "helpers/ts-type-helpers";
import React from "react";
import { RootState } from "../redux/reducers/root";
import { AppMiddleware } from "../redux/stores/typed-redux-hooks";
import { LiveblocksPresence, LiveblocksStorage, OpsTransaction, UserMeta } from "./types";
/**
 * Liveblocks Client / Room types
 */
export declare const LIVEBLOCKS_SESSION_EXPIRED_MESSAGE = "Subframe session token expired; please refresh the page";
export declare function enterTypedLiveblocksRoom(client: LiveblocksClient, projectId: string, initialPresence: LiveblocksPresence): {
    room: import("@liveblocks/core").Room<LiveblocksPresence, LiveblocksStorage, import("@liveblocks/core").BaseUserMeta, import("@liveblocks/core").Json, import("@liveblocks/core").BaseMetadata>;
    leave: () => void;
};
export declare const COLLABORATION_COLORS: readonly ["pink", "yellow", "green", "purple", "orange"];
export type CollaborationColorType = (typeof COLLABORATION_COLORS)[number];
export declare function getColorForOtherUser(others: User<LiveblocksPresence, UserMeta>[], userId: string): CollaborationColorType;
export declare function useOthersInComponentId(componentId: string): User<LiveblocksPresence, import("@liveblocks/core").BaseUserMeta>[];
export declare function applyOpsToRelease(currentRelease: RootState["currentRelease"], inputRemoteOps: DeepReadonly<OpsTransaction[]>, localOps: readonly OpsTransaction[], { opsTransactionId }: {
    opsTransactionId: string | null;
}): [
    RootState["currentRelease"],
    RootState["currentRelease"],
    OpsTransaction[],
    Error | null
];
export declare function LiveblocksRoomProvider({ children, projectId }: {
    children: React.ReactNode;
    projectId: string;
}): React.JSX.Element;
export declare function useLiveblocksRoom(): {
    loading: boolean;
};
export declare const syncToLiveblocksMiddleware: AppMiddleware;
//# sourceMappingURL=liveblocks-client.d.ts.map