import { RequestTypeConfig } from './types'; /** * Contexto del viewer para decidir qué tipos de solicitud puede ver/enviar. * Lo arma la app desde su estado de auth (AuthService). */ export interface RequestViewerContext { /** Hay sesión activa. */ isAuthenticated: boolean; /** * Usuario activo/verificado (claim `verified` del token = Status ACTIVE). * Solo relevante si isAuthenticated. Si se omite, se asume verificado * (en la práctica el signin solo emite tokens a cuentas ACTIVE). */ isVerified?: boolean; /** Org activa del usuario (para tipos ORG/INTERNAL). */ activeOrg?: string; } /** * ¿Este viewer puede ENVIAR una solicitud de este tipo? Espeja el gate * server-side (`backend/.../request: submissionTargetOrg`). Es solo UX — el * backend siempre valida —, pero evita que cada app reimplemente (mal) el filtro: * * - PUBLIC → cualquiera (anónimo solo si allowAnonymous). * - AUTHENTICATED → logueado + verificado (cross-org). * - ORG/INTERNAL → miembro de la org dueña (activeOrg === type.orgId). */ export declare function canSubmitRequestType(type: RequestTypeConfig, ctx: RequestViewerContext): boolean; /** Filtra el catálogo a los tipos que el viewer puede enviar. */ export declare function selectableRequestTypes(types: RequestTypeConfig[], ctx: RequestViewerContext): RequestTypeConfig[]; /** * Modo de envío a usar: `'anonymous'` solo para tipos PUBLIC + allowAnonymous sin * sesión; en el resto `'authenticated'`. Mapea a * `RequestService.createAnonymousRequest` vs `createRequest`. */ export declare function requestSubmitMode(type: RequestTypeConfig, ctx: RequestViewerContext): 'anonymous' | 'authenticated';