import type { Navigation, ScreenDefinition } from "../types";
import type { PageTemplate } from "../types/page-template";
/**
 * Resolve all page references and local screens into a unified screen list.
 *
 * This function merges:
 * 1. Screen definitions from page_refs (shared templates)
 * 2. Local screen definitions (for backwards compatibility and custom screens)
 *
 * When a screen_id appears in both page_refs and screens, the local screen
 * takes precedence (allows local overrides of template pages).
 *
 * @param navigation - The navigation configuration
 * @returns A unified array of ScreenDefinition objects
 *
 * @example
 * ```ts
 * const navigation: Navigation = {
 *   definition_id: 1,
 *   id: 1,
 *   name: "Main Nav",
 *   navigation_items: [...],
 *   screens: [
 *     // Local custom screen
 *     { id: 1, slug: "home", name: "Home", component_tree: [...] }
 *   ],
 *   page_refs: [
 *     // Reference to shared messaging template
 *     { page_template_id: "core-messaging", screen_id: 2 }
 *   ],
 * };
 *
 * const allScreens = resolveNavigationPages(navigation);
 * // Returns: [home screen, messaging screen from template]
 * ```
 */
export declare function resolveNavigationPages(navigation: Readonly<Navigation>): ScreenDefinition[];
/**
 * Get all available page templates for use in navigation.
 *
 * @returns Array of page templates from the registry
 */
export declare function getAvailablePageTemplates(): PageTemplate[];
/**
 * Get core page templates that are required for basic functionality.
 *
 * @returns Array of core page templates
 */
export declare function getCorePageTemplates(): PageTemplate[];
/**
 * Get optional page templates that can be added to navigation.
 *
 * @returns Array of optional (non-core) page templates
 */
export declare function getOptionalPageTemplates(): PageTemplate[];
/**
 * Check if a navigation has all required core pages.
 *
 * @param navigation - The navigation to check
 * @returns Object with validation result and missing page IDs
 */
export declare function validateNavigationPages(navigation: Readonly<Navigation>): {
    readonly valid: boolean;
    readonly missingCorePages: readonly string[];
};
//# sourceMappingURL=resolve-pages.d.ts.map