From 3e3552bf63e3e12204c45ddd9257c36e4455034d Mon Sep 17 00:00:00 2001 From: Gerhard Steenkamp Date: Tue, 21 Oct 2025 12:37:59 +0200 Subject: [PATCH 1/4] add deploys, resolve with fallback Signed-off-by: Gerhard Steenkamp --- .../sdk/src/constants/multicall-handler.ts | 148 ++++++++++++++++++ packages/sdk/src/utils/multicallHandler.ts | 14 +- 2 files changed, 152 insertions(+), 10 deletions(-) create mode 100644 packages/sdk/src/constants/multicall-handler.ts diff --git a/packages/sdk/src/constants/multicall-handler.ts b/packages/sdk/src/constants/multicall-handler.ts new file mode 100644 index 0000000..0b4e63d --- /dev/null +++ b/packages/sdk/src/constants/multicall-handler.ts @@ -0,0 +1,148 @@ +import { Address } from "viem"; + +export const multicallHandlerDeployments: Record< + number, + { address: Address; blockNumber: number } +> = { + 1: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 22967417, + }, + 10: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 138622548, + }, + 56: { + address: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", + blockNumber: 48762440, + }, + 130: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 22350961, + }, + 232: { + address: "0x1Ed0D59019a52870337b51DEe8190486a8663037", + blockNumber: 3458452, + }, + 324: { + address: "0x68d3806E57148D6c6793C78EbDDbc272fE605dbf", + blockNumber: 63168917, + }, + 480: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 16881850, + }, + 690: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 20457079, + }, + 919: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 32616082, + }, + 999: { + address: "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", + blockNumber: 13992522, + }, + 1135: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 19185347, + }, + 1301: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 26247751, + }, + 1868: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 9982275, + }, + 4202: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 23893534, + }, + 8453: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 33154505, + }, + 9745: { + address: "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", + blockNumber: 1619956, + }, + 11155111: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 8810926, + }, + 11155420: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 138622548, + }, + 34443: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 26465760, + }, + 37111: { + address: "0x02D2B95F631E0CF6c203E77f827381B0885F7822", + blockNumber: 145561, + }, + 42161: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 360020909, + }, + 57073: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 19600021, + }, + 59144: { + address: "0xdF1C940487574EEfa79989a79a4936A0F979cDa2", + blockNumber: 21108879, + }, + 80002: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 24181411, + }, + 81457: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 22144286, + }, + 84532: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 28665844, + }, + 129399: { + address: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", + blockNumber: 3179705, + }, + 137: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 74229464, + }, + 421614: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 175845768, + }, + 534352: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 17441646, + }, + 808813: { + address: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", + blockNumber: 15392366, + }, + 7777777: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 33202799, + }, + 168587773: { + address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + blockNumber: 24206664, + }, + // TODO: support SVM + // 34268394551451: { + // address: "HaQe51FWtnmaEcuYEfPA7MRCXKrtqptat4oJdJ8zV5Be", + // blockNumber: 349358090, + // }, + // 133268194659241: { + // address: "Fk1RpqsfeWt8KnFCTW9NQVdVxYvxuqjGn6iPB9wrmM8h", + // blockNumber: 356321050, + // }, +}; diff --git a/packages/sdk/src/utils/multicallHandler.ts b/packages/sdk/src/utils/multicallHandler.ts index 64c739e..390cdc2 100644 --- a/packages/sdk/src/utils/multicallHandler.ts +++ b/packages/sdk/src/utils/multicallHandler.ts @@ -1,23 +1,17 @@ import { Address, encodeAbiParameters, parseAbiParameters } from "viem"; import { CrossChainAction } from "../types/index.js"; +import { multicallHandlerDeployments } from "../constants/multicall-handler.js"; export type BuildMessageParams = { fallbackRecipient: Address; actions: CrossChainAction[]; }; -export function getMultiCallHandlerAddress(chainId: number) { - // @todo: use sdk or API to source addresses? +export function getMultiCallHandlerAddress(chainId: number): Address { const defaultAddress = "0x924a9f036260DdD5808007E1AA95f08eD08aA569"; - switch (chainId) { - case 324: - return "0x863859ef502F0Ee9676626ED5B418037252eFeb2"; - case 59144: - return "0x1015c58894961F4F7Dd7D68ba033e28Ed3ee1cDB"; - default: - return defaultAddress; - } + const deployments = multicallHandlerDeployments; + return deployments?.[chainId]?.address ?? defaultAddress; } export function buildMulticallHandlerMessage(params: BuildMessageParams) { From 557d896cbafe639bec4e35faaff391ea7efcf1fc Mon Sep 17 00:00:00 2001 From: Gerhard Steenkamp Date: Tue, 21 Oct 2025 12:38:21 +0200 Subject: [PATCH 2/4] add eslint rule restricting absolute imports in sdk Signed-off-by: Gerhard Steenkamp --- packages/sdk/.eslintrc.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/sdk/.eslintrc.json b/packages/sdk/.eslintrc.json index 6bd7728..92f66c0 100644 --- a/packages/sdk/.eslintrc.json +++ b/packages/sdk/.eslintrc.json @@ -7,5 +7,18 @@ }, "env": { "es2020": true + }, + "rules": { + "no-restricted-imports": [ + "error", + { + "patterns": [ + { + "group": ["@/*"], + "message": "Use relative imports instead of path aliases in library code to avoid compilation issues" + } + ] + } + ] } } From c25b4d8245877f0c59f99742449056d51195161e Mon Sep 17 00:00:00 2001 From: Gerhard Steenkamp Date: Tue, 21 Oct 2025 12:44:12 +0200 Subject: [PATCH 3/4] refactor Signed-off-by: Gerhard Steenkamp --- .../sdk/src/constants/multicall-handler.ts | 180 ++++-------------- packages/sdk/src/utils/multicallHandler.ts | 2 +- 2 files changed, 37 insertions(+), 145 deletions(-) diff --git a/packages/sdk/src/constants/multicall-handler.ts b/packages/sdk/src/constants/multicall-handler.ts index 0b4e63d..819020e 100644 --- a/packages/sdk/src/constants/multicall-handler.ts +++ b/packages/sdk/src/constants/multicall-handler.ts @@ -1,148 +1,40 @@ import { Address } from "viem"; -export const multicallHandlerDeployments: Record< - number, - { address: Address; blockNumber: number } -> = { - 1: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 22967417, - }, - 10: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 138622548, - }, - 56: { - address: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", - blockNumber: 48762440, - }, - 130: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 22350961, - }, - 232: { - address: "0x1Ed0D59019a52870337b51DEe8190486a8663037", - blockNumber: 3458452, - }, - 324: { - address: "0x68d3806E57148D6c6793C78EbDDbc272fE605dbf", - blockNumber: 63168917, - }, - 480: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 16881850, - }, - 690: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 20457079, - }, - 919: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 32616082, - }, - 999: { - address: "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", - blockNumber: 13992522, - }, - 1135: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 19185347, - }, - 1301: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 26247751, - }, - 1868: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 9982275, - }, - 4202: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 23893534, - }, - 8453: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 33154505, - }, - 9745: { - address: "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", - blockNumber: 1619956, - }, - 11155111: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 8810926, - }, - 11155420: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 138622548, - }, - 34443: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 26465760, - }, - 37111: { - address: "0x02D2B95F631E0CF6c203E77f827381B0885F7822", - blockNumber: 145561, - }, - 42161: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 360020909, - }, - 57073: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 19600021, - }, - 59144: { - address: "0xdF1C940487574EEfa79989a79a4936A0F979cDa2", - blockNumber: 21108879, - }, - 80002: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 24181411, - }, - 81457: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 22144286, - }, - 84532: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 28665844, - }, - 129399: { - address: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", - blockNumber: 3179705, - }, - 137: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 74229464, - }, - 421614: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 175845768, - }, - 534352: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 17441646, - }, - 808813: { - address: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", - blockNumber: 15392366, - }, - 7777777: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 33202799, - }, - 168587773: { - address: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", - blockNumber: 24206664, - }, +export const multicallHandlerDeployments: Record = { + 1: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 10: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 56: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", + 130: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 137: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 232: "0x1Ed0D59019a52870337b51DEe8190486a8663037", + 324: "0x68d3806E57148D6c6793C78EbDDbc272fE605dbf", + 480: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 690: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 919: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 999: "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", + 1135: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 1301: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 1868: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 4202: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 8453: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 9745: "0x5E7840E06fAcCb6d1c3b5F5E0d1d3d07F2829bba", + 34443: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 37111: "0x02D2B95F631E0CF6c203E77f827381B0885F7822", + 42161: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 57073: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 59144: "0xdF1C940487574EEfa79989a79a4936A0F979cDa2", + 80002: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 81457: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 84532: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 129399: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", + 421614: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 534352: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 808813: "0xAC537C12fE8f544D712d71ED4376a502EEa944d7", + 7777777: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 11155111: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 11155420: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", + 168587773: "0x0F7Ae28dE1C8532170AD4ee566B5801485c13a0E", // TODO: support SVM - // 34268394551451: { - // address: "HaQe51FWtnmaEcuYEfPA7MRCXKrtqptat4oJdJ8zV5Be", - // blockNumber: 349358090, - // }, - // 133268194659241: { - // address: "Fk1RpqsfeWt8KnFCTW9NQVdVxYvxuqjGn6iPB9wrmM8h", - // blockNumber: 356321050, - // }, + // 34268394551451: "HaQe51FWtnmaEcuYEfPA7MRCXKrtqptat4oJdJ8zV5Be", + // 133268194659241: "Fk1RpqsfeWt8KnFCTW9NQVdVxYvxuqjGn6iPB9wrmM8h", }; diff --git a/packages/sdk/src/utils/multicallHandler.ts b/packages/sdk/src/utils/multicallHandler.ts index 390cdc2..d66abd1 100644 --- a/packages/sdk/src/utils/multicallHandler.ts +++ b/packages/sdk/src/utils/multicallHandler.ts @@ -11,7 +11,7 @@ export type BuildMessageParams = { export function getMultiCallHandlerAddress(chainId: number): Address { const defaultAddress = "0x924a9f036260DdD5808007E1AA95f08eD08aA569"; const deployments = multicallHandlerDeployments; - return deployments?.[chainId]?.address ?? defaultAddress; + return deployments?.[chainId] ?? defaultAddress; } export function buildMulticallHandlerMessage(params: BuildMessageParams) { From 3e362b14dd1bf2c6d847874f2ab6b866afb4f0c6 Mon Sep 17 00:00:00 2001 From: Gerhard Steenkamp Date: Tue, 21 Oct 2025 12:45:24 +0200 Subject: [PATCH 4/4] add changeset Signed-off-by: Gerhard Steenkamp --- .changeset/strong-queens-invite.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strong-queens-invite.md diff --git a/.changeset/strong-queens-invite.md b/.changeset/strong-queens-invite.md new file mode 100644 index 0000000..e8af0eb --- /dev/null +++ b/.changeset/strong-queens-invite.md @@ -0,0 +1,5 @@ +--- +"@across-protocol/app-sdk": patch +--- + +Adds multicall handler contract address definitions