import { type EditableArtifactSession, type PresentationArtifactEditorSceneNode, type PresentationArtifactRichText } from "@opengeni/sdk/editable-artifacts"; import { type ReactNode } from "react"; import { type PresentationCommitHandler, type PresentationEditorProjection, type PresentationProjectionArtifactSurfaceProps } from "./presentation-editor.js"; import { type EditableArtifactDownload } from "./artifact-download.js"; import { type OpenGeniText } from "../../messages/runtime.js"; export type EditablePresentationArtifactSurfaceProps = Omit & { session: EditableArtifactSession; subtitle?: ReactNode | undefined; readOnly?: boolean | undefined; /** Called only after the durable SDK command has been accepted locally. */ onCommit?: PresentationCommitHandler | undefined; /** Host-authenticated PPTX export; omitted for hosts without export support. */ download?: EditableArtifactDownload | undefined; }; export type ComposedPresentationProjection = Readonly<{ projection: PresentationEditorProjection; sceneNodes: ReadonlyMap; }>; /** * Durable presentation editor over the public SDK. The Worker owns canonical * state; React only receives bounded catalog and per-slide editor projections. */ export declare function EditablePresentationArtifactSurface(props: EditablePresentationArtifactSurfaceProps): import("react").JSX.Element; /** Builds a deterministic, bounded catalog + editor-slide projection at one revision. */ export declare function composePresentationEditorProjection(t: OpenGeniText, session: EditableArtifactSession): Promise; export declare function flattenPresentationRichText(text: PresentationArtifactRichText): string; /** Preserves unaffected run styles and paragraph alignment across one UTF-16 text edit. */ export declare function replacePresentationRichText(richText: PresentationArtifactRichText, before: string, after: string): PresentationArtifactRichText;