import React from "react";
export interface CollaborationUser {
    id: string;
    name: string;
    email: string;
    avatar?: string;
    color: string;
    cursor?: {
        x: number;
        y: number;
        elementId?: string;
    };
    selection?: {
        elementId: string;
        start: number;
        end: number;
    };
    lastActive: number;
}
export interface CollaborationComment {
    id: string;
    userId: string;
    content: string;
    position: {
        x: number;
        y: number;
        elementId?: string;
    };
    timestamp: number;
    resolved?: boolean;
    replies?: CollaborationComment[];
}
export interface CollaborationEdit {
    id: string;
    userId: string;
    type: "insert" | "delete" | "replace";
    elementId: string;
    position: number;
    content: string;
    timestamp: number;
}
export interface CollaborationActivity {
    id: string;
    userId: string;
    type: "join" | "leave" | "edit" | "comment" | "cursor_move";
    description: string;
    timestamp: number;
    metadata?: any;
}
interface CollaborationContextType {
    currentUser: CollaborationUser | null;
    users: CollaborationUser[];
    setCurrentUser: (user: CollaborationUser) => void;
    updateCursor: (position: {
        x: number;
        y: number;
        elementId?: string;
    }) => void;
    updateSelection: (selection: {
        elementId: string;
        start: number;
        end: number;
    }) => void;
    comments: CollaborationComment[];
    addComment: (comment: Omit<CollaborationComment, "id" | "timestamp">) => void;
    resolveComment: (commentId: string) => void;
    replyToComment: (commentId: string, reply: Omit<CollaborationComment, "id" | "timestamp" | "position">) => void;
    edits: CollaborationEdit[];
    applyEdit: (edit: Omit<CollaborationEdit, "id" | "timestamp">) => void;
    activities: CollaborationActivity[];
    isConnected: boolean;
    connectionStatus: "connecting" | "connected" | "disconnected" | "reconnecting";
    showCursors: boolean;
    showComments: boolean;
    showActivity: boolean;
    toggleCursors: () => void;
    toggleComments: () => void;
    toggleActivity: () => void;
}
export declare const useCollaboration: () => CollaborationContextType;
interface CollaborationProviderProps {
    children: React.ReactNode;
    roomId: string;
    enableRealTime?: boolean;
    maxUsers?: number;
    className?: string;
    "data-testid"?: string;
}
export declare const CollaborationProvider: React.FC<CollaborationProviderProps>;
export declare const GlassCollaborationProvider: React.FC<CollaborationProviderProps>;
export {};
//# sourceMappingURL=GlassCollaborationProvider.d.ts.map