/// import { Slot } from '@revesuite/global/utils'; import type { Awareness as YAwareness } from 'y-protocols/awareness.js'; import type { Space } from './space.js'; import type { Store } from './store.js'; export interface UserRange { startOffset: number; endOffset: number; blockIds: string[]; } export interface UserInfo { id: number; name: string; color: string; } type Request = BlockSuiteFlags, Key extends keyof Flags = keyof Flags> = { id: string; clientId: number; field: Key; value: Flags[Key]; }; type Response = { id: string; }; export type RawAwarenessState = BlockSuiteFlags> = { rangeMap?: Record; user?: UserInfo; flags: Flags; request?: Request[]; response?: Response[]; }; interface AwarenessEvent = BlockSuiteFlags> { id: number; type: 'add' | 'update' | 'remove'; state?: RawAwarenessState; } export declare class AwarenessStore = BlockSuiteFlags> { readonly awareness: YAwareness>; readonly store: Store; readonly slots: { update: Slot>; }; constructor(store: Store, awareness: YAwareness>, defaultFlags: Flags); setFlag(field: Key, value: Flags[Key]): void; getFlag(field: Key): Flags[Key] | undefined; setReadonly(space: Space, value: boolean): void; isReadonly(space: Space): boolean; setRemoteFlag(clientId: number, field: Key, value: Flags[Key]): void; setLocalRange(space: Space, range: UserRange | null): void; getLocalRange(space: Space): UserRange | undefined; getStates(): Map>; private _onAwarenessChange; private _onAwarenessMessage; private _handleRemoteFlags; destroy(): void; } export {}; //# sourceMappingURL=awareness.d.ts.map