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 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" + } + ] + } + ] } } diff --git a/packages/sdk/src/constants/multicall-handler.ts b/packages/sdk/src/constants/multicall-handler.ts new file mode 100644 index 0000000..819020e --- /dev/null +++ b/packages/sdk/src/constants/multicall-handler.ts @@ -0,0 +1,40 @@ +import { Address } from "viem"; + +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: "HaQe51FWtnmaEcuYEfPA7MRCXKrtqptat4oJdJ8zV5Be", + // 133268194659241: "Fk1RpqsfeWt8KnFCTW9NQVdVxYvxuqjGn6iPB9wrmM8h", +}; diff --git a/packages/sdk/src/utils/multicallHandler.ts b/packages/sdk/src/utils/multicallHandler.ts index 64c739e..d66abd1 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] ?? defaultAddress; } export function buildMulticallHandlerMessage(params: BuildMessageParams) {