@cfxlabsinc/b2b-services
    Preparing search index...
    type ChainTransactionLegInput = {
        addressLedgerAccounts: readonly {
            address: string;
            ledgerAccount: ChainLegLedgerAccount;
        }[];
        balanceChanges: readonly ChainBalanceChange[];
        moveusdMint: string;
        railLedgerAccountIds: ReadonlySet<ChainLegLedgerAccount["id"]>;
        walletTransaction: Pick<SelectWalletTransaction, "externalId"> & {
            blockTime: Temporal.Instant;
            chainKey: TransactionLeg["chainKey"];
            txHash: string;
        };
    }
    Index
    addressLedgerAccounts: readonly {
        address: string;
        ledgerAccount: ChainLegLedgerAccount;
    }[]

    Each of our addresses in the transaction, once per ledger account holding it.

    balanceChanges: readonly ChainBalanceChange[]

    Every balance change of the transaction, on our addresses or not.

    moveusdMint: string

    The active Solana MOVEUSD mint: the only token a leg is built for.

    railLedgerAccountIds: ReadonlySet<ChainLegLedgerAccount["id"]>

    Accounts a rail's own legs already book in this transaction (§3.2 rule 2), PLATFORM_SETTLEMENT included: none of them gets a leg here. Empty for a transaction CFX did not sign.

    walletTransaction: Pick<SelectWalletTransaction, "externalId"> & {
        blockTime: Temporal.Instant;
        chainKey: TransactionLeg["chainKey"];
        txHash: string;
    }