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

    Constructors

    Properties

    Methods

    • For each requested product, return the rail-level set of supported source currencies and country codes.

      sourceCurrencies are extracted from product_route_version.matcher (the route's own gate). countryCodes are extracted from each route's ADMIN-tier APPROVE activation rule matchers — route matchers don't carry country constraints in practice. Both use b2b.matcher_extract_literals (recursive plpgsql walker that pulls is / is_one_of literals; none / is_not / ranges are unbounded) and the b2b.literal_union aggregate to fold per-route extractions into one capability summary per product.

      A field is undefined when at least one contributing matcher placed no enumerable constraint on it (ALWAYS, the field didn't appear, or any unsupported operator). Callers surface that as "no rail-level restriction"; an empty array would mean "the rail supports nothing".

      Customer-tier rules are intentionally excluded — this is a product- level capability summary, not a per-customer authorization check.

      Parameters

      • productNames: readonly (
            | "organization.v1"
            | "identity.v1"
            | "card.physical_card.v1"
            | "card.virtual_card.v1"
            | "deposit.us_cash.v1"
            | "deposit.rtp.v1"
            | "deposit.us_bank_ach.v1"
            | "deposit.ach_credit.v1"
            | "deposit.us_wire.v1"
            | "deposit.swift_wire.v1"
            | "transfer.redemption.v1"
            | "swap.v1"
            | "withdraw.blockchain.v1"
            | "withdraw.ke_bank.v1"
            | "withdraw.ke_momo.v1"
            | "withdraw.mx_bank_spei.v1"
            | "withdraw.swift_wire.v1"
            | "withdraw.tg_momo.v1"
            | "withdraw.us_bank_ach.v1"
            | "withdraw.us_instant.v1"
            | "withdraw.us_wire.v1"
            | "withdraw.ach_pull.v1"
            | "withdraw.us_wire_drawdown.v1"
            | "account.virtual-account.v1"
            | "deposit.*"
            | "withdraw.*"
        )[]

      Returns Promise<
          Record<
              string,
              {
                  countryCodes: string[]
                  | undefined;
                  sourceCurrencies: string[] | undefined;
              },
          >,
      >

    • Parameters

      • __namedParameters: {
            customerId: string;
            now?: Instant;
            orderBy?: "createdAt" | "priority";
            page?: number;
            pageSize?: number;
            productName:
                | "organization.v1"
                | "identity.v1"
                | "card.physical_card.v1"
                | "card.virtual_card.v1"
                | "deposit.us_cash.v1"
                | "deposit.rtp.v1"
                | "deposit.us_bank_ach.v1"
                | "deposit.ach_credit.v1"
                | "deposit.us_wire.v1"
                | "deposit.swift_wire.v1"
                | "transfer.redemption.v1"
                | "swap.v1"
                | "withdraw.blockchain.v1"
                | "withdraw.ke_bank.v1"
                | "withdraw.ke_momo.v1"
                | "withdraw.mx_bank_spei.v1"
                | "withdraw.swift_wire.v1"
                | "withdraw.tg_momo.v1"
                | "withdraw.us_bank_ach.v1"
                | "withdraw.us_instant.v1"
                | "withdraw.us_wire.v1"
                | "withdraw.ach_pull.v1"
                | "withdraw.us_wire_drawdown.v1"
                | "account.virtual-account.v1"
                | "deposit.*"
                | "withdraw.*";
        } & MatcherCriteria
        • customerId: string
        • Optionalnow?: Instant

          Wall-clock instant the resolver evaluates against. Each candidate route's matcher sees dayOfWeek / minuteOfDay computed from this instant converted to that route's data.cutoffTimezone — so a "before 4:15 PM" cutoff fires at different UTC instants for routes in different timezones. Defaults to Temporal.Now.instant().

        • OptionalorderBy?: "createdAt" | "priority"
        • Optionalpage?: number
        • OptionalpageSize?: number
        • productName:
              | "organization.v1"
              | "identity.v1"
              | "card.physical_card.v1"
              | "card.virtual_card.v1"
              | "deposit.us_cash.v1"
              | "deposit.rtp.v1"
              | "deposit.us_bank_ach.v1"
              | "deposit.ach_credit.v1"
              | "deposit.us_wire.v1"
              | "deposit.swift_wire.v1"
              | "transfer.redemption.v1"
              | "swap.v1"
              | "withdraw.blockchain.v1"
              | "withdraw.ke_bank.v1"
              | "withdraw.ke_momo.v1"
              | "withdraw.mx_bank_spei.v1"
              | "withdraw.swift_wire.v1"
              | "withdraw.tg_momo.v1"
              | "withdraw.us_bank_ach.v1"
              | "withdraw.us_instant.v1"
              | "withdraw.us_wire.v1"
              | "withdraw.ach_pull.v1"
              | "withdraw.us_wire_drawdown.v1"
              | "account.virtual-account.v1"
              | "deposit.*"
              | "withdraw.*"

      Returns Promise<ResolvedRoute[]>