import { Doc as YDoc } from 'yjs'; export type SuperDocCollaborationProviderFamily = 'y-websocket' | 'hocuspocus' | 'liveblocks'; export interface SuperDocCollaborationProviderAwareness { getLocalState(): Record | null; setLocalState(state: Record | null): void; getStates(): Map>; on(event: 'change' | 'update', listener: (payload: { added: number[]; updated: number[]; removed: number[]; }) => void): void; off(event: 'change' | 'update', listener: (payload: { added: number[]; updated: number[]; removed: number[]; }) => void): void; } export interface SuperDocCollaborationProviderAttachInput { readonly rootId: string; readonly ydoc: YDoc; readonly providerRoomName: string; onSynced(): void; onDegraded(): void; onFailed(detail: Record): void; onStateless(message: string): void; } export interface SuperDocCollaborationProviderTransport { readonly awareness?: SuperDocCollaborationProviderAwareness | null; disconnect(): void; destroy(): void; sendStateless?(message: string): Promise | void; } export interface SuperDocCollaborationProviderAdapter { readonly providerFamily: SuperDocCollaborationProviderFamily; attach(input: SuperDocCollaborationProviderAttachInput): SuperDocCollaborationProviderTransport; destroy?(): void; } export interface SuperDocCollaborationProviderFactoryInput { readonly documentId: string; readonly providerOptions: unknown; readonly token: string | (() => Promise) | null; } export type SuperDocCollaborationProviderFactory = (input: SuperDocCollaborationProviderFactoryInput) => SuperDocCollaborationProviderAdapter; export interface SuperDocCollaborationWorkerOptions { readonly providerAdapters: Readonly>; } /** Register provider adapters and start the worker used by `workerUrls.collaboration`. */ export declare function bootstrapSuperDocCollaborationWorker(options: SuperDocCollaborationWorkerOptions): void;