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

    Hierarchy (View Summary)

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

    The process service; the Girasol customer and the card workflows' queue come from the girasol and temporal namespaces.

    • Create card transaction entry for the Girasol transaction event we receive. A pending authorization debits the card into the Girasol mastercard account; a pending reversal or refund credits it back.

      Parameters

      • args: Omit<
            {
                amount: BigNumber;
                clearing?: {
                    amountAdjusted: string;
                    amountCleared: string;
                    receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                    type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                };
                clearingTypeDescription: string
                | null;
                createdAt: Date;
                currency: string;
                girasolTransactionId: string | null;
                id: string;
                merchant?: {
                    categoryCode?: string;
                    city?: string;
                    country?: string;
                    mcc: string;
                    name: string;
                };
                originalGirasolTransactionId: string
                | null;
                reason: string | null;
                receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                status:
                    | "PENDING"
                    | "FAILED"
                    | "COMPLETED"
                    | "PROCESSING"
                    | "RETURNED"
                    | "CANCELLED";
                statusDescription: string;
                statusReason: GirasolCardTransactionStatusReason
                | null;
                type: "authorization" | "notification" | "reversal" | "refund";
                typeDescription: string;
                updatedAt: Date;
            },
            | "id"
            | "createdAt"
            | "updatedAt"
            | "status"
            | "statusDescription"
            | "typeDescription"
            | "statusReason"
            | "clearingTypeDescription",
        > & {
            cardId: string;
            customerId: string;
            girasolEvent?: GirasolTransactionEvent;
            idempotencyKey: string;
            status: | "PENDING"
            | "FAILED"
            | "COMPLETED"
            | "PROCESSING"
            | "RETURNED"
            | "CANCELLED";
            statusReason?: GirasolCardTransactionStatusReason;
        }

      Returns Promise<
          {
              ok: true;
              value: {
                  amount: BigNumber;
                  clearing?: {
                      amountAdjusted: string;
                      amountCleared: string;
                      receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                      type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                  };
                  clearingTypeDescription: string
                  | null;
                  createdAt: Date;
                  currency: string;
                  girasolTransactionId: string | null;
                  id: string;
                  merchant?: {
                      categoryCode?: string;
                      city?: string;
                      country?: string;
                      mcc: string;
                      name: string;
                  };
                  originalGirasolTransactionId: string
                  | null;
                  reason: string | null;
                  receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                  status:
                      | "PENDING"
                      | "FAILED"
                      | "COMPLETED"
                      | "PROCESSING"
                      | "RETURNED"
                      | "CANCELLED";
                  statusDescription: string;
                  statusReason: GirasolCardTransactionStatusReason
                  | null;
                  type: "authorization" | "notification" | "reversal" | "refund";
                  typeDescription: string;
                  updatedAt: Date;
              };
          },
      >

    • Parameters

      • __namedParameters: {
            amountAdjusted: BigNumber;
            amountCleared: BigNumber;
            id: string;
            type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
        }

      Returns Promise<
          | {
              error: | ServiceError<"GIRASOL_CARD_TRANSACTION_NOT_FOUND">
              | ServiceError<"GIRASOL_CARD_NOT_FOUND">
              | ServiceError<"STALE_STATUS">
              | ServiceError<"CARD_TRANSACTION_NOT_AUTHORIZED">;
              ok: false;
          }
          | {
              ok: true;
              value: {
                  amount: BigNumber;
                  clearing?: {
                      amountAdjusted: string;
                      amountCleared: string;
                      receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                      type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                  };
                  clearingTypeDescription: string
                  | null;
                  createdAt: Date;
                  currency: string;
                  girasolTransactionId: string | null;
                  id: string;
                  merchant?: {
                      categoryCode?: string;
                      city?: string;
                      country?: string;
                      mcc: string;
                      name: string;
                  };
                  originalGirasolTransactionId: string
                  | null;
                  reason: string | null;
                  receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                  status:
                      | "PENDING"
                      | "FAILED"
                      | "COMPLETED"
                      | "PROCESSING"
                      | "RETURNED"
                      | "CANCELLED";
                  statusDescription: string;
                  statusReason: GirasolCardTransactionStatusReason
                  | null;
                  type: "authorization" | "notification" | "reversal" | "refund";
                  typeDescription: string;
                  updatedAt: Date;
              };
          },
      >

      Card transaction with clearing data

      Add clearing data to a girasol card transaction still holding its debit; one already returned or cleared is refused.

    • Parameters

      • __namedParameters: { id: string }

      Returns Promise<
          {
              ok: true;
              value: | {
                  amount: BigNumber;
                  clearing?: {
                      amountAdjusted: string;
                      amountCleared: string;
                      receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                      type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                  };
                  clearingTypeDescription: string
                  | null;
                  createdAt: Date;
                  currency: string;
                  girasolTransactionId: string | null;
                  id: string;
                  merchant?: {
                      categoryCode?: string;
                      city?: string;
                      country?: string;
                      mcc: string;
                      name: string;
                  };
                  originalGirasolTransactionId: string
                  | null;
                  reason: string | null;
                  receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                  status:
                      | "PENDING"
                      | "FAILED"
                      | "COMPLETED"
                      | "PROCESSING"
                      | "RETURNED"
                      | "CANCELLED";
                  statusDescription: string;
                  statusReason: GirasolCardTransactionStatusReason
                  | null;
                  type: "authorization" | "notification" | "reversal" | "refund";
                  typeDescription: string;
                  updatedAt: Date;
              } & { cardId: string; customerId: string; targetLedgerAccountId: string }
              | null;
          },
      >

    • Publishes a transaction's current status, for a write made silent until its outcome settled: a reversal claims its original silently and announces it only once the credit landed, so a refused credit never leaves a REVERSED event behind.

      Parameters

      • __namedParameters: { id: string }

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

    • The rows Girasol sent about girasolTransactionIds: a reversal whose event names one as its original_transaction (its own id has a new base), or an advice whose id is one's <id>-<suffix>. Every Girasol id on the card is returned too, so a credit already recorded is never taken for a missed one.

      Parameters

      • __namedParameters: { cardId: string; girasolTransactionIds: string[] }

      Returns Promise<
          {
              ok: true;
              value: {
                  knownGirasolIds: string[];
                  related: (GirasolHoldRelatedRow & { holdGirasolTransactionId: string })[];
              };
          },
      >

    • Drives an authorization whose clearing was already recorded to CLEARED, from the clearing data stored on it rather than recomputed: a MATCH is finished in place, an adjustment's workflow is started again. The transfer is keyed clearing_${id} on chain, so a restart never moves funds twice.

      Parameters

      • __namedParameters: { id: string }

      Returns Promise<
          | {
              ok: true;
              value: {
                  amount: BigNumber;
                  clearing?: {
                      amountAdjusted: string;
                      amountCleared: string;
                      receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                      type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                  };
                  clearingTypeDescription: string
                  | null;
                  createdAt: Date;
                  currency: string;
                  girasolTransactionId: string | null;
                  id: string;
                  merchant?: {
                      categoryCode?: string;
                      city?: string;
                      country?: string;
                      mcc: string;
                      name: string;
                  };
                  originalGirasolTransactionId: string
                  | null;
                  reason: string | null;
                  receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                  status:
                      | "PENDING"
                      | "FAILED"
                      | "COMPLETED"
                      | "PROCESSING"
                      | "RETURNED"
                      | "CANCELLED";
                  statusDescription: string;
                  statusReason: GirasolCardTransactionStatusReason
                  | null;
                  type: "authorization" | "notification" | "reversal" | "refund";
                  typeDescription: string;
                  updatedAt: Date;
              };
          }
          | {
              error: | ServiceError<"GIRASOL_CARD_TRANSACTION_NOT_FOUND">
              | ServiceError<"GIRASOL_CARD_NOT_FOUND">
              | ServiceError<"STALE_STATUS">
              | ServiceError<"CARD_TRANSACTION_NOT_AUTHORIZED">
              | ServiceError<"CARD_TRANSACTION_CLEARING_NOT_FOUND">;
              ok: false;
          },
      >

    • Parameters

      • __namedParameters: {
            cardIds?: string[];
            customerId?: string;
            fromDate?: Date;
            girasolCardTransactionIds?: string[];
            idempotencyKeys?: string[];
            ids?: string[];
            orderBy?: DbOrderByCriterion<
                Omit<
                    PgTableWithColumns<
                        {
                            columns: {
                                amount: PgBuildColumn<
                                    "girasol_card_transaction",
                                    SetNotNull<PgNumericBuilder>,
                                    {
                                        data: string;
                                        dataType: "string numeric";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                clearingData: PgBuildColumn<
                                    "girasol_card_transaction",
                                    Set$Type<
                                        PgJsonbBuilder,
                                        {
                                            amountAdjusted: ...;
                                            amountCleared: ...;
                                            receipt?: ...;
                                            type: ...;
                                        },
                                    >,
                                    {
                                        data: {
                                            amountAdjusted: ...;
                                            amountCleared: ...;
                                            receipt?: ...;
                                            type: ...;
                                        };
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                createdAt: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                currency: PgBuildColumn<
                                    "girasol_card_transaction",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                customerExternalId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                customerId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                data: PgBuildColumn<
                                    "girasol_card_transaction",
                                    Set$Type<PgJsonbBuilder, { girasolEvent?: ...; merchant?: ... }>,
                                    {
                                        data: { girasolEvent?: ...; merchant?: ... };
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                externalId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                girasolCardExternalId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                girasolCardId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                girasolTransactionId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                id: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                idempotencyKey: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                originalGirasolTransactionId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                reason: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                receipt: PgBuildColumn<
                                    "girasol_card_transaction",
                                    Set$Type<PgJsonbBuilder, { id: ...; type: ... }>,
                                    {
                                        data: { id: ...; type: ... };
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                settlementLedgerAccountExternalId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                settlementLedgerAccountId: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                                status: PgBuildColumn<
                                    "girasol_card_transaction",
                                    Set$Type<
                                        SetNotNull<(...)>,
                                        (...) | (...) | (...) | (...) | (...) | (...),
                                    >,
                                    {
                                        data: (...) | (...) | (...) | (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                statusReason: PgBuildColumn<
                                    "girasol_card_transaction",
                                    Set$Type<PgTextBuilder<(...)>, (...) | (...) | (...) | (...)>,
                                    {
                                        data: (...) | (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                type: PgBuildColumn<
                                    "girasol_card_transaction",
                                    Set$Type<SetNotNull<(...)>, (...) | (...) | (...) | (...)>,
                                    {
                                        data: (...) | (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "girasol_card_transaction";
                                    },
                                >;
                                updatedAt: PgBuildColumn<
                                    "girasol_card_transaction",
                                    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: "girasol_card_transaction";
                                    },
                                >;
                            };
                            dialect: "pg";
                            isAlias: false;
                            name: "girasol_card_transaction";
                            schema: "b2b";
                        },
                    >,
                    "enableRLS",
                >,
                "createdAt"
                | "updatedAt",
            >[];
            originalGirasolCardTransactionIds?: string[];
            page?: number;
            pageSize?: number;
            statuses?: (
                | "PENDING"
                | "FAILED"
                | "COMPLETED"
                | "PROCESSING"
                | "RETURNED"
                | "CANCELLED"
            )[];
            toDate?: Date;
            types?: ("authorization" | "notification" | "reversal" | "refund")[];
            uncleared?: boolean;
        }
        • OptionalcardIds?: string[]
        • OptionalcustomerId?: string
        • OptionalfromDate?: Date
        • OptionalgirasolCardTransactionIds?: string[]
        • OptionalidempotencyKeys?: string[]
        • Optionalids?: string[]
        • OptionalorderBy?: DbOrderByCriterion<
              Omit<
                  PgTableWithColumns<
                      {
                          columns: {
                              amount: PgBuildColumn<
                                  "girasol_card_transaction",
                                  SetNotNull<PgNumericBuilder>,
                                  {
                                      data: string;
                                      dataType: "string numeric";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              clearingData: PgBuildColumn<
                                  "girasol_card_transaction",
                                  Set$Type<
                                      PgJsonbBuilder,
                                      { amountAdjusted: ...; amountCleared: ...; receipt?: ...; type: ... },
                                  >,
                                  {
                                      data: {
                                          amountAdjusted: ...;
                                          amountCleared: ...;
                                          receipt?: ...;
                                          type: ...;
                                      };
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              createdAt: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              currency: PgBuildColumn<
                                  "girasol_card_transaction",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              customerExternalId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              customerId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              data: PgBuildColumn<
                                  "girasol_card_transaction",
                                  Set$Type<PgJsonbBuilder, { girasolEvent?: ...; merchant?: ... }>,
                                  {
                                      data: { girasolEvent?: ...; merchant?: ... };
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              externalId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              girasolCardExternalId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              girasolCardId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              girasolTransactionId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              id: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              idempotencyKey: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              originalGirasolTransactionId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              reason: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              receipt: PgBuildColumn<
                                  "girasol_card_transaction",
                                  Set$Type<PgJsonbBuilder, { id: ...; type: ... }>,
                                  {
                                      data: { id: ...; type: ... };
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              settlementLedgerAccountExternalId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              settlementLedgerAccountId: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                              status: PgBuildColumn<
                                  "girasol_card_transaction",
                                  Set$Type<
                                      SetNotNull<(...)>,
                                      (...) | (...) | (...) | (...) | (...) | (...),
                                  >,
                                  {
                                      data: (...) | (...) | (...) | (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              statusReason: PgBuildColumn<
                                  "girasol_card_transaction",
                                  Set$Type<PgTextBuilder<(...)>, (...) | (...) | (...) | (...)>,
                                  {
                                      data: (...) | (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              type: PgBuildColumn<
                                  "girasol_card_transaction",
                                  Set$Type<SetNotNull<(...)>, (...) | (...) | (...) | (...)>,
                                  {
                                      data: (...) | (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "girasol_card_transaction";
                                  },
                              >;
                              updatedAt: PgBuildColumn<
                                  "girasol_card_transaction",
                                  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: "girasol_card_transaction";
                                  },
                              >;
                          };
                          dialect: "pg";
                          isAlias: false;
                          name: "girasol_card_transaction";
                          schema: "b2b";
                      },
                  >,
                  "enableRLS",
              >,
              "createdAt"
              | "updatedAt",
          >[]
        • OptionaloriginalGirasolCardTransactionIds?: string[]
        • Optionalpage?: number
        • OptionalpageSize?: number
        • Optionalstatuses?: ("PENDING" | "FAILED" | "COMPLETED" | "PROCESSING" | "RETURNED" | "CANCELLED")[]
        • OptionaltoDate?: Date
        • Optionaltypes?: ("authorization" | "notification" | "reversal" | "refund")[]
        • Optionaluncleared?: boolean

          Only those with no clearing record.

      Returns Promise<
          {
              ok: true;
              value: {
                  hasNext: boolean;
                  items: (
                      {
                          amount: BigNumber;
                          clearing?: {
                              amountAdjusted: string;
                              amountCleared: string;
                              receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                              type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                          };
                          clearingTypeDescription: string
                          | null;
                          createdAt: Date;
                          currency: string;
                          girasolTransactionId: string | null;
                          id: string;
                          merchant?: {
                              categoryCode?: string;
                              city?: string;
                              country?: string;
                              mcc: string;
                              name: string;
                          };
                          originalGirasolTransactionId: string
                          | null;
                          reason: string | null;
                          receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                          status:
                              | "PENDING"
                              | "FAILED"
                              | "COMPLETED"
                              | "PROCESSING"
                              | "RETURNED"
                              | "CANCELLED";
                          statusDescription: string;
                          statusReason: GirasolCardTransactionStatusReason
                          | null;
                          type: "authorization" | "notification" | "reversal" | "refund";
                          typeDescription: string;
                          updatedAt: Date;
                      } & {
                          cardId: string;
                          customerId: string;
                          targetLedgerAccountId: string;
                      }
                  )[];
                  total: number;
              };
          },
      >

    • Parameters

      • __namedParameters: {
            data: Partial<
                Pick<GirasolCardTransaction, "receipt"> & {
                    clearingReceipt: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                    status: GirasolCardTransactionStatus;
                    statusReason: GirasolCardTransactionStatusReason;
                },
            >;
            id: string;
            onlyIf?: {
                status: | "PENDING"
                | "FAILED"
                | "COMPLETED"
                | "PROCESSING"
                | "RETURNED"
                | "CANCELLED";
                statusReason?: GirasolCardTransactionStatusReason;
                uncleared?: true;
            };
            silent?: boolean;
        }

      Returns Promise<
          | {
              ok: true;
              value: {
                  amount: BigNumber;
                  clearing?: {
                      amountAdjusted: string;
                      amountCleared: string;
                      receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                      type: "OVER_CLEARED" | "UNDER_CLEARED" | "MATCH";
                  };
                  clearingTypeDescription: string
                  | null;
                  createdAt: Date;
                  currency: string;
                  girasolTransactionId: string | null;
                  id: string;
                  merchant?: {
                      categoryCode?: string;
                      city?: string;
                      country?: string;
                      mcc: string;
                      name: string;
                  };
                  originalGirasolTransactionId: string
                  | null;
                  reason: string | null;
                  receipt?: { id: string; type: "SOLANA_TRANSACTION_SIGNATURE" };
                  status:
                      | "PENDING"
                      | "FAILED"
                      | "COMPLETED"
                      | "PROCESSING"
                      | "RETURNED"
                      | "CANCELLED";
                  statusDescription: string;
                  statusReason: GirasolCardTransactionStatusReason
                  | null;
                  type: "authorization" | "notification" | "reversal" | "refund";
                  typeDescription: string;
                  updatedAt: Date;
              };
          }
          | {
              error: | ServiceError<"GIRASOL_CARD_TRANSACTION_NOT_FOUND">
              | ServiceError<"GIRASOL_CARD_NOT_FOUND">
              | ServiceError<"STALE_STATUS">;
              ok: false;
          },
      >

      Update the girasol card transaction and publish an event if required. With onlyIf, the row is read under FOR UPDATE and written only while it still holds onlyIf.status and, for uncleared, has no clearing record or clearing data: a compare-and-set that a concurrent clearing wins. silent writes the history row but publishes nothing, for a write that undoes one whose own events never went out as a settled outcome.