From a37e359e7f8e8390af41c29a44f3a35c61f7b610 Mon Sep 17 00:00:00 2001 From: Anastasia Rodionova Date: Fri, 26 Sep 2025 17:29:26 +0200 Subject: [PATCH] Update intrpretion for AA txs --- .changeset/thick-fans-travel.md | 5 ++++ .../interpreters/aa.ts | 29 +++++-------------- 2 files changed, 12 insertions(+), 22 deletions(-) create mode 100644 .changeset/thick-fans-travel.md diff --git a/.changeset/thick-fans-travel.md b/.changeset/thick-fans-travel.md new file mode 100644 index 0000000..ecfb24a --- /dev/null +++ b/.changeset/thick-fans-travel.md @@ -0,0 +1,5 @@ +--- +'@3loop/transaction-interpreter': patch +--- + +Add generic interpreations to AA transactions with single OP events diff --git a/packages/transaction-interpreter/interpreters/aa.ts b/packages/transaction-interpreter/interpreters/aa.ts index 25d3dd9..4f61dce 100644 --- a/packages/transaction-interpreter/interpreters/aa.ts +++ b/packages/transaction-interpreter/interpreters/aa.ts @@ -1,4 +1,4 @@ -import { assetsReceived, assetsSent, genericInterpreter, displayAddress, displayAsset, toAssetTransfer } from './std.js' +import { genericInterpreter } from './std.js' import type { InterpretedTransaction } from '@/types.js' import type { DecodedTransaction } from '@3loop/transaction-decoder' @@ -17,27 +17,12 @@ export function transformEvent(event: DecodedTransaction): InterpretedTransactio sender: string } - //detect single transfer - const transfers = event.transfers - .filter((t) => (t.from === sender || t.to === sender) && t.type !== 'native') - .map(toAssetTransfer) - if (transfers.length === 1) { - return { - ...newEvent, - type: 'transfer-token', - action: `Sent ${displayAsset(transfers[0])}`, - assetsSent: assetsSent(event.transfers, sender), - assetsReceived: assetsReceived(event.transfers, sender), - } - } - - return { - ...newEvent, - type: 'account-abstraction', - action: `Account Abstraction transaction by ${displayAddress(sender)}`, - assetsSent: assetsSent(event.transfers, sender), - assetsReceived: assetsReceived(event.transfers, sender), - } + // if there is only one userOpEvent, we can use the sender as the fromAddress + // to try to use the generic interpreter to interpret the transaction + return genericInterpreter({ + ...event, + fromAddress: sender, + }) } if (userOpEvents.length > 1) {