diff --git a/src/app/(sidebar)/transaction-dashboard/components/Events.tsx b/src/app/(sidebar)/transaction-dashboard/components/Events.tsx
index b73675fe..8d28dbd9 100644
--- a/src/app/(sidebar)/transaction-dashboard/components/Events.tsx
+++ b/src/app/(sidebar)/transaction-dashboard/components/Events.tsx
@@ -8,6 +8,7 @@ import { Box } from "@/components/layout/Box";
import { ScValPrettyJson } from "@/components/ScValPrettyJson";
import { ExpandBox } from "@/components/ExpandBox";
import { CopyJsonPayloadButton } from "@/components/CopyJsonPayloadButton";
+import { TransactionTabEmptyMessage } from "@/components/TransactionTabEmptyMessage";
import { shortenStellarAddress } from "@/helpers/shortenStellarAddress";
import { FormattedTxEvent, formatTxEvents } from "@/helpers/formatTxEvents";
@@ -45,9 +46,9 @@ export const Events = ({
)
) {
return (
-
- There are no events in this transaction.
-
+
+ There are no events in this transaction
+
);
}
diff --git a/src/app/(sidebar)/transaction-dashboard/components/StateChange.tsx b/src/app/(sidebar)/transaction-dashboard/components/StateChange.tsx
index ef246c6f..b73635f8 100644
--- a/src/app/(sidebar)/transaction-dashboard/components/StateChange.tsx
+++ b/src/app/(sidebar)/transaction-dashboard/components/StateChange.tsx
@@ -1,9 +1,10 @@
"use client";
-import { Badge, Card, Text } from "@stellar/design-system";
+import { Badge, Card } from "@stellar/design-system";
import ReactDiffViewer, { DiffMethod } from "react-diff-viewer";
import { stringify } from "lossless-json";
+import { TransactionTabEmptyMessage } from "@/components/TransactionTabEmptyMessage";
import { Box } from "@/components/layout/Box";
import { formatTxChangeStateItems } from "@/helpers/formatTxChangeStateItems";
import { useWindowSize } from "@/hooks/useWindowSize";
@@ -21,9 +22,9 @@ export const StateChange = ({
if (!formattedData?.length) {
return (
-
- There are no state changes in this transaction.
-
+
+ There are no state changes in this transaction
+
);
}
diff --git a/src/app/(sidebar)/transaction-dashboard/components/TokenSummary.tsx b/src/app/(sidebar)/transaction-dashboard/components/TokenSummary.tsx
new file mode 100644
index 00000000..50fa5267
--- /dev/null
+++ b/src/app/(sidebar)/transaction-dashboard/components/TokenSummary.tsx
@@ -0,0 +1,216 @@
+import { Fragment } from "react";
+import { CopyText, Icon, IconButton, Link, Text } from "@stellar/design-system";
+import { BigNumber } from "bignumber.js";
+
+import { Box } from "@/components/layout/Box";
+import { DataTable } from "@/components/DataTable";
+import { TransactionTabEmptyMessage } from "@/components/TransactionTabEmptyMessage";
+
+import { formatAmount } from "@/helpers/formatAmount";
+import { shortenStellarAddress } from "@/helpers/shortenStellarAddress";
+import { getStellarExpertNetwork } from "@/helpers/getStellarExpertNetwork";
+
+import { STELLAR_EXPERT } from "@/constants/settings";
+import { useStore } from "@/store/useStore";
+
+import { RpcTxJsonResponse } from "@/types/types";
+
+export const TokenSummary = ({
+ txDetails,
+}: {
+ txDetails: RpcTxJsonResponse | null | undefined;
+}) => {
+ type TokenItem = {
+ addressFrom: string;
+ addressTo: string;
+ amount: string;
+ assetCode: string;
+ assetIssuer: string;
+ };
+
+ type EventGroupsType = {
+ native: {
+ id: string;
+ title: string;
+ items: TokenItem[];
+ };
+ asset: {
+ id: string;
+ title: string;
+ items: TokenItem[];
+ };
+ };
+
+ const getGroupedTransferEvents = () => {
+ const formattedEvents = getTransferEvents(txDetails);
+
+ const groups: EventGroupsType = {
+ asset: {
+ id: "asset-ev",
+ title: "Contract token transferred",
+ items: [],
+ },
+ native: {
+ id: "native-ev",
+ title: "Native token (XLM) transferred",
+ items: [],
+ },
+ };
+
+ formattedEvents.forEach((event) => {
+ if (event.assetCode === "XLM" && event.assetIssuer === "native") {
+ groups.native.items.push(event);
+ } else {
+ groups.asset.items.push(event);
+ }
+ });
+
+ // Return only groups with items
+ return Object.values(groups).filter((group) => group.items.length);
+ };
+
+ const { network } = useStore();
+
+ const seNetwork = getStellarExpertNetwork(network.id);
+
+ const formatAssetAddress = (address: string) => {
+ const isContractAddress = address.startsWith("C");
+
+ return (
+
+
+ {shortenStellarAddress(address)}
+
+
+
+ }
+ altText="Copy address"
+ customSize="1rem"
+ />
+
+
+ );
+ };
+
+ const formatAssetAmount = (amount: string) => {
+ return (
+
+ {formatAmount(
+ new BigNumber(amount).dividedBy(10_000_000).toNumber(),
+ 2,
+ )}
+
+ );
+ };
+
+ const formatAsset = (code: string, issuer: string) => {
+ if (!code || !issuer) {
+ return null;
+ }
+
+ const assetString =
+ code === "XLM" && issuer === "native" ? code : `${code}-${issuer}`;
+
+ return (
+ }
+ iconPosition="right"
+ >
+ {code}
+
+ );
+ };
+
+ const groupedTransferEvents = getGroupedTransferEvents();
+
+ if (!groupedTransferEvents.length) {
+ return (
+
+ There are no transfer events in this transaction
+
+ );
+ }
+
+ return (
+
+ {groupedTransferEvents.map((ev) => (
+
+
+
+ {ev.title}
+
+
+ [
+ { value: formatAssetAddress(ti.addressFrom), isOverflow: true },
+ { value: formatAssetAddress(ti.addressTo), isOverflow: true },
+ { value: formatAssetAmount(ti.amount) },
+ { value: formatAsset(ti.assetCode, ti.assetIssuer) },
+ ]}
+ cssGridTemplateColumns="minmax(210px, 1fr) minmax(210px, 1fr) minmax(160px, 1fr) minmax(110px, 1fr)"
+ hidePagination={true}
+ />
+
+
+ ))}
+
+ );
+};
+
+const getTransferEvents = (data: RpcTxJsonResponse | null | undefined) => {
+ const events = data?.events?.contractEventsJson;
+
+ if (!events) {
+ return [];
+ }
+
+ const contractEvents = Array.isArray(events[0])
+ ? events.flatMap((group: any[]) => group)
+ : events;
+
+ return contractEvents
+ .filter((event: any) => event?.body?.v0?.topics?.[0]?.symbol === "transfer")
+ .map((ev: any) => {
+ const addressFrom = ev.body.v0.topics[1].address;
+ const addressTo = ev.body.v0.topics[2].address;
+
+ const token = ev.body.v0.topics?.[3]?.string;
+
+ let assetCode = "";
+ let assetIssuer = "";
+
+ if (token) {
+ [assetCode, assetIssuer] = token.split(":");
+ }
+
+ return {
+ addressFrom,
+ addressTo,
+ // Transfer event data type https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0041.md#transfer-event
+ amount:
+ ev.body.v0.data?.map?.[0]?.val?.i128 ||
+ ev.body.v0.data?.i128 ||
+ ev.body.v0.data?.amount ||
+ "0",
+ assetCode: assetCode === "native" ? "XLM" : assetCode,
+ assetIssuer: assetCode === "native" ? "native" : assetIssuer,
+ };
+ });
+};
diff --git a/src/app/(sidebar)/transaction-dashboard/page.tsx b/src/app/(sidebar)/transaction-dashboard/page.tsx
index bc4c096c..d6b833ca 100644
--- a/src/app/(sidebar)/transaction-dashboard/page.tsx
+++ b/src/app/(sidebar)/transaction-dashboard/page.tsx
@@ -28,6 +28,7 @@ import { StateChange } from "./components/StateChange";
import { FeeBreakdown } from "./components/FeeBreakdown";
import { Signatures } from "./components/Signatures";
import { Events } from "./components/Events";
+import { TokenSummary } from "./components/TokenSummary";
import { Contracts } from "./components/Contracts";
import "./styles.scss";
@@ -313,8 +314,8 @@ export default function TransactionDashboard() {
tab1={{
id: "tx-token-summary",
label: "Token Summary",
- content: ,
- isDisabled: true,
+ content: ,
+ isDisabled: !isDataLoaded,
}}
tab2={{
id: "tx-contracts",
diff --git a/src/app/(sidebar)/transaction-dashboard/styles.scss b/src/app/(sidebar)/transaction-dashboard/styles.scss
index fdfd830d..659c6944 100644
--- a/src/app/(sidebar)/transaction-dashboard/styles.scss
+++ b/src/app/(sidebar)/transaction-dashboard/styles.scss
@@ -35,6 +35,17 @@
}
}
+.TransactionTab {
+ &__emptyMessage {
+ min-height: pxToRem(272px);
+ border-radius: pxToRem(8px);
+ background-color: var(--sds-clr-gray-03);
+ padding: pxToRem(16px);
+
+ color: var(--sds-clr-gray-11);
+ }
+}
+
// =============================================================================
// State Change
// =============================================================================
@@ -408,6 +419,35 @@
}
}
+// =============================================================================
+// Token Summary
+// =============================================================================
+.TransactionTokenSummary {
+ .DataTable {
+ font-size: pxToRem(14px);
+
+ // Needed for the Copy address tooltip
+ &__container {
+ overflow: visible;
+ }
+ }
+
+ &__address {
+ .Link {
+ width: pxToRem(96px);
+ white-space: nowrap;
+ }
+
+ .CopyText {
+ line-height: 1;
+ }
+ }
+
+ &__amount {
+ color: var(--sds-clr-gray-11);
+ }
+}
+
// =============================================================================
// Contracts
// =============================================================================
diff --git a/src/components/TransactionTabEmptyMessage.tsx b/src/components/TransactionTabEmptyMessage.tsx
new file mode 100644
index 00000000..c4fa93c3
--- /dev/null
+++ b/src/components/TransactionTabEmptyMessage.tsx
@@ -0,0 +1,19 @@
+import { Text } from "@stellar/design-system";
+import { Box } from "@/components/layout/Box";
+
+export const TransactionTabEmptyMessage = ({
+ children,
+}: {
+ children: React.ReactNode;
+}) => (
+
+
+ {children}
+
+
+);
diff --git a/src/helpers/formatAmount.ts b/src/helpers/formatAmount.ts
index eee24293..1dbd8192 100644
--- a/src/helpers/formatAmount.ts
+++ b/src/helpers/formatAmount.ts
@@ -1,7 +1,7 @@
-export const formatAmount = (amount: number) => {
+export const formatAmount = (amount: number | bigint, precision?: number) => {
const formatter = new Intl.NumberFormat("en-US", {
- minimumFractionDigits: 1,
- maximumFractionDigits: 7,
+ minimumFractionDigits: precision || 1,
+ maximumFractionDigits: precision || 7,
});
return formatter.format(amount);
diff --git a/tests/e2e/mock/txEvents.ts b/tests/e2e/mock/txEvents.ts
index 87d26163..260d8952 100644
--- a/tests/e2e/mock/txEvents.ts
+++ b/tests/e2e/mock/txEvents.ts
@@ -484,3 +484,3573 @@ export const TX_EVENTS_MOCK_RESPONSE_EMPTY = {
createdAt: "1762778176",
},
};
+
+export const TX_EVENTS_MOCK_RESPONSE_NO_CONTRACT_EVENTS = {
+ jsonrpc: "2.0",
+ id: 1,
+ result: {
+ latestLedger: 59816335,
+ latestLedgerCloseTime: "1762960737",
+ oldestLedger: 59695376,
+ oldestLedgerCloseTime: "1762261943",
+ status: "SUCCESS",
+ txHash: "b01bb450a2e34c95bad30ad4ad99b9682f3653c9449c2adeb267af899d5668d3",
+ applicationOrder: 454,
+ feeBump: true,
+ envelopeJson: {
+ tx_fee_bump: {
+ tx: {
+ fee_source:
+ "GBGWQFSJSOMJ2BTOH5RLZUTZPV544YR2DF5CGYL7WDZ2Y6OSRHR6TUBE",
+ fee: "146332",
+ inner_tx: {
+ tx: {
+ tx: {
+ source_account:
+ "GD7KQAFYY5FINAJ5R5RDF7R4WG4IAH3U4622QR52ZTLELJFSVE6DLHJJ",
+ fee: 146130,
+ seq_num: "249181826281757475",
+ cond: {
+ time: {
+ min_time: "0",
+ max_time: "1762778199",
+ },
+ },
+ memo: "none",
+ operations: [
+ {
+ source_account: null,
+ body: {
+ invoke_host_function: {
+ host_function: {
+ invoke_contract: {
+ contract_address:
+ "CBGSBKYMYO6OMGHQXXNOBRGVUDFUDVC2XLC3SXON5R2SNXILR7XCKKY3",
+ function_name: "harvest",
+ args: [
+ {
+ address:
+ "GCDHLTVARSOHOOZIXPMHP5HXUQOLMONU4B6LAOB42I5MY5MFEFF6HPEZ",
+ },
+ {
+ vec: [
+ {
+ u32: 98737,
+ },
+ {
+ u32: 98738,
+ },
+ {
+ u32: 98739,
+ },
+ {
+ u32: 98742,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ auth: [],
+ },
+ },
+ },
+ ],
+ ext: [],
+ },
+ signatures: [
+ {
+ hint: "b2a93c35",
+ signature:
+ "9ca06f2fccb8ea9eab36e2dc71dd0463b47c1f2dfbcaaad71c3842c674c7b52c628edab94ecc5c712d1ac39831904417601260f12be65231771717148a01aa09",
+ },
+ ],
+ },
+ },
+ ext: "v0",
+ },
+ signatures: [
+ {
+ hint: "d289e3e9",
+ signature:
+ "3d9409ff38020389481427de42847c4ac274cee92fb4c21627481dc0133b8c0594b60739967d72050582db7f4ea977ca739e86c55784bd708037737ea9d4a505",
+ },
+ ],
+ },
+ },
+ resultJson: {},
+ resultMetaJson: [],
+ diagnosticEventsJson: [],
+ events: {
+ transactionEventsJson: [],
+ },
+ ledger: 59784559,
+ createdAt: "1762778176",
+ },
+};
+
+export const TX_EVENTS_MOCK_SAC = {
+ jsonrpc: "2.0",
+ id: 1,
+ result: {
+ latestLedger: 60103623,
+ latestLedgerCloseTime: "1764603455",
+ oldestLedger: 59982664,
+ oldestLedgerCloseTime: "1763912271",
+ status: "SUCCESS",
+ txHash: "10fd7b30de359f1adc0268af99b7945290755b9881a30155692e194e2c2b084a",
+ applicationOrder: 310,
+ feeBump: false,
+ envelopeJson: {
+ tx: {
+ tx: {
+ source_account:
+ "GCAJ3G3AZHC33UFOAX5AHTARQ4T6K4QOM4QS4TYE6SBWNENKVD32SKE6",
+ fee: 1232823,
+ seq_num: "246663137200264540",
+ cond: {
+ time: {
+ min_time: "0",
+ max_time: "1764094278",
+ },
+ },
+ memo: "none",
+ operations: [
+ {
+ source_account:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ body: {
+ invoke_host_function: {
+ host_function: {
+ invoke_contract: {
+ contract_address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ function_name: "swap",
+ args: [
+ {
+ address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ },
+ {
+ address:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "amount",
+ },
+ val: {
+ i128: "2775196336",
+ },
+ },
+ {
+ key: {
+ symbol: "min",
+ },
+ val: {
+ i128: "10749140284",
+ },
+ },
+ {
+ key: {
+ symbol: "path",
+ },
+ val: {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ],
+ },
+ {
+ u32: 0,
+ },
+ ],
+ },
+ },
+ auth: [
+ {
+ credentials: "source_account",
+ root_invocation: {
+ function: {
+ contract_fn: {
+ contract_address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ function_name: "swap",
+ args: [
+ {
+ address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ },
+ {
+ address:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "amount",
+ },
+ val: {
+ i128: "2775196336",
+ },
+ },
+ {
+ key: {
+ symbol: "min",
+ },
+ val: {
+ i128: "10749140284",
+ },
+ },
+ {
+ key: {
+ symbol: "path",
+ },
+ val: {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ],
+ },
+ {
+ u32: 0,
+ },
+ ],
+ },
+ },
+ sub_invocations: [
+ {
+ function: {
+ contract_fn: {
+ contract_address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ function_name: "transfer",
+ args: [
+ {
+ address:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ {
+ i128: "2775196336",
+ },
+ ],
+ },
+ },
+ sub_invocations: [],
+ },
+ ],
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ ext: {
+ v1: {
+ ext: "v0",
+ resources: {
+ footprint: {
+ read_only: [
+ {
+ contract_data: {
+ contract:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCABO2IQYDWRGGQ4DYQ73CV3ZFDBRZTEQNDDJMFT7JZO54CLS4RYJROY",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_code: {
+ hash: "3da9edcabd7491b2245920551bf7cce020c70114e219216b948ae3dd3af2e49c",
+ },
+ },
+ {
+ contract_code: {
+ hash: "585699775ab8f0d38bea153e4c8d845d9405c6906063e3fc4c1414c120ab58f5",
+ },
+ },
+ {
+ contract_code: {
+ hash: "baabbdd1d1816be62751880621a323168525f839442de5f4c1ce1c1a0ebf42b1",
+ },
+ },
+ ],
+ read_write: [
+ {
+ account: {
+ account_id:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ },
+ },
+ {
+ trustline: {
+ account_id:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ asset: {
+ credit_alphanum4: {
+ asset_code: "USDC",
+ issuer:
+ "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
+ },
+ },
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCABO2IQYDWRGGQ4DYQ73CV3ZFDBRZTEQNDDJMFT7JZO54CLS4RYJROY",
+ key: {
+ vec: [
+ {
+ symbol: "PoolData",
+ },
+ {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ key: {
+ u32: 0,
+ },
+ durability: "temporary",
+ },
+ },
+ ],
+ },
+ instructions: 7121398,
+ disk_read_bytes: 260,
+ write_bytes: 4032,
+ },
+ resource_fee: "232823",
+ },
+ },
+ },
+ signatures: [
+ {
+ hint: "aaa8f7a9",
+ signature:
+ "fefebc3d63ebad4bd9950c81c896f602e3d327180d8306a24e168132fddcde20f4e8d350237ee987762d6ad2f7cb112fcc2ba8aa556568dd64f18537b661d50f",
+ },
+ {
+ hint: "97682b13",
+ signature:
+ "8c59a2d81bbb32fe89b694de7dcbd987127f2ec2aadcebc38fa09c70f96c6270aa3e3e22ea61a1739b9e1ade00009a1bfc39de88ded74b58a61da60d94804a06",
+ },
+ ],
+ },
+ },
+ resultJson: {},
+ resultMetaJson: [],
+ diagnosticEventsJson: [],
+ events: {
+ transactionEventsJson: [
+ {
+ stage: "before_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GCAJ3G3AZHC33UFOAX5AHTARQ4T6K4QOM4QS4TYE6SBWNENKVD32SKE6",
+ },
+ ],
+ data: {
+ i128: "232923",
+ },
+ },
+ },
+ },
+ },
+ {
+ stage: "after_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GCAJ3G3AZHC33UFOAX5AHTARQ4T6K4QOM4QS4TYE6SBWNENKVD32SKE6",
+ },
+ ],
+ data: {
+ i128: "-38454",
+ },
+ },
+ },
+ },
+ },
+ ],
+ contractEventsJson: [
+ [
+ {
+ ext: "v0",
+ contract_id:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ {
+ string:
+ "USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
+ },
+ ],
+ data: {
+ i128: "2775196336",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ {
+ string:
+ "USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
+ },
+ ],
+ data: {
+ i128: "2775196336",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ {
+ string: "native",
+ },
+ ],
+ data: {
+ i128: "11079747419",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "trade",
+ },
+ {
+ address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ },
+ {
+ address:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "2775196336",
+ },
+ {
+ i128: "11079747419",
+ },
+ {
+ i128: "1387599",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CA6PUJLBYKZKUEKLZJMKBZLEKP2OTHANDEOWSFF44FTSYLKQPIICCJBE",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "update_reserves",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "108251205691757",
+ },
+ {
+ i128: "27089847152915",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CDHN6XUCHU56WGQSCGYRLFBWYL67KFS54RBMMNTJE4VOWZTOGNRPFNJE",
+ },
+ {
+ address:
+ "GBJXZPTSL4OMWZOELUALE74KQEVBE46M2VTS4JFNOY7YAREXNAVRG7YU",
+ },
+ {
+ string: "native",
+ },
+ ],
+ data: {
+ i128: "11079747419",
+ },
+ },
+ },
+ },
+ ],
+ ],
+ },
+ ledger: 60014504,
+ createdAt: "1764094226",
+ },
+};
+
+export const TX_EVENTS_MOCK_SOROSWAP = {
+ jsonrpc: "2.0",
+ id: 1,
+ result: {
+ latestLedger: 60103629,
+ latestLedgerCloseTime: "1764603488",
+ oldestLedger: 59982670,
+ oldestLedgerCloseTime: "1763912304",
+ status: "SUCCESS",
+ txHash: "d6a693377523c3b4725517468d8a1e96acca52c97fec00462c38bdd823d952af",
+ applicationOrder: 191,
+ feeBump: true,
+ envelopeJson: {
+ tx_fee_bump: {
+ tx: {
+ fee_source:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ fee: "7665794",
+ inner_tx: {
+ tx: {
+ tx: {
+ source_account:
+ "GA5HIRZL4ZSWNSEZGUMXV5NFHD2RR4KCLAFDUJY4QOL2ENHTCDFHOWIO",
+ fee: 3832897,
+ seq_num: "237484689009411428",
+ cond: {
+ v2: {
+ time_bounds: {
+ min_time: "0",
+ max_time: "1764071333",
+ },
+ ledger_bounds: {
+ min_ledger: 0,
+ max_ledger: 60010516,
+ },
+ min_seq_num: "0",
+ min_seq_age: "0",
+ min_seq_ledger_gap: 0,
+ extra_signers: [],
+ },
+ },
+ memo: "none",
+ operations: [
+ {
+ source_account:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ body: {
+ invoke_host_function: {
+ host_function: {
+ invoke_contract: {
+ contract_address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ function_name: "swap",
+ args: [
+ {
+ address:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ },
+ {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "amount",
+ },
+ val: {
+ i128: "14929358",
+ },
+ },
+ {
+ key: {
+ symbol: "estimated",
+ },
+ val: {
+ i128: "6562792901",
+ },
+ },
+ {
+ key: {
+ symbol: "min",
+ },
+ val: {
+ i128: "6538604967",
+ },
+ },
+ {
+ key: {
+ symbol: "path",
+ },
+ val: {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 2,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ ],
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 2,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ ],
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ {
+ u32: 400,
+ },
+ {
+ u32: 0,
+ },
+ {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ ],
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ auth: [
+ {
+ credentials: {
+ address: {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ nonce: "6285799956383707355",
+ signature_expiration_ledger: 60010517,
+ signature: {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "public_key",
+ },
+ val: {
+ bytes:
+ "5be567f50505f9f94dbf2413e76451e6ce556311a6404cb6faf78468c9f6c1ad",
+ },
+ },
+ {
+ key: {
+ symbol: "signature",
+ },
+ val: {
+ bytes:
+ "ef158214f738867e1a1aaa40b5c17de519c9ad77281dc935c92d883aae7c94dff83dd1a13da0c27ff7bfd8e04237ab366eaae0ca4b2d3c1ff026b2b967274e0c",
+ },
+ },
+ ],
+ },
+ ],
+ },
+ },
+ },
+ root_invocation: {
+ function: {
+ contract_fn: {
+ contract_address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ function_name: "swap",
+ args: [
+ {
+ address:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ },
+ {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "amount",
+ },
+ val: {
+ i128: "14929358",
+ },
+ },
+ {
+ key: {
+ symbol: "estimated",
+ },
+ val: {
+ i128: "6562792901",
+ },
+ },
+ {
+ key: {
+ symbol: "min",
+ },
+ val: {
+ i128: "6538604967",
+ },
+ },
+ {
+ key: {
+ symbol: "path",
+ },
+ val: {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 2,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ ],
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 2,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ ],
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ {
+ u32: 400,
+ },
+ {
+ u32: 0,
+ },
+ {
+ vec: [
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ ],
+ },
+ {
+ map: [
+ {
+ key: {
+ symbol: "asset",
+ },
+ val: {
+ address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ },
+ },
+ {
+ key: {
+ symbol: "bi",
+ },
+ val: {
+ u32: 1,
+ },
+ },
+ {
+ key: {
+ symbol: "pool",
+ },
+ val: {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ },
+ {
+ key: {
+ symbol: "protocol",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ {
+ key: {
+ symbol: "si",
+ },
+ val: {
+ u32: 0,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ sub_invocations: [
+ {
+ function: {
+ contract_fn: {
+ contract_address:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ function_name: "transfer",
+ args: [
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ i128: "14929358",
+ },
+ ],
+ },
+ },
+ sub_invocations: [],
+ },
+ ],
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ ext: {
+ v1: {
+ ext: "v0",
+ resources: {
+ footprint: {
+ read_only: [
+ {
+ contract_data: {
+ contract:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCABO2IQYDWRGGQ4DYQ73CV3ZFDBRZTEQNDDJMFT7JZO54CLS4RYJROY",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_code: {
+ hash: "18051456816b66f12e773a56f77c5794fac1b1fb7ab6e22d4fad5a412770f73e",
+ },
+ },
+ {
+ contract_code: {
+ hash: "1d4604048c4baddcb222d4b077fcd0d058e212da81e717ddeec26643814e0113",
+ },
+ },
+ {
+ contract_code: {
+ hash: "3da9edcabd7491b2245920551bf7cce020c70114e219216b948ae3dd3af2e49c",
+ },
+ },
+ {
+ contract_code: {
+ hash: "baabbdd1d1816be62751880621a323168525f839442de5f4c1ce1c1a0ebf42b1",
+ },
+ },
+ ],
+ read_write: [
+ {
+ account: {
+ account_id:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ },
+ {
+ trustline: {
+ account_id:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ asset: {
+ credit_alphanum4: {
+ asset_code: "AQUA",
+ issuer:
+ "GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA",
+ },
+ },
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ key: {
+ ledger_key_nonce: {
+ nonce: "6285799956383707355",
+ },
+ },
+ durability: "temporary",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCABO2IQYDWRGGQ4DYQ73CV3ZFDBRZTEQNDDJMFT7JZO54CLS4RYJROY",
+ key: {
+ vec: [
+ {
+ symbol: "PoolData",
+ },
+ {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCABO2IQYDWRGGQ4DYQ73CV3ZFDBRZTEQNDDJMFT7JZO54CLS4RYJROY",
+ key: {
+ vec: [
+ {
+ symbol: "PoolData",
+ },
+ {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCABO2IQYDWRGGQ4DYQ73CV3ZFDBRZTEQNDDJMFT7JZO54CLS4RYJROY",
+ key: {
+ vec: [
+ {
+ symbol: "PoolData",
+ },
+ {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ ],
+ },
+ instructions: 19828719,
+ disk_read_bytes: 1336,
+ write_bytes: 13024,
+ },
+ resource_fee: "3828897",
+ },
+ },
+ },
+ signatures: [
+ {
+ hint: "c9f6c1ad",
+ signature:
+ "ed6b4d2357aa50541fd16554be32ee5578169a7e5e80494e17cc1559e9ebaf67e156e174ce010d49b926a166b82531a3ea5f5d4ee17d7cf4b7ec3c8d7c9e190d",
+ },
+ {
+ hint: "f310ca77",
+ signature:
+ "8a0ac395056baeba7f852a1336f5a0535f32a53539f71727b452f5695d1994da29b9abedecd6cf78bac32734cc30482fef1a18d050b30b67cfd435d5065b4203",
+ },
+ ],
+ },
+ },
+ ext: "v0",
+ },
+ signatures: [
+ {
+ hint: "c9f6c1ad",
+ signature:
+ "461bf2d00b02fb6f249a9945f9c2d4f5139b98cf80abeb146ac82bc7f4de15b5850f235206f992ec162cdacd0659c3f4b12a96133610a40dbe60519dd453fd0b",
+ },
+ ],
+ },
+ },
+ resultJson: {},
+ resultMetaJson: [],
+ diagnosticEventsJson: [],
+ events: {
+ transactionEventsJson: [
+ {
+ stage: "before_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ ],
+ data: {
+ i128: "3829097",
+ },
+ },
+ },
+ },
+ },
+ {
+ stage: "after_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ ],
+ data: {
+ i128: "-558141",
+ },
+ },
+ },
+ },
+ },
+ ],
+ contractEventsJson: [
+ [
+ {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ string: "native",
+ },
+ ],
+ data: {
+ i128: "14929358",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ address:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ },
+ {
+ string: "native",
+ },
+ ],
+ data: {
+ i128: "14929358",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ string:
+ "LIBRE:GAYCCWKECNGDRHYU3UTREBD2XLC3CUQN6FV22TKM4WCQER3IWR7TF5CY",
+ },
+ ],
+ data: {
+ i128: "5224824917",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ string: "SoroswapPair",
+ },
+ {
+ symbol: "sync",
+ },
+ ],
+ data: {
+ map: [
+ {
+ key: {
+ symbol: "new_reserve_0",
+ },
+ val: {
+ i128: "2203559448",
+ },
+ },
+ {
+ key: {
+ symbol: "new_reserve_1",
+ },
+ val: {
+ i128: "768259331426",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ string: "SoroswapPair",
+ },
+ {
+ symbol: "swap",
+ },
+ ],
+ data: {
+ map: [
+ {
+ key: {
+ symbol: "amount_0_in",
+ },
+ val: {
+ i128: "14929358",
+ },
+ },
+ {
+ key: {
+ symbol: "amount_0_out",
+ },
+ val: {
+ i128: "0",
+ },
+ },
+ {
+ key: {
+ symbol: "amount_1_in",
+ },
+ val: {
+ i128: "0",
+ },
+ },
+ {
+ key: {
+ symbol: "amount_1_out",
+ },
+ val: {
+ i128: "5224824917",
+ },
+ },
+ {
+ key: {
+ symbol: "to",
+ },
+ val: {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CBEM2CAIYLM3HBOPU5HLQL7V5BUAKM3N77DYQKX4FNHTQLQUUD2ZFBOX",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ address:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ },
+ {
+ string:
+ "LIBRE:GAYCCWKECNGDRHYU3UTREBD2XLC3CUQN6FV22TKM4WCQER3IWR7TF5CY",
+ },
+ ],
+ data: {
+ i128: "5224824917",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ string:
+ "SHX:GDSTRSHXHGJ7ZIVRBXEYE5Q74XUVCUSEKEBR7UCHEUUEK72N7I7KJ6JH",
+ },
+ ],
+ data: {
+ i128: "419845590",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ string: "SoroswapPair",
+ },
+ {
+ symbol: "sync",
+ },
+ ],
+ data: {
+ map: [
+ {
+ key: {
+ symbol: "new_reserve_0",
+ },
+ val: {
+ i128: "566233578680",
+ },
+ },
+ {
+ key: {
+ symbol: "new_reserve_1",
+ },
+ val: {
+ i128: "45216020181",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CDXADLBNIQK5STJVEBOK2CMJPCN6EUUZ3MYPUOMXQ5VBNREGFEIF3PT5",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ string: "SoroswapPair",
+ },
+ {
+ symbol: "swap",
+ },
+ ],
+ data: {
+ map: [
+ {
+ key: {
+ symbol: "amount_0_in",
+ },
+ val: {
+ i128: "5224824917",
+ },
+ },
+ {
+ key: {
+ symbol: "amount_0_out",
+ },
+ val: {
+ i128: "0",
+ },
+ },
+ {
+ key: {
+ symbol: "amount_1_in",
+ },
+ val: {
+ i128: "0",
+ },
+ },
+ {
+ key: {
+ symbol: "amount_1_out",
+ },
+ val: {
+ i128: "419845590",
+ },
+ },
+ {
+ key: {
+ symbol: "to",
+ },
+ val: {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ {
+ string:
+ "SHX:GDSTRSHXHGJ7ZIVRBXEYE5Q74XUVCUSEKEBR7UCHEUUEK72N7I7KJ6JH",
+ },
+ ],
+ data: {
+ i128: "419845590",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ string:
+ "AQUA:GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA",
+ },
+ ],
+ data: {
+ i128: "6577241452",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "trade",
+ },
+ {
+ address:
+ "CCKCKCPHYVXQD4NECBFJTFSCU2AMSJGCNG4O6K4JVRE2BLPR7WNDBQIQ",
+ },
+ {
+ address:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "419845590",
+ },
+ {
+ i128: "6577241452",
+ },
+ {
+ i128: "629769",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAQENB7J57NTUWKTPDJ6CRIMI734US7Q2U2VXRWTNMMFSVXDTPWEUJGU",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "update_reserves",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "2029939226195181",
+ },
+ {
+ i128: "129188963486610",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ {
+ string:
+ "AQUA:GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA",
+ },
+ ],
+ data: {
+ i128: "5779420",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ string:
+ "CODY:GAW55YAX46HLIDRONLOLUWP672HTFXW5WWTEI2T7OXVEFEDE5UKQDJAK",
+ },
+ ],
+ data: {
+ i128: "2467",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "trade",
+ },
+ {
+ address:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ },
+ {
+ address:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "5779420",
+ },
+ {
+ i128: "2467",
+ },
+ {
+ i128: "2890",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CDCT6W2XW64ZCIUEMRG46CJVE734SZDL6WDEH2QQOABBNU2XUSCTQEMR",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "update_reserves",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "902257167",
+ },
+ {
+ i128: "2111131332189",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ {
+ string:
+ "CODY:GAW55YAX46HLIDRONLOLUWP672HTFXW5WWTEI2T7OXVEFEDE5UKQDJAK",
+ },
+ ],
+ data: {
+ i128: "2467",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ string:
+ "USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
+ },
+ ],
+ data: {
+ i128: "3292",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "trade",
+ },
+ {
+ address:
+ "CAFD2IS6FEBUXWHAOH3G5LM4LMXIHVH6LAYRHUPYUU62NXH3I4TUCI2C",
+ },
+ {
+ address:
+ "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "2467",
+ },
+ {
+ i128: "3292",
+ },
+ {
+ i128: "2",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CBN2N5L4UM5PPQE5UQNC3HVGT56TDQMAXMT3LVFMNN6XLFXZMCJY6KOU",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "update_reserves",
+ },
+ ],
+ data: {
+ vec: [
+ {
+ i128: "11017366401",
+ },
+ {
+ i128: "14721193481",
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "CBWP275BNGLHWFTQVB6QHA67MLX7WTX6YZ5LNSUVOK7W2TMKWX7OPYOJ",
+ },
+ {
+ address:
+ "GBN6KZ7VAUC7T6KNX4SBHZ3EKHTM4VLDCGTEATFW7L3YI2GJ63A22OEY",
+ },
+ {
+ string:
+ "AQUA:GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA",
+ },
+ ],
+ data: {
+ i128: "6571462032",
+ },
+ },
+ },
+ },
+ ],
+ ],
+ },
+ ledger: 60010515,
+ createdAt: "1764071309",
+ },
+};
+
+export const TX_EVENTS_MOCK_KALE = {
+ jsonrpc: "2.0",
+ id: 1,
+ result: {
+ latestLedger: 60103635,
+ latestLedgerCloseTime: "1764603521",
+ oldestLedger: 59982676,
+ oldestLedgerCloseTime: "1763912339",
+ status: "SUCCESS",
+ txHash: "d07e08d7db490ceede38e7038e2a8b018094b4d4e989e76a3b27dbce03c25889",
+ applicationOrder: 218,
+ feeBump: true,
+ envelopeJson: {
+ tx_fee_bump: {
+ tx: {
+ fee_source:
+ "GBGWQFSJSOMJ2BTOH5RLZUTZPV544YR2DF5CGYL7WDZ2Y6OSRHR6TUBE",
+ fee: "128322",
+ inner_tx: {
+ tx: {
+ tx: {
+ source_account:
+ "GCMF6AASWZBXLR7G56KBX3MXERMB7Y7GPQIGWOQ32BFDVJQN3GGI7RZP",
+ fee: 128121,
+ seq_num: "230853293864421695",
+ cond: {
+ time: {
+ min_time: "0",
+ max_time: "1764103118",
+ },
+ },
+ memo: "none",
+ operations: [
+ {
+ source_account: null,
+ body: {
+ invoke_host_function: {
+ host_function: {
+ invoke_contract: {
+ contract_address:
+ "CBGSBKYMYO6OMGHQXXNOBRGVUDFUDVC2XLC3SXON5R2SNXILR7XCKKY3",
+ function_name: "harvest",
+ args: [
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ vec: [
+ {
+ u32: 102933,
+ },
+ {
+ u32: 102934,
+ },
+ {
+ u32: 102935,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ auth: [],
+ },
+ },
+ },
+ ],
+ ext: {
+ v1: {
+ ext: "v0",
+ resources: {
+ footprint: {
+ read_only: [
+ {
+ contract_data: {
+ contract:
+ "CBGSBKYMYO6OMGHQXXNOBRGVUDFUDVC2XLC3SXON5R2SNXILR7XCKKY3",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CB23WRDQWGSP6YPMY4UV5C4OW5CBTXKYN3XEATG7KJEZCXMJBYEHOUOV",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: {
+ vec: [
+ {
+ symbol: "Block",
+ },
+ {
+ u32: 102933,
+ },
+ ],
+ },
+ durability: "temporary",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: {
+ vec: [
+ {
+ symbol: "Block",
+ },
+ {
+ u32: 102934,
+ },
+ ],
+ },
+ durability: "temporary",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: {
+ vec: [
+ {
+ symbol: "Block",
+ },
+ {
+ u32: 102935,
+ },
+ ],
+ },
+ durability: "temporary",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_code: {
+ hash: "70fe44694c9fe6b0abc69a6da4858fc2aaba04fa10492a466a1d426d04ca8560",
+ },
+ },
+ {
+ contract_code: {
+ hash: "db2c14290d4964e3805f2527dd132939ba5fb3fccac56b30bfab8fd091011627",
+ },
+ },
+ ],
+ read_write: [
+ {
+ trustline: {
+ account_id:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ asset: {
+ credit_alphanum4: {
+ asset_code: "KALE",
+ issuer:
+ "GBDVX4VELCDSQ54KQJYTNHXAHFLBCA77ZY2USQBM4CSHTTV7DME7KALE",
+ },
+ },
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: {
+ vec: [
+ {
+ symbol: "Pail",
+ },
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ u32: 102933,
+ },
+ ],
+ },
+ durability: "temporary",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: {
+ vec: [
+ {
+ symbol: "Pail",
+ },
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ u32: 102934,
+ },
+ ],
+ },
+ durability: "temporary",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CDL74RF5BLYR2YBLCCI7F5FB6TPSCLKEJUBSD2RSVWZ4YHF3VMFAIGWA",
+ key: {
+ vec: [
+ {
+ symbol: "Pail",
+ },
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ u32: 102935,
+ },
+ ],
+ },
+ durability: "temporary",
+ },
+ },
+ ],
+ },
+ instructions: 3560754,
+ disk_read_bytes: 116,
+ write_bytes: 116,
+ },
+ resource_fee: "128121",
+ },
+ },
+ },
+ signatures: [
+ {
+ hint: "0dd98c8f",
+ signature:
+ "c9a3c88f8f4c1ec6699d73d5852242c44dd9de5154f8f77db18466f6098f12a5936307c4ff324342caf95c03ee0fe0bfd1f936fbfdfdb2802204f21c7eefbd0e",
+ },
+ ],
+ },
+ },
+ ext: "v0",
+ },
+ signatures: [
+ {
+ hint: "d289e3e9",
+ signature:
+ "1f3a47ee31b93a2194c1dc4658524d8df0527bfe6c24246acc40bccca7cecb8af3d805d33f797fc9a49113188fc980b098c9ddc00d9b8e9db13eaa7cc54f8203",
+ },
+ ],
+ },
+ },
+ resultJson: {},
+ resultMetaJson: {},
+ diagnosticEventsJson: [],
+ events: {
+ transactionEventsJson: [
+ {
+ stage: "before_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GBGWQFSJSOMJ2BTOH5RLZUTZPV544YR2DF5CGYL7WDZ2Y6OSRHR6TUBE",
+ },
+ ],
+ data: {
+ i128: "128321",
+ },
+ },
+ },
+ },
+ },
+ {
+ stage: "after_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GBGWQFSJSOMJ2BTOH5RLZUTZPV544YR2DF5CGYL7WDZ2Y6OSRHR6TUBE",
+ },
+ ],
+ data: {
+ i128: "-39423",
+ },
+ },
+ },
+ },
+ },
+ ],
+ contractEventsJson: [
+ [
+ {
+ ext: "v0",
+ contract_id:
+ "CB23WRDQWGSP6YPMY4UV5C4OW5CBTXKYN3XEATG7KJEZCXMJBYEHOUOV",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "mint",
+ },
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ string:
+ "KALE:GBDVX4VELCDSQ54KQJYTNHXAHFLBCA77ZY2USQBM4CSHTTV7DME7KALE",
+ },
+ ],
+ data: {
+ i128: "29814773",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CB23WRDQWGSP6YPMY4UV5C4OW5CBTXKYN3XEATG7KJEZCXMJBYEHOUOV",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "mint",
+ },
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ string:
+ "KALE:GBDVX4VELCDSQ54KQJYTNHXAHFLBCA77ZY2USQBM4CSHTTV7DME7KALE",
+ },
+ ],
+ data: {
+ i128: "34737086",
+ },
+ },
+ },
+ },
+ {
+ ext: "v0",
+ contract_id:
+ "CB23WRDQWGSP6YPMY4UV5C4OW5CBTXKYN3XEATG7KJEZCXMJBYEHOUOV",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "mint",
+ },
+ {
+ address:
+ "GD3GENKSPTIIEOXESQQPF6OZSWE3DANMPBKWEK3PVG6GVILRQ5RCWLKD",
+ },
+ {
+ string:
+ "KALE:GBDVX4VELCDSQ54KQJYTNHXAHFLBCA77ZY2USQBM4CSHTTV7DME7KALE",
+ },
+ ],
+ data: {
+ i128: "34437433",
+ },
+ },
+ },
+ },
+ ],
+ ],
+ },
+ ledger: 60016050,
+ createdAt: "1764103095",
+ },
+};
+
+export const TX_EVENTS_MOCK_MUXED = {
+ jsonrpc: "2.0",
+ id: 1,
+ result: {
+ latestLedger: 1895260,
+ latestLedgerCloseTime: "1764683829",
+ oldestLedger: 1774301,
+ oldestLedgerCloseTime: "1764078353",
+ status: "SUCCESS",
+ txHash: "80a57738bc6e0ce01a1ee25dbb1e59a4c4f677e0b8f0a2232c285b3a14990f9a",
+ applicationOrder: 2,
+ feeBump: false,
+ envelopeJson: {
+ tx: {
+ tx: {
+ source_account:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ fee: 84446,
+ seq_num: "908578856632404",
+ cond: {
+ time: {
+ min_time: "0",
+ max_time: "0",
+ },
+ },
+ memo: "none",
+ operations: [
+ {
+ source_account: null,
+ body: {
+ invoke_host_function: {
+ host_function: {
+ invoke_contract: {
+ contract_address:
+ "CCPKXJC62SE3XN7C5DDETNKKZLHN6NXUZRHFPGA7H47RIKAJYHKH2PYU",
+ function_name: "transfer",
+ args: [
+ {
+ address:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ },
+ {
+ address:
+ "MC4NTEZTULYHWOCW6YSLZWAEED6ATRVX2BPKTSWZUKQKUJIMG3SLCAAAAAAAAAAAAGIQE",
+ },
+ {
+ i128: "1000000",
+ },
+ ],
+ },
+ },
+ auth: [
+ {
+ credentials: "source_account",
+ root_invocation: {
+ function: {
+ contract_fn: {
+ contract_address:
+ "CCPKXJC62SE3XN7C5DDETNKKZLHN6NXUZRHFPGA7H47RIKAJYHKH2PYU",
+ function_name: "transfer",
+ args: [
+ {
+ address:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ },
+ {
+ address:
+ "MC4NTEZTULYHWOCW6YSLZWAEED6ATRVX2BPKTSWZUKQKUJIMG3SLCAAAAAAAAAAAAGIQE",
+ },
+ {
+ i128: "1000000",
+ },
+ ],
+ },
+ },
+ sub_invocations: [],
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ ext: {
+ v1: {
+ ext: "v0",
+ resources: {
+ footprint: {
+ read_only: [
+ {
+ contract_data: {
+ contract:
+ "CCPKXJC62SE3XN7C5DDETNKKZLHN6NXUZRHFPGA7H47RIKAJYHKH2PYU",
+ key: "ledger_key_contract_instance",
+ durability: "persistent",
+ },
+ },
+ {
+ contract_code: {
+ hash: "03541799cc4291302d011fd49ed6f3a8d8113fa040a2cbe4a784826dbf515b44",
+ },
+ },
+ ],
+ read_write: [
+ {
+ contract_data: {
+ contract:
+ "CCPKXJC62SE3XN7C5DDETNKKZLHN6NXUZRHFPGA7H47RIKAJYHKH2PYU",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ {
+ contract_data: {
+ contract:
+ "CCPKXJC62SE3XN7C5DDETNKKZLHN6NXUZRHFPGA7H47RIKAJYHKH2PYU",
+ key: {
+ vec: [
+ {
+ symbol: "Balance",
+ },
+ {
+ address:
+ "GC4NTEZTULYHWOCW6YSLZWAEED6ATRVX2BPKTSWZUKQKUJIMG3SLDMXU",
+ },
+ ],
+ },
+ durability: "persistent",
+ },
+ },
+ ],
+ },
+ instructions: 909934,
+ disk_read_bytes: 0,
+ write_bytes: 296,
+ },
+ resource_fee: "84246",
+ },
+ },
+ },
+ signatures: [
+ {
+ hint: "f00d3b5c",
+ signature:
+ "e9de8cc4d676c74bc92f9db6570163024671c4eb8f2b32ab921eb3a81e3909b46748ecb0933d61e8c623923437942b3bc56b9dd0e645a9a877356c26d68e860a",
+ },
+ ],
+ },
+ },
+ resultJson: {},
+ resultMetaJson: {},
+ diagnosticEventsJson: [],
+ events: {
+ transactionEventsJson: [
+ {
+ stage: "before_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ },
+ ],
+ data: {
+ i128: "84346",
+ },
+ },
+ },
+ },
+ },
+ {
+ stage: "after_all_txs",
+ event: {
+ ext: "v0",
+ contract_id:
+ "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "fee",
+ },
+ {
+ address:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ },
+ ],
+ data: {
+ i128: "-38789",
+ },
+ },
+ },
+ },
+ },
+ ],
+ contractEventsJson: [
+ [
+ {
+ ext: "v0",
+ contract_id:
+ "CCPKXJC62SE3XN7C5DDETNKKZLHN6NXUZRHFPGA7H47RIKAJYHKH2PYU",
+ type_: "contract",
+ body: {
+ v0: {
+ topics: [
+ {
+ symbol: "transfer",
+ },
+ {
+ address:
+ "GBQXC7ZQHOUAM5JBU5YEC7VE2AT3GUQKK5ACH47HM77CDC7QBU5VZEEV",
+ },
+ {
+ address:
+ "GC4NTEZTULYHWOCW6YSLZWAEED6ATRVX2BPKTSWZUKQKUJIMG3SLDMXU",
+ },
+ ],
+ data: {
+ map: [
+ {
+ key: {
+ symbol: "amount",
+ },
+ val: {
+ i128: "1000000",
+ },
+ },
+ {
+ key: {
+ symbol: "to_muxed_id",
+ },
+ val: {
+ u64: "1",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ ],
+ ],
+ },
+ ledger: 1885245,
+ createdAt: "1764633694",
+ },
+};
diff --git a/tests/e2e/txDashEvents.test.ts b/tests/e2e/txDashEvents.test.ts
index 018e597f..d507b9cc 100644
--- a/tests/e2e/txDashEvents.test.ts
+++ b/tests/e2e/txDashEvents.test.ts
@@ -47,7 +47,7 @@ test.describe("Transaction Dashboard: Events", () => {
).toBeHidden();
await expect(
- page.getByText("There are no events in this transaction."),
+ page.getByText("There are no events in this transaction"),
).toBeVisible();
});
});
diff --git a/tests/e2e/txDashStateChange.test.ts b/tests/e2e/txDashStateChange.test.ts
index 8d0f02df..a386df68 100644
--- a/tests/e2e/txDashStateChange.test.ts
+++ b/tests/e2e/txDashStateChange.test.ts
@@ -118,7 +118,7 @@ test.describe("Transaction Dashboard: State Change", () => {
await expect(
page
.getByTestId("contract-info-contract-container")
- .getByText("There are no state changes in this transaction."),
+ .getByText("There are no state changes in this transaction"),
).toBeVisible();
});
});
diff --git a/tests/e2e/txDashTokenSummary.test.ts b/tests/e2e/txDashTokenSummary.test.ts
new file mode 100644
index 00000000..2e5f2eb6
--- /dev/null
+++ b/tests/e2e/txDashTokenSummary.test.ts
@@ -0,0 +1,277 @@
+import { expect, Locator, Page, test } from "@playwright/test";
+import {
+ TX_EVENTS_MOCK_KALE,
+ TX_EVENTS_MOCK_MUXED,
+ TX_EVENTS_MOCK_RESPONSE_EMPTY,
+ TX_EVENTS_MOCK_RESPONSE_NO_CONTRACT_EVENTS,
+ TX_EVENTS_MOCK_SAC,
+ TX_EVENTS_MOCK_SOROSWAP,
+} from "./mock/txEvents";
+import { mockRpcRequest } from "./mock/helpers";
+
+test.describe("Transaction Dashboard: Token Summary", () => {
+ test.beforeEach(async ({ page }) => {
+ // Load page
+ await page.goto("http://localhost:3000/transaction-dashboard");
+ });
+
+ test("SAC", async ({ page }) => {
+ await eventsData({
+ page,
+ mockResponse: TX_EVENTS_MOCK_SAC,
+ });
+
+ // Tokens
+ const contractTokensContainer = page.getByTestId("asset-ev");
+ await expect(contractTokensContainer).toBeVisible();
+ await expect(contractTokensContainer.locator("> .Text")).toHaveText(
+ "Contract token transferred",
+ );
+ const contracTokensRows = contractTokensContainer.locator("tbody tr");
+ await expect(contracTokensRows).toHaveCount(2);
+
+ // First row
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 0,
+ cellIndex: 0,
+ cellValue: "GBJX…G7YU",
+ });
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 0,
+ cellIndex: 1,
+ cellValue: "CDHN…FNJE",
+ });
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 0,
+ cellIndex: 2,
+ cellValue: "277.52",
+ });
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 0,
+ cellIndex: 3,
+ cellValue: "USDC",
+ });
+
+ // Second row
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 1,
+ cellIndex: 0,
+ cellValue: "CDHN…FNJE",
+ });
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 1,
+ cellIndex: 1,
+ cellValue: "CA6P…CJBE",
+ });
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 1,
+ cellIndex: 2,
+ cellValue: "277.52",
+ });
+ await testTableCellValue({
+ tableRows: contracTokensRows,
+ rowIndex: 1,
+ cellIndex: 3,
+ cellValue: "USDC",
+ });
+
+ // Native
+ const assetTokensContainer = page.getByTestId("native-ev");
+ await expect(assetTokensContainer).toBeVisible();
+ await expect(assetTokensContainer.locator("> .Text")).toHaveText(
+ "Native token (XLM) transferred",
+ );
+ const contracNativeRows = assetTokensContainer.locator("tbody tr");
+ await expect(contracNativeRows).toHaveCount(2);
+
+ // First row
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 0,
+ cellIndex: 0,
+ cellValue: "CA6P…CJBE",
+ });
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 0,
+ cellIndex: 1,
+ cellValue: "CDHN…FNJE",
+ });
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 0,
+ cellIndex: 2,
+ cellValue: "1,107.97",
+ });
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 0,
+ cellIndex: 3,
+ cellValue: "XLM",
+ });
+
+ // Second row
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 1,
+ cellIndex: 0,
+ cellValue: "CDHN…FNJE",
+ });
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 1,
+ cellIndex: 1,
+ cellValue: "GBJX…G7YU",
+ });
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 1,
+ cellIndex: 2,
+ cellValue: "1,107.97",
+ });
+ await testTableCellValue({
+ tableRows: contracNativeRows,
+ rowIndex: 1,
+ cellIndex: 3,
+ cellValue: "XLM",
+ });
+ });
+
+ test("SoroSwap", async ({ page }) => {
+ await eventsData({
+ page,
+ mockResponse: TX_EVENTS_MOCK_SOROSWAP,
+ });
+
+ // Tokens
+ const contractTokensContainer = page.getByTestId("asset-ev");
+ await expect(contractTokensContainer).toBeVisible();
+ await expect(contractTokensContainer.locator("> .Text")).toHaveText(
+ "Contract token transferred",
+ );
+ const contracTokensRows = contractTokensContainer.locator("tbody tr");
+ await expect(contracTokensRows).toHaveCount(10);
+
+ // Native
+ const assetTokensContainer = page.getByTestId("native-ev");
+ await expect(assetTokensContainer).toBeVisible();
+ await expect(assetTokensContainer.locator("> .Text")).toHaveText(
+ "Native token (XLM) transferred",
+ );
+ const contracNativeRows = assetTokensContainer.locator("tbody tr");
+ await expect(contracNativeRows).toHaveCount(2);
+ });
+
+ test("KALE: no transfer events", async ({ page }) => {
+ await eventsData({
+ page,
+ mockResponse: TX_EVENTS_MOCK_KALE,
+ });
+
+ await expect(
+ page.getByText("There are no transfer events in this transaction"),
+ ).toBeVisible();
+ });
+
+ test("Muxed account", async ({ page }) => {
+ await eventsData({
+ page,
+ mockResponse: TX_EVENTS_MOCK_MUXED,
+ });
+
+ // Tokens
+ const contractTokensContainer = page.getByTestId("asset-ev");
+ await expect(contractTokensContainer).toBeVisible();
+ await expect(contractTokensContainer.locator("> .Text")).toHaveText(
+ "Contract token transferred",
+ );
+ const contracTokensRows = contractTokensContainer.locator("tbody tr");
+ await expect(contracTokensRows).toHaveCount(1);
+
+ // Native
+ const assetTokensContainer = page.getByTestId("native-ev");
+ await expect(assetTokensContainer).toBeHidden();
+ });
+
+ test.describe("No transfer events", () => {
+ test("Contract events empty", async ({ page }) => {
+ await eventsData({ page, mockResponse: TX_EVENTS_MOCK_RESPONSE_EMPTY });
+
+ await expect(
+ page.getByText("There are no transfer events in this transaction"),
+ ).toBeVisible();
+ });
+
+ test("Contract events undefined", async ({ page }) => {
+ await eventsData({
+ page,
+ mockResponse: TX_EVENTS_MOCK_RESPONSE_NO_CONTRACT_EVENTS,
+ });
+
+ await expect(
+ page.getByText("There are no transfer events in this transaction"),
+ ).toBeVisible();
+ });
+ });
+});
+
+// =============================================================================
+// Helpers
+// =============================================================================
+const eventsData = async ({
+ page,
+ mockResponse,
+}: {
+ page: Page;
+ mockResponse: any;
+}) => {
+ // Input transaction hash
+ const loadButton = page.getByRole("button", { name: "Load transaction" });
+
+ await expect(loadButton).toBeDisabled();
+ await page.getByLabel("Transaction Hash").fill(mockResponse.result.txHash);
+
+ await expect(loadButton).toBeEnabled();
+
+ // Mock response
+ await mockRpcRequest({
+ page,
+ rpcMethod: "getTransaction",
+ bodyJsonResponse: mockResponse,
+ });
+
+ await loadButton.click();
+
+ // Select Token Summary tab
+ const tokenSummaryTabButton = page.getByTestId("tx-token-summary");
+ await expect(tokenSummaryTabButton).toHaveAttribute(
+ "data-is-active",
+ "false",
+ );
+
+ await tokenSummaryTabButton.click();
+ await expect(tokenSummaryTabButton).toHaveAttribute("data-is-active", "true");
+};
+
+const testTableCellValue = async ({
+ tableRows,
+ rowIndex,
+ cellIndex,
+ cellValue,
+}: {
+ tableRows: Locator;
+ rowIndex: number;
+ cellIndex: number;
+ cellValue: string;
+}) => {
+ await expect(
+ tableRows.nth(rowIndex).locator("td").nth(cellIndex),
+ ).toContainText(cellValue);
+};