diff --git a/.changeset/tame-lions-rule.md b/.changeset/tame-lions-rule.md new file mode 100644 index 0000000..91c5cce --- /dev/null +++ b/.changeset/tame-lions-rule.md @@ -0,0 +1,5 @@ +--- +'@3loop/transaction-interpreter': patch +--- + +Unify common dex routers interpretations diff --git a/packages/transaction-interpreter/interpreters/1inch.ts b/packages/transaction-interpreter/interpreters/1inch.ts deleted file mode 100644 index 7c82573..0000000 --- a/packages/transaction-interpreter/interpreters/1inch.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' -import { genericSwapInterpreter } from './std.js' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = [ - // 1inchv6 - '1:0x111111125421cA6dc452d289314280a0f8842A65', - '8453:0x111111125421cA6dc452d289314280a0f8842A65', - // 1inchv5 - '1:0x1111111254EEB25477B68fb85Ed929f73A960582', - '8453:0x1111111254EEB25477B68fb85Ed929f73A960582', - // 1inchv4 - '1:0x1111111254fb6c44bAC0beD2854e76F90643097d', -] diff --git a/packages/transaction-interpreter/interpreters/aerodrom.ts b/packages/transaction-interpreter/interpreters/aerodrom.ts deleted file mode 100644 index 00bd2d6..0000000 --- a/packages/transaction-interpreter/interpreters/aerodrom.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = ['8453:0x6cb442acf35158d5eda88fe602221b67b400be3e'] diff --git a/packages/transaction-interpreter/interpreters/banana-gun.ts b/packages/transaction-interpreter/interpreters/banana-gun.ts deleted file mode 100644 index f22236d..0000000 --- a/packages/transaction-interpreter/interpreters/banana-gun.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = [ - '1:0x3328f7f4a1d1c57c35df56bbf0c9dcafca309c49', - '8453:0x1fba6b0bbae2b74586fba407fb45bd4788b7b130', -] diff --git a/packages/transaction-interpreter/interpreters/index.ts b/packages/transaction-interpreter/interpreters/index.ts index a83a21d..d9a541d 100644 --- a/packages/transaction-interpreter/interpreters/index.ts +++ b/packages/transaction-interpreter/interpreters/index.ts @@ -21,8 +21,9 @@ const fallbackInterpreter = standardLibrary + '\n' + '/**PLACE_FALLBACK_CONTENT* // TODO: Add a default interpreter as a fallback function getInterpreter(tx: DecodedTransaction): string | undefined { const { chainID, toAddress, contractType } = tx - const key = `${chainID}:${toAddress}`.toLowerCase() - const id = contractToName[key] + const keyWithChainID = `${chainID}:${toAddress}`.toLowerCase() + const keyByAddress = `${toAddress}`.toLowerCase() + const id = contractToName[keyWithChainID] || contractToName[keyByAddress] //if there is a contract mapping, return the contract interpreter if (id) { diff --git a/packages/transaction-interpreter/interpreters/kyberswap.ts b/packages/transaction-interpreter/interpreters/kyberswap.ts deleted file mode 100644 index cf3cc88..0000000 --- a/packages/transaction-interpreter/interpreters/kyberswap.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = [ - // KyberSwap v2 - '1:0x6131b5fae19ea4f9d964eac0408e4408b66337b5', - '8453:0x6131b5fae19ea4f9d964eac0408e4408b66337b5', -] diff --git a/packages/transaction-interpreter/interpreters/metamaskRouter.ts b/packages/transaction-interpreter/interpreters/metamaskRouter.ts deleted file mode 100644 index 585902d..0000000 --- a/packages/transaction-interpreter/interpreters/metamaskRouter.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = ['1:0x881D40237659C251811CEC9c364ef91dC08D300C'] diff --git a/packages/transaction-interpreter/interpreters/okx.ts b/packages/transaction-interpreter/interpreters/okx.ts deleted file mode 100644 index 697177c..0000000 --- a/packages/transaction-interpreter/interpreters/okx.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = [ - '1:0xF3dE3C0d654FDa23daD170f0f320a92172509127', // OKX Aggregation Router - '1:0xF3dE3C0d654FDa23daD170f0f320a92172509127', // OKX Router -] diff --git a/packages/transaction-interpreter/interpreters/pendle.ts b/packages/transaction-interpreter/interpreters/pendle.ts deleted file mode 100644 index ce2a31f..0000000 --- a/packages/transaction-interpreter/interpreters/pendle.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = [ - '1:0x888888888889758F76e7103c6CbF23ABbF58F946', // Pendle Router v4 -] diff --git a/packages/transaction-interpreter/interpreters/rainbow.ts b/packages/transaction-interpreter/interpreters/rainbow.ts deleted file mode 100644 index 3a13294..0000000 --- a/packages/transaction-interpreter/interpreters/rainbow.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = ['8453:0x00000000009726632680FB29d3F7A9734E3010E2'] diff --git a/packages/transaction-interpreter/interpreters/routers.ts b/packages/transaction-interpreter/interpreters/routers.ts new file mode 100644 index 0000000..b7b279b --- /dev/null +++ b/packages/transaction-interpreter/interpreters/routers.ts @@ -0,0 +1,46 @@ +import type { InterpretedTransaction } from '@/types.js' +import type { DecodedTransaction } from '@3loop/transaction-decoder' +import { genericSwapInterpreter } from './std.js' + +export function transformEvent(event: DecodedTransaction): InterpretedTransaction { + return genericSwapInterpreter(event) +} + +export const contracts = [ + // 1inch + '0x111111125421cA6dc452d289314280a0f8842A65', + '0x1111111254EEB25477B68fb85Ed929f73A960582', + '0x1111111254fb6c44bAC0beD2854e76F90643097d', + + //Uniswap + '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad', + '0xef1c6e67703c7bd7107eed8303fbe6ec2554bf6b', + '0xeC8B0F7Ffe3ae75d7FfAb09429e3675bb63503e4', + '0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24', + '0x2626664c2603336e57b271c5c0b26f421741e481', + '0x5302086a3a25d473aabbd0356eff8dd811a4d89b', + '0xe592427a0aece92de3edee1f18e0157c05861564', + '0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45', + + //Aerodrom + '8453:0x6cb442acf35158d5eda88fe602221b67b400be3e', + + //Banana Gun + '0x3328f7f4a1d1c57c35df56bbf0c9dcafca309c49', + '0x1fba6b0bbae2b74586fba407fb45bd4788b7b130', + + // KyberSwap v2 + '0x6131b5fae19ea4f9d964eac0408e4408b66337b5', + + //Metamask Router + '0x881D40237659C251811CEC9c364ef91dC08D300C', + + //OKX + '0xF3dE3C0d654FDa23daD170f0f320a92172509127', + + //Pendle Router v4 + '0x888888888889758F76e7103c6CbF23ABbF58F946', + + //Rainbow Router + '0x00000000009726632680FB29d3F7A9734E3010E2', +] diff --git a/packages/transaction-interpreter/interpreters/std.ts b/packages/transaction-interpreter/interpreters/std.ts index 86d71a7..48493db 100644 --- a/packages/transaction-interpreter/interpreters/std.ts +++ b/packages/transaction-interpreter/interpreters/std.ts @@ -336,17 +336,17 @@ export function defaultEvent(event: DecodedTransaction): InterpretedTransaction export function genericSwapInterpreter(event: DecodedTransaction): InterpretedTransaction { const newEvent = defaultEvent(event) - const netSent = getNetTransfers({ - transfers: event.transfers, - fromAddresses: [event.fromAddress], - }) + if (isSwap(event)) { + const netSent = getNetTransfers({ + transfers: event.transfers, + fromAddresses: [event.fromAddress], + }) - const netReceived = getNetTransfers({ - transfers: event.transfers, - toAddresses: [event.fromAddress], - }) + const netReceived = getNetTransfers({ + transfers: event.transfers, + toAddresses: [event.fromAddress], + }) - if (isSwap(event)) { const swapEvent: InterpretedSwapTransaction = { ...newEvent, type: 'swap', diff --git a/packages/transaction-interpreter/interpreters/uniswapv3.ts b/packages/transaction-interpreter/interpreters/uniswapv3.ts deleted file mode 100644 index e9c84e4..0000000 --- a/packages/transaction-interpreter/interpreters/uniswapv3.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { genericSwapInterpreter } from './std.js' -import type { InterpretedTransaction } from '@/types.js' -import type { DecodedTransaction } from '@3loop/transaction-decoder' - -export function transformEvent(event: DecodedTransaction): InterpretedTransaction { - return genericSwapInterpreter(event) -} - -export const contracts = [ - //Universal Router - '1:0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad', - '1:0xef1c6e67703c7bd7107eed8303fbe6ec2554bf6b', - '8453:0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad', - '8453:0xeC8B0F7Ffe3ae75d7FfAb09429e3675bb63503e4', - '8453:0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24', - '8453:0x2626664c2603336e57b271c5c0b26f421741e481', - '11155111:0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad', - '11155111:0x5302086a3a25d473aabbd0356eff8dd811a4d89b', -]