diff --git a/src/adapters/index.ts b/src/adapters/index.ts index c1494cb4..886f697c 100644 --- a/src/adapters/index.ts +++ b/src/adapters/index.ts @@ -28,6 +28,7 @@ import beamer from "./beamer"; import zksync from "./zksync"; import polygon_zkevm from "./polygon_zkevm"; import symbiosis from "./symbiosis"; +import meson from "./meson"; export default { polygon, @@ -58,6 +59,7 @@ export default { zksync, polygon_zkevm, symbiosis, + meson, } as { [bridge: string]: BridgeAdapter; }; diff --git a/src/adapters/meson/index.ts b/src/adapters/meson/index.ts new file mode 100644 index 00000000..0085898e --- /dev/null +++ b/src/adapters/meson/index.ts @@ -0,0 +1,32 @@ +import { Chain } from "@defillama/sdk/build/general"; +import { BridgeAdapter, PartialContractEventParams } from "../../helpers/bridgeAdapter.type"; +import { constructTransferParams } from "../../helpers/eventParams"; +import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions"; + +const contractAddress = "0x25aB3Efd52e6470681CE037cD546Dc60726948D3" + +const constructParams = (chain: string) => { + let eventParams = [] as PartialContractEventParams[]; + const depositParams = constructTransferParams(contractAddress, true, { + excludeFrom: [contractAddress], + }) + const withdrawalParams = constructTransferParams(contractAddress, false, { + excludeTo: [contractAddress], + }) + eventParams.push(depositParams, withdrawalParams) + return async (fromBlock: number, toBlock: number) => + getTxDataFromEVMEventLogs("meson", chain as Chain, fromBlock, toBlock, eventParams) +} + +const adapter: BridgeAdapter = { + ethereum: constructParams("ethereum"), + polygon: constructParams("polygon"), + fantom: constructParams("fantom"), + avalanche: constructParams("avax"), + bsc: constructParams("bsc"), + arbitrum: constructParams("arbitrum"), + optimism: constructParams("optimism"), + aurora: constructParams("aurora"), +}; + +export default adapter; diff --git a/src/data/bridgeNetworkData.ts b/src/data/bridgeNetworkData.ts index 3a2c2cdf..dfa38a13 100644 --- a/src/data/bridgeNetworkData.ts +++ b/src/data/bridgeNetworkData.ts @@ -417,4 +417,25 @@ export default [ // avalanche: "avax", // this is needed temporarily, need to fix and remove // }, // }, + { + id: 28, + displayName: "Meson", + bridgeDbName: "meson", + iconLink: "icons:meson", + largeTxThreshold: 10000, + url: "", + chains: [ + "Ethereum", + "Polygon", + "Fantom", + "Avalanche", + "Arbitrum", + "Optimism", + "Aurora", + "BSC", + ], + chainMapping: { + avalanche: "avax", + }, + }, ] as BridgeNetwork[];