import { type TemplateDefinition } from './types';
import type { BuiltinContentTypeKey } from '../content-types/builtins';
/**
 * Build a canonical TipTap doc from plain-text paragraphs.
 *
 * Local mirror of `createRichTextDoc` from
 * `@riverbankcms/blocks/system/manifest/richTextSchema` — content-model
 * doesn't depend on blocks (blocks sits downstream), but the shape both
 * functions produce is governed by the same Zod schema in blocks.
 *
 * Exported with `@internal` so the cross-package parity test
 * (`packages/dummy-content/src/richTextDoc-parity.test.ts`) can import
 * the *real* implementation rather than reimplement it — eliminates the
 * "test verifies two copies of itself" failure mode.
 *
 * Returns `Record<string, unknown>` rather than the canonical
 * `RichTextDoc` type because that type lives in blocks; downstream
 * consumers narrow it via the canonical schema.
 *
 * @internal
 */
export declare function createRichTextDocInternal(paragraphs: ReadonlyArray<string>): Record<string, unknown>;
/**
 * Built-in content type keys that intentionally ship without a default
 * template — they use the block editor directly rather than a templated
 * render. Single source of truth for the carve-out so callers and tests
 * don't drift on which keys are "missing on purpose".
 */
export declare const CONTENT_TYPES_WITHOUT_DEFAULT_TEMPLATE: readonly ["page", "product-category"];
export type ContentTypeWithoutDefaultTemplate = (typeof CONTENT_TYPES_WITHOUT_DEFAULT_TEMPLATE)[number];
/**
 * Built-in keys that ship with a default template. Computed by `Exclude`
 * from the canonical `BuiltinContentTypeKey` union, so adding a new key
 * either forces an entry in `DEFAULT_TEMPLATE_DEFINITIONS` below or an
 * addition to `CONTENT_TYPES_WITHOUT_DEFAULT_TEMPLATE` above — silent
 * omission is impossible.
 */
