import type { DesignAsset, DesignAssetUploadInput, DesignCommandInput, DesignCommandResult, DesignCreateWorkspaceInput, DesignDeleteWorkspaceResult, DesignRenameWorkspaceInput, DesignWorkspace, DesignWorkspaceBootstrap, DesignWorkspaceEventSubscription, DesignWorkspaceEventSubscriptionInput, } from '../../shared/image-workspace'; export type CloseEventSessionsOptions = { accessToken?: string; tolerateRemoteFailure?: boolean; }; export class DesignWorkspaceModuleError extends Error { readonly status: number; readonly code: string; constructor(status: number, code: string, message: string) { super(message); this.name = 'DesignWorkspaceModuleError'; this.status = status; this.code = code; } } /** Main-owned deep boundary for one canonical V2 Living Form workspace. */ export interface DesignWorkspaceModule { bootstrap(): Promise; createWorkspace(input: DesignCreateWorkspaceInput): Promise; deleteWorkspace(workspaceId: string): Promise; renameWorkspace(input: DesignRenameWorkspaceInput): Promise; getWorkspace(workspaceId: string): Promise; submitCommand(input: DesignCommandInput): Promise; uploadAsset(input: DesignAssetUploadInput): Promise; openWorkspaceEvents( input: DesignWorkspaceEventSubscriptionInput, ): Promise; closeEventSessions(options?: CloseEventSessionsOptions): Promise; openAssetContent(workspaceId: string, assetId: string, range?: string): Promise; }