import type { WidgetSchema } from "./widget-schema";
/**
 * Category for organizing page templates in the registry
 */
export interface PageCategory {
    /** Unique identifier for the category */
    readonly id: string;
    /** Display label */
    label: string;
    /** Icon identifier (e.g., lucide icon name) */
    icon?: string;
}
/**
 * A reusable page template that can be shared across multiple navigations
 */
export interface PageTemplate {
    /** Unique identifier for the template */
    readonly id: string;
    /** URL-friendly slug */
    slug: string;
    /** Display name */
    name: string;
    /** Description of the template's purpose */
    description?: string;
    /** Category ID for organization */
    category: string;
    /** Tags for filtering and search */
    tags?: readonly string[];
    /** The widget tree that defines the page content */
    component_tree: readonly WidgetSchema[];
    /** Semantic version of the template */
    version: string;
    /** Whether this is a core feature that cannot be removed */
    isCore?: boolean;
    /** Default prop values that can be customized */
    defaultProps?: Readonly<Record<string, unknown>>;
    /** Thumbnail image URL for UI display */
    thumbnail?: string;
}
/**
 * Reference to a shared page template within a navigation
 */
export interface PageReference {
    /** ID of the page template being referenced */
    page_template_id: string;
    /** Screen ID to assign to this page in the navigation */
    screen_id: number;
    /** Optional prop overrides (only prop values, not widget structure) */
    overrides?: readonly PageOverride[];
}
/**
 * Override for a specific widget's props within a page template
 */
export interface PageOverride {
    /** ID of the widget to override (must match WidgetSchema.id in the template) */
    readonly widget_id: string;
    /** Props to override (merged with original props) */
    props: Readonly<Record<string, unknown>>;
}
/**
 * Built-in page category IDs
 */
export declare const PAGE_CATEGORIES: {
    readonly CORE: "core";
    readonly COMMERCE: "commerce";
    readonly COMMUNICATION: "communication";
    readonly DATA: "data";
    readonly CUSTOM: "custom";
};
export type PageCategoryId = (typeof PAGE_CATEGORIES)[keyof typeof PAGE_CATEGORIES];
//# sourceMappingURL=page-template.d.ts.map