/** * @license * Copyright 2024 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ /** * Collaboration interfaces for real-time whiteboard collaboration. * Mirrors backend types from presence/interfaces/canvas.interface.ts */ export type CanvasOperationType = 'ADD' | 'UPDATE' | 'DELETE' | 'MOVE' | 'RESIZE' | 'UPDATE_TEXT' | 'ADD_CONNECTOR' | 'DELETE_CONNECTOR'; export interface CanvasOperation { id: string; type: CanvasOperationType; elementId?: string; data: Record; userId: string; timestamp: number; version: number; } export interface RemoteCursor { userId: string; username: string; color: string; x: number; y: number; lastUpdate: number; } export interface CollaborationUser { userId: string; username: string; color: string; cursor?: { x: number; y: number; }; selectedElementIds?: string[]; isTyping?: boolean; typingElementId?: string; } export interface NodeLock { userId: string; displayName: string; color: string; acquiredAt: number; expiresAt: number; } export interface CollaborationState { connected: boolean; canvasId: string | null; users: Map; cursors: Map; selections: Map; typingIndicators: Map; lockedNodes: Map; serverVersion: number; pendingOps: Map; } export declare const USER_COLORS: string[]; //# sourceMappingURL=collaboration.interface.d.ts.map