import type { CanonicalHumanIdentityStatus, CanonicalHumanLoginBindingStatus, CanonicalHumanRecoveryState } from "@opengeni/contracts/canonical-human-identities"; export type CanonicalHumanSessionAdmissionIntent = "ordinary_session" | "binding_synchronization" | "recovery_completion"; export type CanonicalHumanIdentityAdmissionSnapshot = { readonly id: string; readonly status: CanonicalHumanIdentityStatus; readonly recoveryState: CanonicalHumanRecoveryState; readonly activeLoginBindingId: string | null; }; export type CanonicalHumanLoginBindingAdmissionSnapshot = { readonly id: string; readonly identityId: string; readonly status: CanonicalHumanLoginBindingStatus; }; export type CanonicalHumanSessionAdmissionDenialCode = "identity_binding_mismatch" | "ordinary_identity_not_active" | "ordinary_identity_not_ready" | "ordinary_binding_missing" | "ordinary_binding_not_active" | "ordinary_active_binding_missing" | "recovery_identity_not_required" | "recovery_state_not_required" | "recovery_active_binding_present" | "recovery_binding_missing" | "recovery_binding_not_pending"; export type CanonicalHumanSessionAdmissionDecision = { allowed: true; intent: CanonicalHumanSessionAdmissionIntent; } | { allowed: false; intent: CanonicalHumanSessionAdmissionIntent; code: CanonicalHumanSessionAdmissionDenialCode; }; export declare function decideCanonicalHumanSessionAdmission(input: { intent: CanonicalHumanSessionAdmissionIntent; identity: CanonicalHumanIdentityAdmissionSnapshot; binding: CanonicalHumanLoginBindingAdmissionSnapshot | null; }): CanonicalHumanSessionAdmissionDecision;