export type BuiltinKeyWithDefaultTemplate = Exclude<BuiltinContentTypeKey, ContentTypeWithoutDefaultTemplate>;
export declare const DEFAULT_TEMPLATE_DEFINITIONS: {
    readonly post: {
        readonly templateKey: "default";
        readonly name: "Blog post detail";
        readonly description: "Default article layout for blog posts.";
        readonly metadata: {};
        readonly blocks: [{
            readonly blockKind: "block.hero";
            readonly scope: "entry";
            readonly bindings: {
                readonly eyebrow: Readonly<{
                    source: "literal";
                    value: string;
                }>;
                readonly headline: Readonly<{
                    source: "meta";
                    path: "title";
                }>;
                readonly subheadline: Readonly<{
                    source: "fallback";
                    options: import("./types").TemplateBindingValue[];
                }>;
                readonly '_sectionStyles.background.image': Readonly<{
                    source: "field";
                    path: "image";
                }>;
            };
        }, {
            readonly blockKind: "block.body-text";
            readonly scope: "entry";
            readonly bindings: import("./types").TemplateBindingRecord;
        }, {
            readonly blockKind: "block.cta-full";
            readonly scope: "template";
            readonly content: {
                readonly eyebrow: "Stay in the loop";
                readonly title: "Get the latest updates";
                readonly content: Record<string, unknown>;
                readonly ctas: readonly [{
                    readonly label: "Subscribe now";
                    readonly link: {
                        readonly kind: "url";
                        readonly href: "/contact";
                    };
                }, {
                    readonly label: "View all posts";
                    readonly link: {
                        readonly kind: "url";
                        readonly href: "/blog";
                    };
                }];
            };
        }];
    };
    readonly event: {
        readonly templateKey: "default";
        readonly name: "Event detail";
        readonly description: "Standard detail page for events.";
        readonly metadata: {};
        readonly blocks: [{
            readonly blockKind: "block.hero";
            readonly scope: "entry";
            readonly bindings: {
                readonly eyebrow: Readonly<{
                    source: "literal";
                    value: string;
                }>;
                readonly headline: Readonly<{
                    source: "meta";
                    path: "title";
                }>;
                readonly subheadline: Readonly<{
                    source: "fallback";
                    options: import("./types").TemplateBindingValue[];
                }>;
            };
        }, {
            readonly blockKind: "block.event-details";
            readonly scope: "entry";
            readonly content: {
                readonly heading: "Event details";
                readonly showVenue: true;
                readonly showMap: true;
                readonly showOtherDates: true;
                readonly otherDatesLimit: "5";
            };
        }, {
            readonly blockKind: "block.body-text";
            readonly scope: "entry";
            readonly bindings: import("./types").TemplateBindingRecord;
        }, {
            readonly blockKind: "block.event-registration";
            readonly scope: "entry";
            readonly content: {
                readonly heading: "Register for this event";
                readonly maxTickets: "5";
                readonly showVenue: true;
                readonly showCapacity: true;
                readonly successMessage: "Thank you for registering! Check your email for confirmation details.";
                readonly waitlistMessage: "You've been added to the waitlist. We'll email you a claim link if a spot opens up.";
                readonly buttonText: "Complete Registration";
                readonly buttonVariant: "primary";
            };
            readonly bindings: {
                readonly occurrenceContext: {
                    readonly $bind: {
                        readonly from: "$root.occurrenceContext";
                    };
                };
                readonly contentEntry: {
                    readonly $bind: {
                        readonly from: "$root.contentEntry";
                    };
                };
            };
        }];
    };
    readonly course: {
        readonly templateKey: "default";
        readonly name: "Course detail";
        readonly description: "Standard landing page for multi-session courses.";
        readonly metadata: {};
        readonly blocks: [{
            readonly blockKind: "block.hero";
            readonly scope: "entry";
            readonly bindings: {
                readonly eyebrow: Readonly<{
                    source: "literal";
                    value: string;
                }>;
                readonly headline: Readonly<{
                    source: "meta";
                    path: "title";
                }>;
                readonly subheadline: Readonly<{
                    source: "fallback";
                    options: import("./types").TemplateBindingValue[];
                }>;
            };
        }, {
            readonly blockKind: "block.course-details";
            readonly scope: "entry";
            readonly content: {
                readonly heading: "Course details";
                readonly showTitle: false;
                readonly showDescription: false;
                readonly showSessions: true;
                readonly sessionsLimit: "10";
                readonly showVenue: true;
                readonly showPrice: true;
                readonly showCapacity: true;
                readonly showEnrollmentStatus: true;
                readonly showMembershipNote: true;
            };
        }, {
            readonly blockKind: "block.body-text";
            readonly scope: "entry";
            readonly bindings: import("./types").TemplateBindingRecord;
        }, {
            readonly blockKind: "block.course-registration";
            readonly scope: "entry";
            readonly content: {
                readonly heading: "Enroll in this course";
                readonly showSessions: true;
                readonly showPrice: true;
                readonly showCapacity: true;
                readonly showVenue: true;
                readonly successMessage: "You're enrolled! Check your email for confirmation and session details.";
                readonly waitlistMessage: "You've been added to the waitlist. We'll email you a claim link if a spot opens up.";
                readonly membershipMessage: "Enrolled using your membership! Check your email for session details.";
                readonly buttonText: "Complete Enrollment";
                readonly buttonVariant: "primary";
            };
        }];
    };
    readonly 'team-member': {
        readonly templateKey: "default";
        readonly name: "Team member profile";
        readonly description: "Default layout for team member profile pages.";
        readonly metadata: {};
        readonly blocks: [{
            readonly blockKind: "block.hero";
            readonly scope: "entry";
            readonly bindings: {
                readonly eyebrow: Readonly<{
                    source: "literal";
                    value: string;
                }>;
                readonly headline: Readonly<{
                    source: "meta";
                    path: "title";
                }>;
                readonly subheadline: Readonly<{
                    source: "field";
                    path: "intro";
                }>;
            };
        }, {
            readonly blockKind: "block.body-text";
            readonly scope: "entry";
            readonly bindings: import("./types").TemplateBindingRecord;
        }];
    };
    readonly product: {
        readonly templateKey: "default";
        readonly name: "Product detail";
        readonly description: "Standard landing page for shop products.";
        readonly metadata: {};
        readonly blocks: [{
            readonly blockKind: "block.product-detail";
            readonly scope: "entry";
            readonly content: {
                readonly heading: "";
                readonly showSummary: true;
                readonly showBody: true;
                readonly showBadges: true;
                readonly addButtonText: "Add to cart";
                readonly emptyStateText: "Product unavailable.";
            };
        }];
    };
    readonly testimonial: {
        readonly templateKey: "default";
        readonly name: "Testimonial detail";
        readonly description: "Rich layout for individual testimonials.";
        readonly metadata: {};
        readonly blocks: [{
            readonly blockKind: "block.hero";
            readonly scope: "entry";
            readonly bindings: {
                readonly eyebrow: Readonly<{
                    source: "literal";
                    value: string;
                }>;
                readonly headline: Readonly<{
                    source: "meta";
                    path: "title";
                }>;
                readonly subheadline: Readonly<{
                    source: "fallback";
                    options: import("./types").TemplateBindingValue[];
                }>;
            };
        }, {
            readonly blockKind: "block.body-text";
            readonly scope: "entry";
            readonly bindings: import("./types").TemplateBindingRecord;
        }];
    };
};
export declare function getDefaultTemplateDefinition(contentTypeKey: string): TemplateDefinition | null;
export declare const DEFAULT_TEMPLATE_KEYS: readonly string[];
