import type { FieldsDefinition, Type } from './Type.js';
export interface PageData {
    type: Type;
    fields: Record<string, any>;
}
export type Page<Children extends Record<string, Page> = Record<string, never>> = Children & {
    [Page.Data]: PageData;
};
export declare namespace Page {
    const Data: unique symbol;
    function data(page: Page): PageData;
    function isPage(page: any): page is Page;
}
export interface PageConfig<Definition, Children> {
    type: Type<Definition>;
    fields?: Partial<Type.Infer<Definition>>;
    children?: Children;
}
export declare function page<Fields extends FieldsDefinition, Children extends Record<string, Page>>(config: PageConfig<Fields, Children>): Page<Children>;
