@cfxlabsinc/b2b-services
    Preparing search index...
    Index
    • Parameters

      • args: { customerId: string; id: string }

      Returns Promise<
          {
              ok: true;
              value: | {
                  accountNumber: string;
                  achDepositInstructions: AchDepositInstructions
                  | null;
                  createdAt: Date;
                  data:
                      | {
                          provider: "VICTOR";
                          victorId: string;
                          victorLedgerProgramId: string;
                      }
                      | {
                          entityId: string;
                          entityInput?: {
                              businessAddress1: string;
                              businessAddress2?: string;
                              businessCity: string;
                              businessCountry: string;
                              businessName: string;
                              businessPostalCode: string;
                              businessStateProvinceRegion?: string;
                              businessType?: | "b_corporation"
                              | "c_corporation"
                              | "close_corporation"
                              | "cooperative"
                              | "general_partnership"
                              | "limited_liability_company"
                              | "limited_partnership"
                              | "nonprofit_corporation"
                              | "s_corporation"
                              | "sole_proprietorship"
                              | "non_us";
                              contactFirstName: string;
                              contactLastName: string;
                              email: string;
                              incorporationDate?: string;
                              phone?: string;
                              phoneCountry?: string;
                              taxNumber?: string;
                              websiteUrl?: string;
                          };
                          fundingInstructions: | {
                              accountHolderAddress1?: string
                              | null;
                              accountHolderAddress2?: string | null;
                              accountHolderCity?: string | null;
                              accountHolderCountry?: string | null;
                              accountHolderName: string | null;
                              accountHolderPostalCode?: string | null;
                              accountHolderStateProvinceRegion?: string | null;
                              accountNumber: string | null;
                              bankAddress1?: string | null;
                              bankAddress2?: string | null;
                              bankCity?: string | null;
                              bankCountry: string | null;
                              bankName: string | null;
                              bankPostalCode?: string | null;
                              bankStateProvinceRegion?: string | null;
                              currency: string | null;
                              message?: string | null;
                              qr?: { base64Image: ...; expirationDate: ...; qrDecoded: ... } | null;
                              reference: string | null;
                              routingCode: string | null;
                              routingCodeAlternate?: string | null;
                              swiftBic: string | null;
                              taxNumber?: string | null;
                              type: string | null;
                          }
                          | null;
                          programId: string;
                          provider: "ROUTE_FUSION";
                          walletId: string;
                      }
                      | null;
                  deletedAt: Date
                  | null;
                  id: string;
                  name: string | null;
                  providerDepositInstructions: ProviderDepositInstructions | null;
                  providerId: string;
                  providerName: string;
                  providerType: "ROUTE_FUSION" | "VICTOR" | "BIVO" | "MANUAL";
                  referenceId: string | null;
                  routingNumber: string;
                  rtpDepositInstructions: RtpDepositInstructions | null;
                  status: "ACTIVE" | "FAILED" | "PENDING" | "INACTIVE";
                  swiftDepositInstructions:
                      | (
                          | Omit<UsdSwiftWireInstructionData, "swiftField70Prefix"> & {
                              receivingEntityName: string;
                              swiftField70: SwiftField70Prefix;
                          }
                          | Omit<ForeignSwiftWireInstructionData, "swiftField70Prefix"> & {
                              receivingEntityName: string;
                              swiftField70: SwiftField70Prefix;
                          }
                      )[]
                      | null;
                  type: "US_DDA"
                  | "US_DEPOSIT";
                  updatedAt: Date;
                  walletAddress: Address;
                  wireDepositInstructions: UsWireDepositInstructions | null;
              } & { customerId: string; entityId: string; ledgerAccountId: string }
              | null;
          },
      >

    • Busts the search cache for a specific customer. Called by the colocated writer (VictorVirtualAccountService) after create / update / delete so that only the affected customer's cached searches are dropped, leaving all other customers' caches intact.

      Parameters

      • arg: { customerId: string }

      Returns Promise<void>

    • Resolves account.virtual-account.v1 activation for a specific entity (the ledger account's owning identity or organization), loading every Victor precondition the matcher inspects (customer-level Victor enrollment, ledger-account presence) so callers don't have to gather them one-by-one.

      Pass providerType + ledgerAccountId to signal creation/mutation intent — the matcher only enforces Dart-parity preconditions when virtualAccountProvider === "VICTOR" (see migration 20260418004128_virtual_account_victor_preconditions). Read-only callers can omit both; the matcher falls through to the non-VICTOR catch-all rule.

      Parameters

      • args: {
            customerId: string;
            entityId: string;
            ledgerAccountId: string;
            providerType?: "ROUTE_FUSION" | "VICTOR" | "BIVO" | "MANUAL";
        }

      Returns Promise<{ ok: true; value: void } | { error: ServiceError; ok: false }>

    • Parameters

      • args: {
            customerId: string;
            ids?: string[];
            ledgerAccountAddresses?: Address[];
            ledgerAccountIds?: string[];
            page?: number;
            pageSize?: number;
        }

      Returns Promise<
          {
              ok: true;
              value: {
                  hasNext: boolean;
                  items: VirtualAccountSearchItem[];
                  total: number;
              };
          },
      >