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

    Hierarchy (View Summary)

    Index
    db: B2bDatabase
    instance: (...args: []) => BankInternalTransferService = ...

    The process service, starting transfers on the queue the temporal namespace names.

    • Writes the memo and adds one to executorClaims while the transfer is PENDING, answering this attempt's count. One statement, so a claim that waits on a FAILED write's row lock claims nothing.

      Parameters

      • __namedParameters: { id: string; tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations> }

      Returns Promise<
          {
              ok: true;
              value: | { claim: number; claimed: true }
              | { claimed: false; status: "COMPLETED" | "FAILED" };
          },
      >

    • Parameters

      • args: {
            amount: BigNumber;
            depositId?: string;
            source?: { accountNumber: string; routingNumber: string };
            target?: { accountNumber: string; routingNumber: string };
            tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>;
            withdrawalId?: string;
        }
        • amount: BigNumber
        • OptionaldepositId?: string
        • Optionalsource?: { accountNumber: string; routingNumber: string }

          The Victor book-transfer instruction; omit when pairing existing bank rows.

        • Optionaltarget?: { accountNumber: string; routingNumber: string }
        • Optionaltx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>

          Inside a caller's transaction the caller publishes created after commit.

        • OptionalwithdrawalId?: string

      Returns Promise<{ ok: true; value: BankInternalTransfer }>

    • Marks failed a portal transfer never sent, a FIB transfer whose batch has no file, or a deposit's Victor sweep Victor has no transfer for, once its workflow closed SWEEP_SETTLE_TIME ago or, with no run, it is orphaned (orphanedDepositSweepSql). Each refusal is decided under the FAILED write's locks, so a transfer whose money may have left is never failed. A retry by the operator who failed it returns the transfer and announces FAILED again.

      Parameters

      • args: { failedBy: string; failureReason: string; id: string }

      Returns Promise<
          | { ok: true; value: BankInternalTransfer }
          | { error: FailError; ok: false },
      >

    • Creates an operator's transfer as PENDING and starts its workflow under the transfer id. A retry of the same request returns the same transfer with created: false and starts the workflow again, which Temporal refuses if it runs.

      Parameters

      • args: {
            amount: BigNumber;
            idempotencyKey: string;
            initiatedBy: string;
            note?: string;
            sourceBankAccountId: string;
            targetBankAccountId: string;
        }

      Returns Promise<
          | { ok: true; value: InitiatedTransfer }
          | { error: InitiateError; ok: false },
      >

    • Records a payout's RouteFusion ticket once on a PENDING transfer and answers with the ticket that holds the record, transferId or an earlier attempt's. One statement, so two attempts cannot each record their own, and it waits on a FAILED write's row lock, so a fail and a record cannot both apply.

      Parameters

      • __namedParameters: {
            id: string;
            transferId: string;
            tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>;
        }

      Returns Promise<
          | { ok: true; value: string }
          | { error: RecordRouteFusionTransferError; ok: false },
      >

    • The kind and fund class at each end, the executor, and the source's implied balance (null when unmeasured).

      Parameters

      • args: { sourceBankAccountId: string; targetBankAccountId: string }

      Returns Promise<
          | {
              ok: true;
              value: {
                  executor: Executor;
                  routeFusionSource: | {
                      email: string;
                      entityId: string;
                      walletId: string;
                  }
                  | null;
                  source: ResolvedEnd;
                  sourceImpliedBalance: BigNumber
                  | null;
                  target: ResolvedEnd;
                  wireInstruction: WireBatchBankInternalTransferInstruction | null;
              };
          }
          | { error: ResolveError; ok: false },
      >

    • Parameters

      • __namedParameters: {
            amount?: BigNumber;
            createdAt?: DbTimestampCriteria;
            depositId?: string;
            executors?: Executor[];
            hasExecutor?: true;
            idempotencyKeys?: string[];
            ids?: string[];
            idsIgnoringCase?: string[];
            legAccount?: Pick<
                BankTransaction,
                "type"
                | "routingNumber"
                | "accountNumber",
            >;
            legIds?: string[];
            now?: Date;
            orderBy?: DbOrderByCriterion<
                Omit<
                    PgTableWithColumns<
                        {
                            columns: {
                                countsInImpliedBalance: PgBuildColumn<
                                    "bank_internal_transfer",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: boolean;
                                        dataType: "boolean";
                                        driverParam: boolean;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                createdAt: PgBuildColumn<
                                    "bank_internal_transfer",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                data: PgBuildColumn<
                                    "bank_internal_transfer",
                                    Set$Type<
                                        SetHasDefault<(...)>,
                                        {
                                            amount: ...;
                                            createdPublished?: ...;
                                            depositId?: ...;
                                            executor?: ...;
                                            executorClaims?: ...;
                                            failedBy?: ...;
                                            failureReason?: ...;
                                            initiatedBy?: ...;
                                            memo?: ...;
                                            mintRefusals?: ...;
                                            note?: ...;
                                            providerReference?: ...;
                                            resendRefusals?: ...;
                                            routeFusionBeneficiaryId?: ...;
                                            routeFusionSource?: ...;
                                            routeFusionTransferId?: ...;
                                            source?: ...;
                                            sourceBankAccountId?: ...;
                                            sourceVirtualAccountId?: ...;
                                            target?: ...;
                                            targetBankAccountId?: ...;
                                            targetVirtualAccountId?: ...;
                                            victorCounterpartyId?: ...;
                                            victorTransactionId?: ...;
                                            wireBatchAmount?: ...;
                                            wireBatchId?: ...;
                                            wireInstruction?: ...;
                                            withdrawalId?: ...;
                                        },
                                    >,
                                    {
                                        data: {
                                            amount: ...;
                                            createdPublished?: ...;
                                            depositId?: ...;
                                            executor?: ...;
                                            executorClaims?: ...;
                                            failedBy?: ...;
                                            failureReason?: ...;
                                            initiatedBy?: ...;
                                            memo?: ...;
                                            mintRefusals?: ...;
                                            note?: ...;
                                            providerReference?: ...;
                                            resendRefusals?: ...;
                                            routeFusionBeneficiaryId?: ...;
                                            routeFusionSource?: ...;
                                            routeFusionTransferId?: ...;
                                            source?: ...;
                                            sourceBankAccountId?: ...;
                                            sourceVirtualAccountId?: ...;
                                            target?: ...;
                                            targetBankAccountId?: ...;
                                            targetVirtualAccountId?: ...;
                                            victorCounterpartyId?: ...;
                                            victorTransactionId?: ...;
                                            wireBatchAmount?: ...;
                                            wireBatchId?: ...;
                                            wireInstruction?: ...;
                                            withdrawalId?: ...;
                                        };
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                externalId: PgBuildColumn<
                                    "bank_internal_transfer",
                                    SetHasRuntimeDefault<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                id: PgBuildColumn<
                                    "bank_internal_transfer",
                                    HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: "byDefault";
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                idempotencyKey: PgBuildColumn<
                                    "bank_internal_transfer",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                status: PgBuildColumn<
                                    "bank_internal_transfer",
                                    SetHasDefault<Set$Type<(...), (...)>>,
                                    {
                                        data: (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                updatedAt: PgBuildColumn<
                                    "bank_internal_transfer",
                                    SetHasDefault<SetHasDefault<(...)>>,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                withdrawalExternalId: PgBuildColumn<
                                    "bank_internal_transfer",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                                withdrawalId: PgBuildColumn<
                                    "bank_internal_transfer",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_internal_transfer";
                                    },
                                >;
                            };
                            dialect: "pg";
                            isAlias: false;
                            name: "bank_internal_transfer";
                            schema: "b2b";
                        },
                    >,
                    "enableRLS",
                >,
                "createdAt"
                | "updatedAt",
            >[];
            page?: number;
            pageSize?: number;
            sourceAccountNumber?: string;
            stale?: true;
            status?: "PENDING" | "COMPLETED" | "FAILED";
            tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>;
            updatedAt?: DbTimestampCriteria;
            withdrawalId?: string;
            withoutLeg?: "CREDIT" | "DEBIT";
        }
        • Optionalamount?: BigNumber

          Transfers whose data.amount equals this, compared as numbers.

        • OptionalcreatedAt?: DbTimestampCriteria
        • OptionaldepositId?: string
        • Optionalexecutors?: Executor[]

          Transfers whose recorded executor is one of these. An empty list matches none.

        • OptionalhasExecutor?: true

          Transfers the operator workflow started; the leg guard leaves the rest alone.

        • OptionalidempotencyKeys?: string[]

          Transfers an operator initiated under these idempotency keys.

        • Optionalids?: string[]
        • OptionalidsIgnoringCase?: string[]

          Like ids, ignoring case: a rail can upper-case the id it carries in free text.

        • OptionallegAccount?: Pick<BankTransaction, "type" | "routingNumber" | "accountNumber">

          Transfers whose end on the side type names (source for a DEBIT, target for a CREDIT) is this account, as attachLeg checks a leg's account.

        • OptionallegIds?: string[]

          Transfers with any leg among these bank transactions.

        • Optionalnow?: Date

          The clock deadline and the stale filter are read at. Defaults to now.

        • OptionalorderBy?: DbOrderByCriterion<
              Omit<
                  PgTableWithColumns<
                      {
                          columns: {
                              countsInImpliedBalance: PgBuildColumn<
                                  "bank_internal_transfer",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: boolean;
                                      dataType: "boolean";
                                      driverParam: boolean;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              createdAt: PgBuildColumn<
                                  "bank_internal_transfer",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              data: PgBuildColumn<
                                  "bank_internal_transfer",
                                  Set$Type<
                                      SetHasDefault<(...)>,
                                      {
                                          amount: ...;
                                          createdPublished?: ...;
                                          depositId?: ...;
                                          executor?: ...;
                                          executorClaims?: ...;
                                          failedBy?: ...;
                                          failureReason?: ...;
                                          initiatedBy?: ...;
                                          memo?: ...;
                                          mintRefusals?: ...;
                                          note?: ...;
                                          providerReference?: ...;
                                          resendRefusals?: ...;
                                          routeFusionBeneficiaryId?: ...;
                                          routeFusionSource?: ...;
                                          routeFusionTransferId?: ...;
                                          source?: ...;
                                          sourceBankAccountId?: ...;
                                          sourceVirtualAccountId?: ...;
                                          target?: ...;
                                          targetBankAccountId?: ...;
                                          targetVirtualAccountId?: ...;
                                          victorCounterpartyId?: ...;
                                          victorTransactionId?: ...;
                                          wireBatchAmount?: ...;
                                          wireBatchId?: ...;
                                          wireInstruction?: ...;
                                          withdrawalId?: ...;
                                      },
                                  >,
                                  {
                                      data: {
                                          amount: ...;
                                          createdPublished?: ...;
                                          depositId?: ...;
                                          executor?: ...;
                                          executorClaims?: ...;
                                          failedBy?: ...;
                                          failureReason?: ...;
                                          initiatedBy?: ...;
                                          memo?: ...;
                                          mintRefusals?: ...;
                                          note?: ...;
                                          providerReference?: ...;
                                          resendRefusals?: ...;
                                          routeFusionBeneficiaryId?: ...;
                                          routeFusionSource?: ...;
                                          routeFusionTransferId?: ...;
                                          source?: ...;
                                          sourceBankAccountId?: ...;
                                          sourceVirtualAccountId?: ...;
                                          target?: ...;
                                          targetBankAccountId?: ...;
                                          targetVirtualAccountId?: ...;
                                          victorCounterpartyId?: ...;
                                          victorTransactionId?: ...;
                                          wireBatchAmount?: ...;
                                          wireBatchId?: ...;
                                          wireInstruction?: ...;
                                          withdrawalId?: ...;
                                      };
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              externalId: PgBuildColumn<
                                  "bank_internal_transfer",
                                  SetHasRuntimeDefault<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              id: PgBuildColumn<
                                  "bank_internal_transfer",
                                  HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: "byDefault";
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              idempotencyKey: PgBuildColumn<
                                  "bank_internal_transfer",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              status: PgBuildColumn<
                                  "bank_internal_transfer",
                                  SetHasDefault<Set$Type<(...), (...)>>,
                                  {
                                      data: (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              updatedAt: PgBuildColumn<
                                  "bank_internal_transfer",
                                  SetHasDefault<SetHasDefault<(...)>>,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              withdrawalExternalId: PgBuildColumn<
                                  "bank_internal_transfer",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                              withdrawalId: PgBuildColumn<
                                  "bank_internal_transfer",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_internal_transfer";
                                  },
                              >;
                          };
                          dialect: "pg";
                          isAlias: false;
                          name: "bank_internal_transfer";
                          schema: "b2b";
                      },
                  >,
                  "enableRLS",
              >,
              "createdAt"
              | "updatedAt",
          >[]

          Must name the same table as the dbOrderBy call below.

        • Optionalpage?: number

          Defaults to 1

        • OptionalpageSize?: number

          Defaults to 10

        • OptionalsourceAccountNumber?: string

          Transfers whose recorded source account has this number, matched on the number alone like bankTransactionSourceAccountTypeSql.

        • Optionalstale?: true

          Transfers whose deadline has passed.

        • Optionalstatus?: "PENDING" | "COMPLETED" | "FAILED"
        • Optionaltx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>
        • OptionalupdatedAt?: DbTimestampCriteria
        • OptionalwithdrawalId?: string
        • OptionalwithoutLeg?: "CREDIT" | "DEBIT"

          Transfers holding no leg on this side yet.

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

    • How many transfers the stale filter returns, and the earliest of their deadlines. Grouped by executor, orphaned sweeps being the group with none. Within a group the deadline moves only with the clock, so its earliest clock gives its earliest deadline.

      Parameters

      • __namedParameters: { now?: Date; tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations> } = {}
        • Optionalnow?: Date

          The clock the deadlines are read at. Defaults to now.

        • Optionaltx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>

      Returns Promise<{ ok: true; value: { count: number; earliestDeadline: Date | null } }>

    • Parameters

      • args: {
            data:
                | {
                    amount: string;
                    bankTransactionIds: string[];
                    status: "COMPLETED";
                    victorTransactionId?: string;
                }
                | { failureReason?: string; status: "FAILED" } & Partial<
                    SendAttemptFailureFence,
                >
                | { failedBy: string; failureReason: string; status: "FAILED" }
                | {
                    mintRefusals?: number;
                    providerReference?: string;
                    resendRefusals?: number;
                    routeFusionBeneficiaryId?: string;
                    victorCounterpartyId?: string;
                    victorTransactionId?: string;
                };
            id: string;
            tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>;
        }

      Returns Promise<{ ok: true; value: BankInternalTransfer }>