import { type ComponentType } from 'react';
import type { ReactElement } from 'react';
import type { PageProps, PageRegistryEntry, RegisterableComponent, SlotName } from './types';
/**
 * Page Registry - Central registry for SmartStack pages
 * Enables page overrides by clients and dynamic route resolution.
 *
 * Supports both regular and lazy-loaded components:
 *   PageRegistry.register('app.module', lazy(() => import('./Page')));
 *   PageRegistry.register('app.module', RegularComponent);
 */
declare class PageRegistryClass {
    private pages;
    /**
     * Register a page component (regular or lazy-loaded).
     * Used by SmartStack core (componentRegistry.generated.ts) and SDK clients.
     */
    register(key: string, component: RegisterableComponent, slots?: SlotName[]): void;
    /**
     * Get a page entry by key
     */
    get(key: string): PageRegistryEntry | undefined;
    /**
     * Resolve the component for a given key.
     * Returns the registered component or undefined if not found.
     */
    resolve(key: string): RegisterableComponent | undefined;
    /**
     * Get all registered pages
     */
    getAll(): PageRegistryEntry[];
    /**
     * Check if a page is registered
     */
    has(key: string): boolean;
    /**
     * Get available slots for a page
     */
    getSlots(key: string): SlotName[];
    /**
     * Get all registered keys (useful for validation)
     */
    keys(): string[];
}
export declare const PageRegistry: PageRegistryClass;
/**
 * Higher-order component that enables page override
 * Wraps a page component to check for client override
 */
export declare function withPageOverride<P extends PageProps>(pageKey: string, DefaultComponent: ComponentType<P>): ComponentType<P>;
/**
 * Hook to get the active page component (override or default)
 */
export declare function useActivePage(pageKey: string): RegisterableComponent | undefined;
/**
 * Component that renders an overridable page
 */
interface ExtendablePageProps {
    readonly pageKey: string;
    readonly defaultComponent: ComponentType<PageProps>;
    readonly params?: Record<string, string>;
}
export declare function ExtendablePage({ pageKey, defaultComponent: DefaultComponent, params }: ExtendablePageProps): ReactElement;
/**
 * Pre-defined page keys for SmartStack pages.
 * Convention: hierarchical code path matching backend componentKey.
 *
 * Implicit route suffixes (not in DB — auto-generated by DynamicRouter):
 *
 *   Entity sub-pages (require :id):
 *     *.detail         → /:id
 *     *.edit           → /:id/edit
 *     *.duplicate      → /:id/duplicate
 *     *.settings       → /:id/settings
 *     *.configure      → /:id/configure
 *     *.permissions    → /:id/permissions
 *     *.members        → /:id/members
 *     *.history        → /:id/history
 *     *.logs           → /:id/logs
 *     *.analytics      → /:id/analytics
 *     *.preview        → /:id/preview
 *     *.versions       → /:id/versions
 *     *.comments       → /:id/comments
 *     *.attachments    → /:id/attachments
 *     *.audit          → /:id/audit
 *     *.export         → /:id/export
 *     *.notifications  → /:id/notifications
 *     *.schedule       → /:id/schedule
 *     *.workflow       → /:id/workflow
 *     *.summary        → /:id/summary
 *     *.test           → /:id/test
 *     *.runs           → /:id/runs
 *
 *   Collection-level pages (no :id):
 *     *.create         → /create
 *     *.new            → /new
 *     *.import         → /import
 */
