import type { DesignDocument, DocumentDuplicateMetadataRemapper, DocumentTransaction } from './contracts.js'; import { type DocumentPage } from './pagesMetadata.js'; export { DOCUMENT_PAGES_KEY, IMPLICIT_DOCUMENT_PAGE_ID, documentPageDiagnostics } from './pagesMetadata.js'; export type { DocumentPage, DocumentPagesMetadata } from './pagesMetadata.js'; /** Reading a legacy document never writes a sidecar or changes node identities. */ export declare function documentPages(document: DesignDocument): readonly DocumentPage[]; export declare function pageRootIds(document: DesignDocument, pageId: string): readonly string[]; /** Page defaults are presentation values until an explicit edit persists them. */ export declare function pageAppearance(document: DesignDocument, pageId: string): Readonly<{ background: string; opacity: number; }>; export declare function pageForNode(document: DesignDocument, nodeId: string): string | null; /** Wrap ordinary canvas commands so membership follows structural edits in the same undo step. */ export declare function applyDocumentPageEdit(transaction: DocumentTransaction, before: DesignDocument, activePageId: string, apply: (transaction: DocumentTransaction) => void): void; export type DocumentPageAction = { type: 'create'; id: string; name: string; index?: number; } | { type: 'rename'; pageId: string; name: string; } | { type: 'appearance'; pageId: string; background?: string; opacity?: number; } | { type: 'reset-appearance'; pageId: string; } | { type: 'move'; pageId: string; index: number; } | { type: 'duplicate'; pageId: string; id: string; name?: string; } | { type: 'delete'; pageId: string; }; export interface DocumentPageActionOptions { allocateNodeId?: (sourceNodeId: string) => string; remapMetadata?: DocumentDuplicateMetadataRemapper; } /** Page mutations use existing engine commands and then replace one same-identity canonical snapshot. */ export declare function applyDocumentPageAction(transaction: DocumentTransaction, before: DesignDocument, action: DocumentPageAction, options?: DocumentPageActionOptions): void;