import { createSection, addSection, removeSection, duplicateSection, toggleSectionVisibility, moveSection, reorderSections, updateSectionContent, updateSectionSettings, updateSectionMeta, type PageSection } from '@actuate-media/cms-core/page-sections';
export type { PageSection } from '@actuate-media/cms-core/page-sections';
export { createSection, addSection, removeSection, duplicateSection, toggleSectionVisibility, moveSection, reorderSections, updateSectionContent, updateSectionSettings, updateSectionMeta, };
export type PageStatus = 'DRAFT' | 'PUBLISHED' | 'SCHEDULED' | 'ARCHIVED';
export declare const PAGES_COLLECTION = "pages";
export interface EditorPage {
    id: string | null;
    title: string;
    slug: string;
    path: string;
    status: PageStatus;
    sections: PageSection[];
    seoTitle: string;
    seoDescription: string;
    publishedAt: string | null;
    updatedAt: string | null;
    /**
     * True when the document was authored in the visual Page Builder (it carries
     * a `_layout` tree). Such a page's `sections` are *compiled* from the layout
     * on every save (ADR 0002), so the flat editor opens it read-only and points
     * the user to the Page Builder instead of silently fighting the next save.
     */
    builderOwned: boolean;
}
export interface ValidationResult {
    /** blocking issues — publish is disabled while any exist */
    errors: string[];
    /** non-blocking advisories (e.g. SEO) */
    warnings: string[];
}
/**
 * Validate a page for save/publish. `forPublish` turns on the stricter
 * rules (at least one visible section, required section fields, valid
 * button URLs, image alt text). SEO gaps are surfaced as warnings.
 *
 * Per-section rules are delegated to the shared `validateSectionContent`
 * in `@actuate-media/cms-core/page-sections`, so the editor and the
 * server/MCP enforce identical content rules. Page-level rules
 * (title/path, "at least one visible section", SEO) stay here because
 * they operate on the whole `EditorPage`.
 */
export declare function validatePage(page: EditorPage, forPublish?: boolean): ValidationResult;
export declare function missingPageFields(config: unknown): string[];
export declare function fetchPageForEditor(pageId: string): Promise<EditorPage>;
/** Create a new page document, returning the new id. */
export declare function createPage(page: EditorPage): Promise<EditorPage>;
/** Save the current draft (no status change). */
export declare function savePageDraft(page: EditorPage): Promise<EditorPage>;
/** Publish: persist the latest content and flip status to PUBLISHED. */
export declare function publishPage(page: EditorPage): Promise<EditorPage>;
/** A blank page scaffold for `/pages/new`. */
export declare function emptyPage(): EditorPage;
//# sourceMappingURL=page-editor-service.d.ts.map