@cfxlabsinc/b2b-services
    Preparing search index...
    TransactionApprovalRequirements:
        | { status: "NONE" }
        | { groups: TransactionApprovalRequirementGroup[]; status: "REQUIRED" }
        | {
            rules: { ruleId: string; ruleName: string }[];
            status: "NEEDS_ACCOUNT_SOURCE";
        }
        | {
            status: "UNSATISFIABLE";
            steps: { ruleId: string; ruleName: string; stepIndex: number }[];
        }

    Type Declaration

    • { status: "NONE" }

      No active rule matches: the payment goes through as it does today.

    • { groups: TransactionApprovalRequirementGroup[]; status: "REQUIRED" }
    • {
          rules: { ruleId: string; ruleName: string }[];
          status: "NEEDS_ACCOUNT_SOURCE";
      }

      D2: a rule matches but the source is a self-custody wallet, so an approver could not execute it (the rail needs the requester's signed transaction).

    • {
          status: "UNSATISFIABLE";
          steps: { ruleId: string; ruleName: string; stepIndex: number }[];
      }

      Some step has no eligible approver other than the requester (D4), or the steps cannot each get a distinct approver.