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

    One row of b2b.transaction as its writer builds it. Every reference is an external id, resolved to its internal id in the insert. Names are never passed: every read projects them from these keys (docs/proposals/TRANSACTION_TABLE.md §2).

    type TransactionLeg = {
        amount: Transaction["amount"];
        bankId: BankId | null;
        bankTransactionId: NonNullable<Transaction["bankTransactionId"]> | null;
        cardId: NonNullable<Transaction["card"]>["id"] | null;
        cardMerchantName: string | null;
        cardTransactionType:
            | Exclude<
                NonNullable<Transaction["card"]>["transactionType"],
                undefined,
            >
            | null;
        chainKey: SelectChain["key"] | null;
        commitExternalId: string | null;
        commitTxId: string | null;
        counterpartyAddress: string | null;
        counterpartyCustomerId: Customer["id"] | null;
        counterpartyIdentityId: SelectIdentity["externalId"] | null;
        counterpartyLedgerAccountId: SelectLedgerAccount["externalId"] | null;
        counterpartyOrganizationId: SelectOrganization["externalId"] | null;
        counterpartyPhone: string | null;
        counterpartyWalletAddress: string | null;
        createdAt: Temporal.Instant;
        currency: Transaction["currency"];
        customerId: Customer["id"];
        description: string;
        deviceLat: BigNumber | null;
        deviceLong: BigNumber | null;
        failureReason: Transaction["failureReason"];
        fees: BigNumber | null;
        identityId: SelectIdentity["externalId"] | null;
        ledgerAccountId: SelectLedgerAccount["externalId"] | null;
        method: Transaction["method"];
        organizationId: SelectOrganization["externalId"] | null;
        paymentInstrumentId: SelectPaymentInstrument["externalId"] | null;
        postBalance: BigNumber | null;
        preBalance: BigNumber | null;
        productQuoteId: SelectProductQuote["externalId"] | null;
        signature: Transaction["signature"];
        source: { column: TransactionSourceColumn; id: string };
        sourceAmount: BigNumber | null;
        sourceCurrency: NonNullable<Transaction["sourceCurrency"]> | null;
        status: Transaction["status"];
        subType: NonNullable<Transaction["subType"]> | null;
        targetAmount: BigNumber | null;
        targetCurrency: NonNullable<Transaction["targetCurrency"]> | null;
        transactionId: Transaction["id"];
        type: Transaction["type"];
        updatedAt: Temporal.Instant;
        walletAddress: string | null;
        walletTransactionId: SelectWalletTransaction["externalId"] | null;
    }
    Index
    bankId: BankId | null
    bankTransactionId: NonNullable<Transaction["bankTransactionId"]> | null
    cardId: NonNullable<Transaction["card"]>["id"] | null
    cardMerchantName: string | null
    cardTransactionType:
        | Exclude<
            NonNullable<Transaction["card"]>["transactionType"],
            undefined,
        >
        | null
    chainKey: SelectChain["key"] | null

    The chain's key, e.g. solana.

    commitExternalId: string | null
    commitTxId: string | null
    counterpartyAddress: string | null

    A postal address, where a source holds one.

    counterpartyCustomerId: Customer["id"] | null
    counterpartyIdentityId: SelectIdentity["externalId"] | null
    counterpartyLedgerAccountId: SelectLedgerAccount["externalId"] | null
    counterpartyOrganizationId: SelectOrganization["externalId"] | null
    counterpartyPhone: string | null

    The phone an escrow (phone) transfer was sent to or from.

    counterpartyWalletAddress: string | null

    An on-chain address or pubkey, in full.

    createdAt: Temporal.Instant

    The domain's time, not the write's: the row sorts where the view sorted it.

    customerId: Customer["id"]
    description: string

    A fixed label for the leg, or a free-text note with no parent row.

    deviceLat: BigNumber | null
    deviceLong: BigNumber | null
    fees: BigNumber | null
    identityId: SelectIdentity["externalId"] | null
    ledgerAccountId: SelectLedgerAccount["externalId"] | null
    organizationId: SelectOrganization["externalId"] | null
    paymentInstrumentId: SelectPaymentInstrument["externalId"] | null
    postBalance: BigNumber | null
    preBalance: BigNumber | null
    productQuoteId: SelectProductQuote["externalId"] | null
    source: { column: TransactionSourceColumn; id: string }

    The domain row this leg belongs to, by its external id.

    sourceAmount: BigNumber | null
    sourceCurrency: NonNullable<Transaction["sourceCurrency"]> | null
    targetAmount: BigNumber | null
    targetCurrency: NonNullable<Transaction["targetCurrency"]> | null
    transactionId: Transaction["id"]

    The parent id every leg of one movement shares: dp_…, wd_…, waltx_….

    updatedAt: Temporal.Instant
    walletAddress: string | null
    walletTransactionId: SelectWalletTransaction["externalId"] | null

    The on-chain transaction this leg settled in, waltx_….