import type { CursorRenderer, CursorRenderOpts, PresenceUser, SelectionRenderer } from './view';
import type { PresenceManager } from '@jsonjoy.com/collaborative-presence/lib/PresenceManager';
import type { StrApi } from 'json-joy/lib/json-crdt';
import * as monaco from 'monaco-editor';
/** Accessor for the JSON CRDT `str` node — return `null` / `undefined` when
* the node is not yet available (e.g. loading state). */
export type StrRef = () => StrApi | null | undefined;
export interface MonacoPresenceOpts extends CursorRenderOpts {
/** The Monaco editor instance. */
editor: monaco.editor.IStandaloneCodeEditor;
/** The shared presence store. */
manager: PresenceManager;
/** Accessor for the JSON CRDT `str` node. */
str: StrRef;
/** Custom caret DOM factory. When omitted, the default label-style cursor
* from `view.ts` is used. */
renderCursor?: CursorRenderer;
/** Custom selection class name factory. When omitted, a semi-transparent
* background is used via dynamically injected `