import { AllOptionAccessor } from '../Shared/types'; import { AuthSession, TAuthUser, TCompany, TSystem, TUser } from './pyrionHubTypes'; export type MetadataFallback = unknown extends T ? `metadata${string}` : never; export type AvailableData = { company: TCompany; user: TUser; system?: TSystem; metadata?: TAppMetadata; }; export type SessionAvailableData = { company: TCompany; user: TAuthUser; metadata?: TAppMetadata; }; export type UserCardAccesors = AllOptionAccessor, string> | MetadataFallback; export type SessionCardAccesors = AllOptionAccessor, string> | MetadataFallback; export interface UserCardOptions { /** Default: `${name} ${surname}`.trim() */ titleSlot?: UserCardAccesors; /** Sin configurar: solo `company.name`. Accessor único: reemplaza el 2do segmento. * Tupla: ambos segmentos independientes. */ secondarySlot?: UserCardAccesors | [UserCardAccesors, UserCardAccesors]; } export interface SessionCardOptions { titleSlot?: SessionCardAccesors; secondarySlot?: SessionCardAccesors | [SessionCardAccesors, SessionCardAccesors]; /** * URL de la sub-imagen (badge de compañía) del avatar de cada sesión en * "Cambiar cuenta". Sin configurar: sin badge. Resuelve contra * SessionAvailableData ({ company, user, metadata }) — ej. "metadata.company.logo". */ subImageUrlAccessor?: SessionCardAccesors; } export interface ModuleNameOptions { /** Default: DEFAULT_MODULE_NAME_ACCESSOR ("metadata.area.name") */ secondarySlot?: UserCardAccesors; } export declare function composeSubtitleSegments(segment1?: string | null, segment2?: string | null): string; export declare function resolveAccessorValue(data: TData, accessor?: AllOptionAccessor | MetadataFallback): string | undefined; /** @deprecated Usar resolveAccessorValue */ export declare function resolveSecondarySlot(data: TData, accessor?: AllOptionAccessor | MetadataFallback): string | undefined; export declare function resolveUserCardTitle(data: AvailableData, options?: UserCardOptions): string; export declare function resolveUserCardSubtitle(data: AvailableData, options?: UserCardOptions): string; export declare function resolveSessionCardTitle(data: SessionAvailableData, options?: SessionCardOptions): string; export declare function resolveSessionCardSubtitle(data: SessionAvailableData, options?: SessionCardOptions): string; export declare function resolveSessionCardSubImageUrl(data: SessionAvailableData, options?: SessionCardOptions): string | undefined; export declare function sessionAvailableData(session: AuthSession): SessionAvailableData; /** Fallback por defecto para el nombre de módulo/área en sidebar cuando no hay módulo activo. */ export declare const DEFAULT_MODULE_NAME_ACCESSOR: "metadata.area.name";