import { CollaborationConfig, CollabLoadOrigin, CollaborationLivePatcher, ConnectionStatus, RemoteCursor, SanitizedPresence } from 'pptx-viewer-shared'; import { CollaborationDeps } from './collaboration-deps'; /** * The collaboration controller. Construct it once during component setup: it * registers the two effects (auto start/stop from the config, granular publish * of local edits) itself, so no further wiring is needed in the SFC. */ export declare class CollaborationController { #private; /** Live connection status (reactive). */ status: ConnectionStatus; /** Interim Y.Doc channel for in-flight inline text (dormant when stopped). */ readonly livePatcher: CollaborationLivePatcher; constructor(deps: CollaborationDeps); /** Whether a session is live (reactive). */ get active(): boolean; /** Read-only participant (session live with the `viewer` role) - cannot select/drag/mutate. */ get readOnly(): boolean; /** Remote cursors on the current slide (reactive). */ get cursors(): RemoteCursor[]; /** Remote collaborators in the session (reactive). */ get remotePresences(): SanitizedPresence[]; /** Followed peer's client id, or null when free (reactive). */ get followedClientId(): number | null; /** The config the active session was started with (null when stopped); the * Share dialog's active view reads the local user's name/colour from this. */ get activeCollaboration(): CollaborationConfig | null; /** Total connected participants (self + remote peers), reactive. */ get connectedCount(): number; /** Publish a cursor move (slide-space px); no-op when no session is active. */ setCursor(x: number, y: number, activeSlideIndex?: number): void; /** Publish the local selection; no-op when no session is active. */ setSelection(selectedElementId: string | undefined, activeSlideIndex?: number): void; /** Publish the local active-slide index (drives peer follow-along). */ setActiveSlide(index: number): void; /** Follow the given peer's active slide, or `null` to stop following. */ followUser(clientId: number | null): void; /** * Re-adopt the shared doc's slides after a local content load committed a * parsed deck to viewer state (see `adoptDocSlidesAfterLoad`). The load * pipeline calls this synchronously right after it applies, i.e. before the * publish effect can flush the freshly loaded slides into the doc, so a * late joiner's bootstrap deck never clobbers the room's synced content. */ adoptDocAfterLoad(origin?: CollabLoadOrigin): void; /** Start (or restart) a session with the given config (dialog-driven). */ start(config: CollaborationConfig): Promise; stop(): void; } //# sourceMappingURL=collaboration.svelte.d.ts.map