import { Effect } from "effect"; import type { AuthorizationRequest, InfoNeededDetermination, PendedDetermination, UnsignedTerminalDetermination } from "./domain.js"; import { ProtocolError } from "./domain.js"; export type X278PolicyDecision = UnsignedTerminalDetermination | InfoNeededDetermination | PendedDetermination; export interface X278PolicyEvaluationContext { readonly authId: string; readonly ruleSetVersion: string; readonly now: Date; readonly authNumber: (authId: string) => string; readonly addDays: (date: string, days: number) => string; readonly daysFromNow: (days: number) => string; readonly questionnaireUrl: (id: string) => string; readonly createResumeToken: () => string; readonly createSubscription: (authId: string) => string; } export interface X278PolicyReviewContext extends X278PolicyEvaluationContext { readonly subscription: string; } export interface X278PolicyAdapter { readonly ruleSetVersion: string; readonly evaluate: (request: AuthorizationRequest, context: X278PolicyEvaluationContext) => X278PolicyDecision | Promise | Effect.Effect; readonly review?: (request: AuthorizationRequest, context: X278PolicyReviewContext) => UnsignedTerminalDetermination | Promise | Effect.Effect; } export declare const createPolicyEvaluationContext: (authId: string, ruleSetVersion: string, now?: Date) => X278PolicyEvaluationContext; export declare const createReferencePolicyAdapter: (ruleSetVersion?: string) => X278PolicyAdapter; export declare const resolvePolicyDecision: (result: A | Promise | Effect.Effect, reason: "policy-evaluation-failed" | "policy-review-failed") => Effect.Effect; //# sourceMappingURL=policy.d.ts.map