import { PyrionNavAction, PyrionNavLink, PyrionRailModuleLink, PyrionTertiaryEntry } from './pyrionLayoutNavTypes'; type LinkLike = PyrionNavLink & { sublinks?: PyrionTertiaryEntry[]; }; /** * Un link está seleccionado si: * 1. path === pathname, o * 2. algún relatedPath es prefijo de pathname, o * 3. algún sublink está seleccionado (recursivo) */ export declare const isLinkSelected: (link: LinkLike, pathname: string) => boolean; /** Una action está seleccionada si su id === activeActionId */ export declare const isActionSelected: (action: Pick, activeActionId?: string) => boolean; export declare const hasRoutablePath: (module: PyrionRailModuleLink) => boolean; /** Snapshot del click en un módulo del rail: id clickeado + pathname vigente en ese momento. */ export type InternalActiveModule = { id: string; pathname: string; }; /** * Módulo activo (modo no controlado): * - controlado → `controlledId` * - click reciente sobre un organizador (sin `path`) mientras el `pathname` * no cambió desde ese click → el click gana (el match de ruta sería "viejo", * de antes del click, no una navegación real posterior) * - match de ruta más específico (prefijo más largo) entre módulos con `path`/`relatedPaths` * - sin match de ruta → `internalId` si es un organizador cuyo pathname sí cambió después * (ej. el usuario navegó a uno de sus propios links) * - sin match ni click vigente → `undefined` (ningún módulo activo; estado válido) */ export declare const resolveActiveModule: (allModules: PyrionRailModuleLink[], pathname: string, controlledId?: string, internal?: InternalActiveModule) => string | undefined; export {};