export type OjoProjectEvent = { event: string; projectId: string; refreshScope?: string; payload?: unknown; [key: string]: unknown; }; export type OjoCanvasProjectPayload = { projectId: string; startupData?: unknown; repository?: unknown; prototypeFrames?: Array>; resourceIndex?: Record; revision?: string; [key: string]: unknown; }; export type OjoCanvasDataProvider = { getProjectState(projectId: string): Promise; }; export type OjoCanvasAssetProvider = { readResource?(projectId: string, resourceKey: string): Promise; readWorkspaceFile?(projectId: string, path: string): Promise; readPrototypeDistFile?(projectId: string, path: string): Promise; }; export type OjoCanvasEventProvider = { waitProjectEvent?(projectId: string, timeoutMs: number): Promise; }; export type OjoCanvasMutationProvider = { applyCanvasPatch?(projectId: string, patch: unknown): Promise; }; export type OjoCanvasDisplayModeProvider = { requestDisplayMode?(mode: "fullscreen" | string): Promise | void; }; export type OjoCanvasProviders = OjoCanvasDataProvider & OjoCanvasAssetProvider & OjoCanvasEventProvider & OjoCanvasMutationProvider & OjoCanvasDisplayModeProvider; export type OjoCanvasMountOptions = { container: HTMLElement; projectId: string; providers: OjoCanvasProviders; startupData?: unknown; hostKind?: string; }; export type OjoCanvasMount = { projectId: string; root: HTMLElement; payload: OjoCanvasProjectPayload; update(payload?: Partial): Promise; dispose(): void; };