import { SchemaBase } from './dsl.js'; import { FrontAppSchema } from './project.js'; import type { PageDef } from './page-def.js'; import type { RouteDataSchema } from './route.js'; export declare function getRegisteredPages(): ReadonlySet; export declare function clearRegisteredPages(): void; /** Standalone page definition. A page is a shared value object: it belongs to * exactly one frontend app. Actions live in the page skeleton (PageDef.actions), * not on the page itself — the page only carries what the flow/topology needs. */ export interface PageSchema extends SchemaBase { /** Short display name for topology diagrams. */ label: string; /** The frontend app this page belongs to (shared instance from project.config). */ app: FrontAppSchema; /** Full page skeleton definition (optional). */ pageDef?: PageDef; /** Route params this page expects (e.g. detail page expects productId). */ params?: RouteDataSchema; } export declare function definePage(schema: { name: string; label: string; description?: string; app: FrontAppSchema; pageDef?: PageDef; params?: RouteDataSchema; }): PageSchema; /** Page with bottom tab navigation. tabs collects the child pages reachable via tab switch. */ export interface TabPageSchema extends PageSchema { tabs: PageSchema[]; } export declare function defineTabPage(schema: { name: string; label: string; description?: string; app: FrontAppSchema; tabs: PageSchema[]; pageDef?: PageDef; params?: RouteDataSchema; }): TabPageSchema; /** A page node in a page-driven flow: every node is a page, and a page belongs to an app. */ export interface Page extends SchemaBase { /** Short display name for topology diagrams. */ label?: string; /** The frontend app this page belongs to (shared instance from project.config). */ app: FrontAppSchema; } export declare function page(app: FrontAppSchema, name: string, description?: string, label?: string): Page;