export declare const PAGE_KEYS: {
    readonly ADMIN_INDEX: "administration";
    readonly ADMIN_DASHBOARD: "administration.dashboard";
    readonly USERS_LIST: "administration.users.list";
    readonly USERS_DETAIL: "administration.users.detail";
    readonly USERS_DASHBOARD: "administration.users.dashboard";
    readonly USERS_GROUPS: "administration.users.groups";
    readonly USERS_GROUPS_DETAIL: "administration.users.groups.detail";
    readonly USERS_REFERENCES: "administration.users.references";
    readonly ROLES_LIST: "administration.permissions.roles";
    readonly ROLES_DETAIL: "administration.permissions.roles.detail";
    readonly PERMISSIONS_LIST: "administration.permissions.permissions";
    readonly PERMISSIONS_DETAIL: "administration.permissions.permissions.detail";
    readonly ASSIGNMENTS: "administration.permissions.assignments";
    readonly APPLICATIONS_INDEX: "administration.applications";
    readonly APPLICATIONS_DASHBOARD: "administration.applications.dashboard";
    readonly APPLICATIONS_LIST: "administration.applications.list";
    readonly APPLICATIONS_DETAIL: "administration.applications.detail";
    readonly AI_DASHBOARD: "administration.ai.dashboard";
    readonly AI_SETTINGS: "administration.ai.settings";
    readonly AI_SKILLS_LIST: "administration.ai.skills";
    readonly AI_SKILLS_DETAIL: "administration.ai.skills.detail";
    readonly AI_SKILLS_CREATE: "administration.ai.skills.create";
    readonly AI_SKILLS_EDIT: "administration.ai.skills.edit";
    readonly AI_BLOCKS_LIST: "administration.ai.skills.blocks";
    readonly AI_BLOCKS_DETAIL: "administration.ai.skills.blocks.detail";
    readonly AI_BLOCKS_CREATE: "administration.ai.skills.blocks.create";
    readonly AI_BLOCKS_EDIT: "administration.ai.skills.blocks.edit";
    readonly AI_MONITORING: "administration.ai.monitoring";
    readonly AI_AGENTS: "administration.ai.agents";
    readonly AI_AGENTS_DETAIL: "administration.ai.agents.detail";
    readonly AI_AGENTS_EDIT: "administration.ai.agents.edit";
    readonly WORKFLOWS_LIST: "administration.workflows.list";
    readonly WORKFLOWS_DETAIL: "administration.workflows.detail";
    readonly WORKFLOWS_CREATE: "administration.workflows.create";
    readonly WORKFLOWS_EDIT: "administration.workflows.edit";
    readonly WORKFLOWS_TRIGGERS: "administration.workflows.triggers";
    readonly WORKFLOWS_HISTORY: "administration.workflows.history";
    readonly EMAIL_TEMPLATES_LIST: "administration.workflows.email-templates";
    readonly EMAIL_TEMPLATES_DETAIL: "administration.workflows.email-templates.detail";
    readonly EMAIL_TEMPLATES_CREATE: "administration.workflows.email-templates.create";
    readonly EMAIL_TEMPLATES_EDIT: "administration.workflows.email-templates.edit";
    readonly SMS_TEMPLATES_LIST: "administration.workflows.email-templates.sms";
    readonly ENTRA_DASHBOARD: "administration.entra.dashboard";
    readonly ENTRA_GROUPS: "administration.entra.groups";
    readonly ENTRA_USERS: "administration.entra.users";
    readonly ENTRA_CONFLICTS: "administration.entra.conflicts";
    readonly ENTRA_SETTINGS: "administration.entra.settings";
    readonly TENANTS_DASHBOARD: "administration.tenants.dashboard";
    readonly TENANTS_LIST: "administration.tenants.list";
    readonly TENANTS_DETAIL: "administration.tenants.detail";
    readonly TENANTS_CREATE: "administration.tenants.create";
    readonly TENANTS_SETTINGS: "administration.tenants.settings";
    readonly TENANTS_TYPE_SETTINGS: "administration.tenants.type-settings";
    readonly TENANTS_TEMPLATE: "administration.tenants.template";
    readonly TENANTS_TEMPLATE_CREATE: "administration.tenants.template.create";
    readonly TENANTS_TEMPLATE_DETAIL: "administration.tenants.template.detail";
    readonly TENANTS_BUSINESS: "administration.tenants.list.enterprise";
    readonly TENANTS_PERSONAL: "administration.tenants.list.personal";
    readonly TENANTS_OTHER: "administration.tenants.list.other";
    readonly TENANTS_ACCESS_REQUESTS: "administration.tenants.access-requests";
    readonly ORGANISATIONS_LIST: "administration.tenants.organisations";
    readonly ORGANISATIONS_CREATE: "administration.tenants.organisations.create";
    readonly ORGANISATIONS_DETAIL: "administration.tenants.organisations.detail";
    readonly SETTINGS: "administration.configuration.settings";
    readonly SETTINGS_GENERAL: "administration.configuration.settings.general";
    readonly SETTINGS_FILE_UPLOAD: "administration.configuration.settings.file-upload";
    readonly SETTINGS_LEGAL_FILE: "administration.configuration.settings.legal-file";
    readonly APPSETTINGS: "administration.configuration.appsettings";
    readonly APPSETTINGS_INFRASTRUCTURE: "administration.configuration.appsettings.infrastructure";
    readonly APPSETTINGS_AUTHENTICATION: "administration.configuration.appsettings.authentication";
    readonly APPSETTINGS_LOGGING: "administration.configuration.appsettings.logging";
    readonly APPSETTINGS_EMAIL: "administration.configuration.appsettings.email";
    readonly APPSETTINGS_ENTRA: "administration.configuration.appsettings.entra";
    readonly LICENSE: "administration.configuration.license";
    readonly API_ACCOUNTS_LIST: "api.accounts.list";
    readonly API_ACCOUNTS_CREATE: "api.accounts.create";
    readonly API_ACCOUNTS_DETAIL: "api.accounts.detail";
    readonly API_CATALOG: "api.apis.catalog";
    readonly API_CATALOG_DETAIL: "api.apis.catalog.detail";
    readonly SUPPORT_DASHBOARD: "support.tickets";
    readonly TICKETS_LIST: "support.tickets.list";
    readonly TICKETS_DETAIL: "support.tickets.detail";
    readonly TICKETS_ESCALATION: "support.tickets.escalation";
    readonly TICKETS_NEW: "support.tickets.new";
    readonly MY_TICKETS_LIST: "support.my-tickets";
    readonly MY_TICKETS_DETAIL: "support.my-tickets.detail";
    readonly MY_TICKETS_CREATE: "support.my-tickets.create";
    readonly SUPPORT_SLA: "support.admin.sla";
    readonly SUPPORT_TEMPLATES: "support.admin.templates";
    readonly SUPPORT_PERMISSIONS: "support.admin.permissions";
    readonly SUPPORT_ASSIGNMENT: "support.assignment";
    readonly SUPPORT_ASSIGNMENT_SKILLS: "support.assignment.skills";
    readonly SUPPORT_ASSIGNMENT_WORKLOAD: "support.assignment.workload";
    readonly MYSPACE_DASHBOARD: "myspace.dashboard";
    readonly USER_PROFILE: "myspace.profile";
    readonly USER_PREFERENCES: "myspace.preferences";
    readonly MYSPACE_TENANTS: "myspace.tenants.workspaces";
    readonly MYSPACE_ACCESS_REQUESTS: "myspace.tenants.access-requests";
    readonly MYSPACE_PORTAL: "myspace.portal";
    readonly NOTIFICATIONS: "notifications";
    readonly APPLICATIONS_HUB: "applications";
};
export type PageKey = (typeof PAGE_KEYS)[keyof typeof PAGE_KEYS];
export {};
//# sourceMappingURL=PageRegistry.d.ts.map