/** * Configuration for requesting a transaction decision. * * Pass to `Trulioo.getDecision(config)` to override default weights and thresholds. * When omitted, the server uses account-level defaults. */ export interface DecisionConfig { /** Per-capability weight overrides (0.0 to 1.0). Missing = use account defaults (equal weight). */ weights?: DecisionWeights; /** Minimum score to produce ACCEPT decision. Default: 0.6 */ acceptThreshold?: number; /** Minimum score to produce REVIEW decision. Default: 0.3 */ reviewThreshold?: number; /** * When true, wait for all in-progress capabilities (EID, Data) to reach terminal state * before requesting the decision. Prevents partial decisions with signalsExcluded. * * Default: true. Set to false to get the decision immediately from available signals. */ awaitCapabilities?: boolean; } /** Weight allocation per capability (0.0 to 1.0 each). */ export interface DecisionWeights { device?: number; eid?: number; data?: number; document?: number; } /** Final transaction decision response aggregating all capability signals. */ export interface DecisionResponse { transactionId: string; decision: DecisionOutcome; confidence: number; reasoning: string; signals: DecisionSignals; appliedWeights: Record; thresholds: { accept: number; review: number; }; /** Capabilities that contributed signals to this decision. */ signalsEvaluated: string[]; /** Capabilities that had no signals available. */ signalsExcluded: string[]; } /** Possible decision outcomes. */ export type DecisionOutcome = "ACCEPT" | "REVIEW" | "DECLINE" | "INSUFFICIENT_DATA"; /** Per-capability signal summaries available at decision time. */ export interface DecisionSignals { device?: DeviceSignal; eid?: EidDecisionSignal; data?: DataDecisionSignal; document?: DocumentSignal; } export interface DeviceSignal { collected: boolean; score: number; riskIndicators: string[]; } export interface EidDecisionSignal { outcome: string; match: boolean; score: number; } export interface DataDecisionSignal { outcome: string; recordMatch: boolean; watchlistClear: boolean; fraudFlag: boolean; isDeceased: boolean; score: number; } export interface DocumentSignal { decision: string; score: number; } export declare const DECISION_ENDPOINTS: { /** GET or POST /transactions/{transactionId}/decision */ readonly decision: (transactionId: string) => string; /** Allowed paths for session client. Uses wildcard for path matching. */ readonly allPaths: string[]; }; export type DecisionRequest = DecisionConfig;