import * as Y from 'yjs'; import type { WorkArtifactKind } from '../features/work/work-types'; export declare const WORK_OFFICE_COLLABORATION_PROTOCOL: "a3s.office.collaboration"; export declare const WORK_OFFICE_COLLABORATION_VERSION: 1; export declare const WORK_OFFICE_COLLABORATION_NAMESPACE: "a3s.office"; export type WorkOfficeCollaborationMode = 'view' | 'comment' | 'suggest' | 'edit'; export type WorkOfficeCollaborationActorKind = 'human' | 'agent' | 'system'; export interface WorkOfficeCollaborationActor { id: string; name: string; color?: string; avatarUrl?: string; kind?: WorkOfficeCollaborationActorKind; } export type WorkOfficeCollaborationOriginKind = 'bootstrap' | 'editor' | 'agent' | 'import' | 'system'; export type WorkOfficeCollaborationMutationScope = 'content' | 'document-comment' | 'document-suggestion'; export interface WorkOfficeCollaborationOrigin { readonly protocol: typeof WORK_OFFICE_COLLABORATION_PROTOCOL; readonly kind: WorkOfficeCollaborationOriginKind; readonly actorId?: string; readonly operationId?: string; } /** * Structural subset of y-protocols Awareness used by Office surfaces. * Providers keep ownership of the Awareness instance and its transport. */ export interface WorkOfficeCollaborationAwareness { readonly clientID: number; getLocalState(): Record | null; getStates(): Map>; setLocalStateField(field: string, value: unknown): void; on(event: 'change' | 'update', listener: (changes: { added: number[]; updated: number[]; removed: number[]; }) => void): void; off(event: 'change' | 'update', listener: (changes: { added: number[]; updated: number[]; removed: number[]; }) => void): void; } export interface WorkOfficeCollaborationMetadata { protocol: typeof WORK_OFFICE_COLLABORATION_PROTOCOL; version: typeof WORK_OFFICE_COLLABORATION_VERSION; artifactId: string; kind: WorkArtifactKind; initialized: boolean; } export interface WorkOfficeCollaborationSessionOptions { artifactId: string; kind: WorkArtifactKind; document?: Y.Doc; awareness?: WorkOfficeCollaborationAwareness; actor?: WorkOfficeCollaborationActor; mode?: WorkOfficeCollaborationMode; namespace?: string; } export interface WorkOfficeCollaborationSession { readonly artifactId: string; readonly kind: WorkArtifactKind; readonly document: Y.Doc; readonly awareness?: WorkOfficeCollaborationAwareness; readonly actor?: WorkOfficeCollaborationActor; readonly mode: WorkOfficeCollaborationMode; readonly namespace: string; readonly ownsDocument: boolean; readonly localOrigin: WorkOfficeCollaborationOrigin; metadata(): WorkOfficeCollaborationMetadata | null; rootName(suffix: string): string; createOrigin(kind: WorkOfficeCollaborationOriginKind, operationId?: string): WorkOfficeCollaborationOrigin; transact(operation: (transaction: Y.Transaction) => T, origin?: WorkOfficeCollaborationOrigin, scope?: WorkOfficeCollaborationMutationScope): T; destroy(): void; } export type WorkOfficeCollaborationErrorCode = 'office.collaboration.actor_invalid' | 'office.collaboration.artifact_mismatch' | 'office.collaboration.binding_destroyed' | 'office.collaboration.bootstrap_ambiguous' | 'office.collaboration.bootstrap_invalid' | 'office.collaboration.content_invalid' | 'office.collaboration.identifier_invalid' | 'office.collaboration.kind_invalid' | 'office.collaboration.kind_mismatch' | 'office.collaboration.metadata_invalid' | 'office.collaboration.metadata_missing' | 'office.collaboration.mode_invalid' | 'office.collaboration.mutation_scope_invalid' | 'office.collaboration.namespace_invalid' | 'office.collaboration.not_initialized' | 'office.collaboration.origin_invalid' | 'office.collaboration.permission_denied' | 'office.collaboration.presence_conflict' | 'office.collaboration.presence_invalid' | 'office.collaboration.presence_unavailable' | 'office.collaboration.root_invalid' | 'office.collaboration.session_destroyed' | 'office.collaboration.transport_identity_mismatch' | 'office.collaboration.transport_invalid' | 'office.collaboration.transport_message_invalid' | 'office.collaboration.transport_message_too_large'; export declare class WorkOfficeCollaborationError extends Error { readonly code: WorkOfficeCollaborationErrorCode; constructor(code: WorkOfficeCollaborationErrorCode, message: string); } export declare function createWorkOfficeCollaborationSession(options: WorkOfficeCollaborationSessionOptions): WorkOfficeCollaborationSession; export declare function readWorkOfficeCollaborationMetadata(session: WorkOfficeCollaborationSession): WorkOfficeCollaborationMetadata | null; export declare function initializeWorkOfficeCollaborationMetadata(session: WorkOfficeCollaborationSession): WorkOfficeCollaborationMetadata; export declare function markWorkOfficeCollaborationInitialized(session: WorkOfficeCollaborationSession): void; export declare function registerWorkOfficeCollaborationInitializer(session: WorkOfficeCollaborationSession): void; export declare function assertWorkOfficeCollaborationEditable(session: WorkOfficeCollaborationSession): void; export declare function assertWorkOfficeCollaborationWritable(session: WorkOfficeCollaborationSession, scope: WorkOfficeCollaborationMutationScope): void; export declare function assertWorkOfficeCollaborationOrigin(origin: WorkOfficeCollaborationOrigin): void;