Skip to content

Commit fddc420

Browse files
authored
chore: support monad testnet (#11228)
<!-- Before opening a pull request, please read the [contributing guidelines](https://github.com/pancakeswap/pancake-frontend/blob/develop/CONTRIBUTING.md) first --> <!-- start pr-codex --> --- ## PR-Codex overview This PR introduces support for `Monad Testnet` across various components in the codebase, including constants, configurations, and token definitions. It ensures that the new chain is integrated into the existing ecosystem. ### Detailed summary - Added `ChainId.MONAD_TESTNET` in multiple files. - Updated block times, token addresses, and configurations to include `Monad Testnet`. - Integrated `Monad Testnet` into network switchers and token definitions. - Modified constants and API endpoints for compatibility with `Monad Testnet`. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` <!-- end pr-codex -->
1 parent bf21cf0 commit fddc420

File tree

41 files changed

+144
-19
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+144
-19
lines changed

apis/routing/src/provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { ChainId, getV3Subgraphs } from '@pancakeswap/chains'
22
import { OnChainProvider, SubgraphProvider } from '@pancakeswap/smart-router'
3+
import { GraphQLClient } from 'graphql-request'
34
import { createPublicClient, http } from 'viem'
45
import { bsc, bscTestnet, goerli, mainnet } from 'viem/chains'
5-
import { GraphQLClient } from 'graphql-request'
66

77
import { SupportedChainId } from './constants'
88

apps/aptos/components/NetworkSwitcher.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const evmChains = [
1717
{ id: 59144, name: 'Linea', chainName: 'linea' },
1818
{ id: 8453, name: 'Base', chainName: 'base' },
1919
{ id: 204, name: 'opBNB Mainnet', chainName: 'opBNB' },
20+
{ id: 10143, name: 'Monad Testnet', chainName: 'monad' },
2021
]
2122

2223
const NetworkSelect = () => {

apps/gamification/components/NetworkSwitcher.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ export const SHORT_SYMBOL = {
155155
[ChainId.SEPOLIA]: 'sepolia',
156156
[ChainId.BASE_SEPOLIA]: 'Base Sepolia',
157157
[ChainId.ARBITRUM_SEPOLIA]: 'Arb Sepolia',
158+
[ChainId.MONAD_TESTNET]: 'tMonad',
158159
} as const satisfies Record<ChainId, string>
159160

160161
export const NetworkSwitcher = () => {

apps/gamification/config/nodes.ts

+9
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
baseGoerli,
1111
baseSepolia,
1212
linea,
13+
monadTestnet,
1314
opBNB,
1415
opBNBTestnet,
1516
polygonZkEvm,
@@ -84,6 +85,10 @@ export const SERVER_NODES = {
8485
[ChainId.SEPOLIA]: sepolia.rpcUrls.default.http,
8586
[ChainId.ARBITRUM_SEPOLIA]: arbitrumSepolia.rpcUrls.default.http,
8687
[ChainId.BASE_SEPOLIA]: baseSepolia.rpcUrls.default.http,
88+
[ChainId.MONAD_TESTNET]: [
89+
'https://testnet-rpc2.monad.xyz/52227f026fa8fac9e2014c58fbf5643369b3bfc6',
90+
...monadTestnet.rpcUrls.default.http,
91+
],
8792
} satisfies Record<ChainId, readonly string[]>
8893

8994
export const PUBLIC_NODES = {
@@ -156,4 +161,8 @@ export const PUBLIC_NODES = {
156161
[ChainId.SEPOLIA]: sepolia.rpcUrls.default.http,
157162
[ChainId.ARBITRUM_SEPOLIA]: arbitrumSepolia.rpcUrls.default.http,
158163
[ChainId.BASE_SEPOLIA]: baseSepolia.rpcUrls.default.http,
164+
[ChainId.MONAD_TESTNET]: [
165+
'https://testnet-rpc2.monad.xyz/52227f026fa8fac9e2014c58fbf5643369b3bfc6',
166+
...monadTestnet.rpcUrls.default.http,
167+
],
159168
} satisfies Record<ChainId, readonly string[]>

apps/web/src/components/NetworkSwitcher.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const NetworkSelect = ({ switchNetwork, chainId, isWrongNetwork }) => {
4545
{chains
4646
.filter((chain) => {
4747
if (chain.id === chainId) return true
48-
if ('testnet' in chain && chain.testnet) {
48+
if ('testnet' in chain && chain.testnet && chain.id !== ChainId.MONAD_TESTNET) {
4949
return showTestnet
5050
}
5151
return true
@@ -163,6 +163,7 @@ const SHORT_SYMBOL = {
163163
[ChainId.SEPOLIA]: 'sepolia',
164164
[ChainId.BASE_SEPOLIA]: 'Base Sepolia',
165165
[ChainId.ARBITRUM_SEPOLIA]: 'Arb Sepolia',
166+
[ChainId.MONAD_TESTNET]: 'tMonad',
166167
} as const satisfies Record<ChainId, string>
167168

168169
export const NetworkSwitcher = () => {

apps/web/src/config/chains.ts

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
linea,
1515
lineaTestnet,
1616
mainnet,
17+
monadTestnet,
1718
opBNB,
1819
opBNBTestnet,
1920
polygonZkEvm,
@@ -93,4 +94,5 @@ export const CHAINS: [Chain, ...Chain[]] = [
9394
opBNB,
9495
opBNBTestnet,
9596
scrollSepolia,
97+
monadTestnet,
9698
]

apps/web/src/config/constants/contracts.ts

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default {
3939
[ChainId.OPBNB_TESTNET]: '0xcA11bde05977b3631167028862bE2a173976CA11',
4040
[ChainId.BASE_TESTNET]: '0xcA11bde05977b3631167028862bE2a173976CA11',
4141
[ChainId.SCROLL_SEPOLIA]: '0xcA11bde05977b3631167028862bE2a173976CA11',
42+
[ChainId.MONAD_TESTNET]: '0xcA11bde05977b3631167028862bE2a173976CA11',
4243
},
4344
pancakeProfile: {
4445
[ChainId.BSC]: '0xDf4dBf6536201370F95e06A0F8a7a70fE40E388a',
@@ -195,6 +196,7 @@ export default {
195196
[ChainId.BASE_TESTNET]: '0x8Ae8592a24CD13b7E09D2763E7d6A39E3c0D6bad',
196197
[ChainId.SCROLL_SEPOLIA]: '0x8Ae8592a24CD13b7E09D2763E7d6A39E3c0D6bad',
197198
[ChainId.SEPOLIA]: '0xbC203d7f83677c7ed3F7acEc959963E7F4ECC5C2',
199+
[ChainId.MONAD_TESTNET]: '0x295BA23629F0F18A28DA20F3Fb392558828b14A3',
198200
},
199201
quoter: V3_QUOTER_ADDRESSES,
200202
v3Airdrop: {

apps/web/src/config/constants/exchange.ts

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
bscTokens,
1616
lineaTestnetTokens,
1717
lineaTokens,
18+
monadTestnetTokens,
1819
opBnbTestnetTokens,
1920
opBnbTokens,
2021
polygonZkEvmTestnetTokens,
@@ -54,6 +55,7 @@ export const CHAIN_REFRESH_TIME = {
5455
[ChainId.SEPOLIA]: 12_000,
5556
[ChainId.BASE_SEPOLIA]: 6_000,
5657
[ChainId.ARBITRUM_SEPOLIA]: 6_000,
58+
[ChainId.MONAD_TESTNET]: 6_000,
5759
} as const satisfies Record<ChainId, number>
5860

5961
// used for display in the default list when adding liquidity
@@ -83,6 +85,7 @@ export const SUGGESTED_BASES: ChainTokenList = {
8385
[ChainId.SEPOLIA]: [scrollSepoliaTokens.usdc, scrollSepoliaTokens.weth],
8486
[ChainId.ARBITRUM_SEPOLIA]: [arbSepoliaTokens.usdc, arbSepoliaTokens.weth],
8587
[ChainId.BASE_SEPOLIA]: [baseSepoliaTokens.usdc, baseSepoliaTokens.weth],
88+
[ChainId.MONAD_TESTNET]: [monadTestnetTokens.usdc, monadTestnetTokens.busd],
8689
}
8790

8891
// used to construct the list of all pairs we consider by default in the frontend
@@ -107,6 +110,7 @@ export const BASES_TO_TRACK_LIQUIDITY_FOR: ChainTokenList = {
107110
[ChainId.SEPOLIA]: [sepoliaTokens.usdc, sepoliaTokens.weth],
108111
[ChainId.ARBITRUM_SEPOLIA]: [arbSepoliaTokens.usdc, arbSepoliaTokens.weth],
109112
[ChainId.BASE_SEPOLIA]: [baseSepoliaTokens.usdc, baseSepoliaTokens.weth],
113+
[ChainId.MONAD_TESTNET]: [monadTestnetTokens.usdc, monadTestnetTokens.busd],
110114
}
111115

112116
export const PINNED_PAIRS: { readonly [chainId in ChainId]?: [Token, Token][] } = {

apps/web/src/config/constants/lists.ts

+5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const PANCAKE_OPBNB_DEFAULT = 'https://tokens.pancakeswap.finance/pancake
1414
export const PANCAKE_ETH_MM = 'https://tokens.pancakeswap.finance/pancakeswap-eth-mm.json'
1515
export const PANCAKE_BSC_MM = 'https://tokens.pancakeswap.finance/pancakeswap-bnb-mm.json'
1616
export const PANCAKE_ARB_MM = 'https://tokens.pancakeswap.finance/pancakeswap-arb-mm.json'
17+
export const PANCAKE_MONAD_TESTNET_DEFAULT = 'https://tokens.pancakeswap.finance/pancakeswap-monad-testnet-default.json'
1718

1819
const COINGECKO_ETH = 'https://tokens.coingecko.com/uniswap/all.json'
1920
// export const CMC = 'https://tokens.pancakeswap.finance/cmc.json' // not updated for a while
@@ -38,6 +39,7 @@ const OP_SUPER_CHAIN_URL =
3839
'https://raw.githubusercontent.com/ethereum-optimism/ethereum-optimism.github.io/master/optimism.tokenlist.json'
3940
const BASE_URLS = [PANCAKE_BASE_DEFAULT, OP_SUPER_CHAIN_URL, 'https://tokens.coingecko.com/base/all.json']
4041
const OPBNB_URLS = [PANCAKE_OPBNB_DEFAULT]
42+
const MONAD_TESTNET_URLS = [PANCAKE_MONAD_TESTNET_DEFAULT]
4143

4244
// List of official tokens list
4345
export const OFFICIAL_LISTS = [PANCAKE_EXTENDED, PANCAKE_ETH_DEFAULT]
@@ -58,6 +60,7 @@ export const DEFAULT_LIST_OF_LISTS: string[] = [
5860
...UNSUPPORTED_LIST_URLS, // need to load unsupported tokens as well
5961
...WARNING_LIST_URLS,
6062
...OPBNB_URLS,
63+
...MONAD_TESTNET_URLS,
6164
]
6265

6366
// default lists to be 'active' aka searched across
@@ -77,6 +80,7 @@ export const DEFAULT_ACTIVE_LIST_URLS: string[] = [
7780
OP_SUPER_CHAIN_URL,
7881
COINGECKO,
7982
COINGECKO_ETH,
83+
PANCAKE_MONAD_TESTNET_DEFAULT,
8084
]
8185

8286
export const MULTI_CHAIN_LIST_URLS: { [chainId: number]: string[] } = {
@@ -88,4 +92,5 @@ export const MULTI_CHAIN_LIST_URLS: { [chainId: number]: string[] } = {
8892
[ChainId.LINEA]: LINEA_URLS,
8993
[ChainId.BASE]: BASE_URLS,
9094
[ChainId.OPBNB]: OPBNB_URLS,
95+
[ChainId.MONAD_TESTNET]: MONAD_TESTNET_URLS,
9196
}

apps/web/src/config/constants/supportChains.ts

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const LIQUID_STAKING_SUPPORTED_CHAINS = [
88
ChainId.ETHEREUM,
99
ChainId.BSC_TESTNET,
1010
ChainId.ARBITRUM_GOERLI,
11+
ChainId.MONAD_TESTNET,
1112
]
1213
export const FIXED_STAKING_SUPPORTED_CHAINS = [ChainId.BSC]
1314

apps/web/src/config/nodes.ts

+9
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
baseGoerli,
1111
baseSepolia,
1212
linea,
13+
monadTestnet,
1314
opBNB,
1415
opBNBTestnet,
1516
polygonZkEvm,
@@ -84,6 +85,10 @@ export const SERVER_NODES = {
8485
[ChainId.SEPOLIA]: sepolia.rpcUrls.default.http,
8586
[ChainId.ARBITRUM_SEPOLIA]: arbitrumSepolia.rpcUrls.default.http,
8687
[ChainId.BASE_SEPOLIA]: baseSepolia.rpcUrls.default.http,
88+
[ChainId.MONAD_TESTNET]: [
89+
'https://testnet-rpc2.monad.xyz/52227f026fa8fac9e2014c58fbf5643369b3bfc6',
90+
...monadTestnet.rpcUrls.default.http,
91+
],
8792
} satisfies Record<ChainId, readonly string[]>
8893

8994
export const PUBLIC_NODES: Record<ChainId, string[] | readonly string[]> = {
@@ -160,4 +165,8 @@ export const PUBLIC_NODES: Record<ChainId, string[] | readonly string[]> = {
160165
[ChainId.SEPOLIA]: sepolia.rpcUrls.default.http,
161166
[ChainId.ARBITRUM_SEPOLIA]: arbitrumSepolia.rpcUrls.default.http,
162167
[ChainId.BASE_SEPOLIA]: baseSepolia.rpcUrls.default.http,
168+
[ChainId.MONAD_TESTNET]: [
169+
'https://testnet-rpc2.monad.xyz/52227f026fa8fac9e2014c58fbf5643369b3bfc6',
170+
...monadTestnet.rpcUrls.default.http,
171+
],
163172
} satisfies Record<ChainId, readonly string[]>

apps/web/src/config/pools.ts

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const POOLS_FAST_REVALIDATE = {
2222
[ChainId.SEPOLIA]: 20_000,
2323
[ChainId.ARBITRUM_SEPOLIA]: 10_000,
2424
[ChainId.BASE_SEPOLIA]: 10_000,
25+
[ChainId.MONAD_TESTNET]: 10_000,
2526
} as const satisfies Record<ChainId, number>
2627

2728
// Revalidate interval in milliseconds
@@ -46,6 +47,7 @@ export const POOLS_NORMAL_REVALIDATE = {
4647
[ChainId.SEPOLIA]: 20_000,
4748
[ChainId.ARBITRUM_SEPOLIA]: 15_000,
4849
[ChainId.BASE_SEPOLIA]: 15_000,
50+
[ChainId.MONAD_TESTNET]: 15_000,
4951
} as const satisfies Record<ChainId, number>
5052

5153
export const POOLS_SLOW_REVALIDATE = {
@@ -69,4 +71,5 @@ export const POOLS_SLOW_REVALIDATE = {
6971
[ChainId.SEPOLIA]: 40_000,
7072
[ChainId.ARBITRUM_SEPOLIA]: 20_000,
7173
[ChainId.BASE_SEPOLIA]: 20_000,
74+
[ChainId.MONAD_TESTNET]: 20_000,
7275
} as const satisfies Record<ChainId, number>

apps/web/src/views/AddLiquidityV3/formViews/V3FormView/index.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ import useV3DerivedInfo from 'hooks/v3/useV3DerivedInfo'
3838
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
3939

4040
import { ApprovalState, useApproveCallback } from 'hooks/useApproveCallback'
41-
import { CurrencyField as Field } from 'utils/types'
4241
import { basisPointsToPercent } from 'utils/exchange'
4342
import { maxAmountSpend } from 'utils/maxAmountSpend'
43+
import { CurrencyField as Field } from 'utils/types'
4444

4545
import { useTranslation } from '@pancakeswap/localization'
4646
import TransactionConfirmationModal from 'components/TransactionConfirmationModal'
@@ -60,10 +60,10 @@ import { V3SubmitButton } from 'views/AddLiquidityV3/components/V3SubmitButton'
6060
import { QUICK_ACTION_CONFIGS } from 'views/AddLiquidityV3/types'
6161
import { useSendTransaction, useWalletClient } from 'wagmi'
6262

63-
import { transactionErrorToUserReadableMessage } from 'utils/transactionErrorToUserReadableMessage'
64-
import { useDensityChartData } from 'views/AddLiquidityV3/hooks/useDensityChartData'
6563
import { ZapLiquidityWidget } from 'components/ZapLiquidityWidget'
6664
import { ZAP_V3_POOL_ADDRESSES } from 'config/constants/zapV3'
65+
import { transactionErrorToUserReadableMessage } from 'utils/transactionErrorToUserReadableMessage'
66+
import { useDensityChartData } from 'views/AddLiquidityV3/hooks/useDensityChartData'
6767
import LockedDeposit from './components/LockedDeposit'
6868
import { PositionPreview } from './components/PositionPreview'
6969
import RangeSelector from './components/RangeSelector'
@@ -274,7 +274,6 @@ export default function V3FormView({
274274

275275
const onAdd = useCallback(async () => {
276276
logGTMClickAddLiquidityConfirmEvent()
277-
278277
if (
279278
!chainId ||
280279
!signer ||

apps/web/src/views/TradingReward/config/pairs/index.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ export const tradingRewardPairConfigChainMap: Record<FarmV3SupportedChainId, Com
2121
[ChainId.BASE]: [...tradingRewardBaseV3Pair],
2222
[ChainId.OPBNB_TESTNET]: [],
2323
[ChainId.OPBNB]: [],
24+
[ChainId.MONAD_TESTNET]: [],
2425
}

packages/chains/src/averageChainBlockTimes.ts

+1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ export const AVERAGE_CHAIN_BLOCK_TIMES: Record<ChainId, number> = {
2121
[ChainId.ARBITRUM_SEPOLIA]: 0,
2222
[ChainId.BASE_SEPOLIA]: 0,
2323
[ChainId.SEPOLIA]: 0,
24+
[ChainId.MONAD_TESTNET]: 1,
2425
}

packages/chains/src/chainId.ts

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export enum ChainId {
1919
BASE_TESTNET = 84531,
2020
BASE_SEPOLIA = 84532,
2121
SEPOLIA = 11155111,
22+
MONAD_TESTNET = 10143,
2223
}
2324

2425
export const testnetChainIds = [
@@ -34,4 +35,5 @@ export const testnetChainIds = [
3435
ChainId.SEPOLIA,
3536
ChainId.ARBITRUM_SEPOLIA,
3637
ChainId.BASE_SEPOLIA,
38+
ChainId.MONAD_TESTNET,
3739
]

packages/chains/src/chainNames.ts

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const chainNames: Record<ChainId, string> = {
2121
[ChainId.SEPOLIA]: 'sepolia',
2222
[ChainId.ARBITRUM_SEPOLIA]: 'arbSepolia',
2323
[ChainId.BASE_SEPOLIA]: 'baseSepolia',
24+
[ChainId.MONAD_TESTNET]: 'monadTestnet',
2425
}
2526

2627
export const chainNamesInKebabCase = {
@@ -44,6 +45,7 @@ export const chainNamesInKebabCase = {
4445
[ChainId.SEPOLIA]: 'sepolia',
4546
[ChainId.ARBITRUM_SEPOLIA]: 'arbitrum-sepolia',
4647
[ChainId.BASE_SEPOLIA]: 'base-sepolia',
48+
[ChainId.MONAD_TESTNET]: 'monad-testnet',
4749
} as const
4850

4951
export const mainnetChainNamesInKebabCase = {
@@ -98,4 +100,5 @@ export const defiLlamaChainNames: Record<ChainId, string> = {
98100
[ChainId.SEPOLIA]: '',
99101
[ChainId.ARBITRUM_SEPOLIA]: '',
100102
[ChainId.BASE_SEPOLIA]: '',
103+
[ChainId.MONAD_TESTNET]: '',
101104
}

packages/chains/src/subgraphs.ts

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export function getV3Subgraphs({ noderealApiKey, theGraphApiKey }: SubgraphParam
4545
[ChainId.SEPOLIA]: null,
4646
[ChainId.ARBITRUM_SEPOLIA]: null,
4747
[ChainId.BASE_SEPOLIA]: null,
48+
[ChainId.MONAD_TESTNET]: null,
4849
} as const satisfies Record<ChainId, string | null>
4950
}
5051

packages/farms/constants/common/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,5 @@ export const DEFAULT_COMMON_PRICE: Record<FarmV3SupportedChainId, CommonPrice> =
8585
[ChainId.BASE]: {},
8686
[ChainId.OPBNB_TESTNET]: {},
8787
[ChainId.OPBNB]: {},
88+
[ChainId.MONAD_TESTNET]: {},
8889
}

packages/farms/src/const.ts

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const supportedChainIdV2 = [
1919
ChainId.BSC_TESTNET,
2020
ChainId.ETHEREUM,
2121
ChainId.ARBITRUM_ONE,
22+
ChainId.MONAD_TESTNET,
2223
] as const
2324
export const supportedChainIdV3 = [
2425
// ChainId.GOERLI,
@@ -34,6 +35,7 @@ export const supportedChainIdV3 = [
3435
ChainId.BASE,
3536
ChainId.OPBNB,
3637
ChainId.OPBNB_TESTNET,
38+
ChainId.MONAD_TESTNET,
3739
] as const
3840
export const supportedChainId = uniq([...supportedChainIdV2, ...supportedChainIdV3])
3941
export const bCakeSupportedChainId = [
@@ -73,6 +75,7 @@ export const masterChefV3Addresses = {
7375
[ChainId.BASE]: '0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3',
7476
[ChainId.OPBNB]: '0x05ddEDd07C51739d2aE21F6A9d97a8d69C2C3aaA',
7577
[ChainId.OPBNB_TESTNET]: '0x236e713bFF45adb30e25D1c29A887aBCb0Ea7E21',
78+
[ChainId.MONAD_TESTNET]: '0x',
7679
} as const satisfies Record<FarmV3SupportedChainId, string>
7780

7881
export const crossFarmingVaultAddresses = {

packages/farms/src/v2/fetchFarmsV2.ts

+5
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ const evmNativeStableLpMap: Record<
4343
wNative: 'WETH',
4444
stable: 'USDC',
4545
},
46+
[ChainId.MONAD_TESTNET]: {
47+
address: '0x4E96D2e92680Ca65D58A0e2eB5bd1c0f44cAB897',
48+
wNative: 'MON',
49+
stable: 'USDC',
50+
},
4651
}
4752

4853
export const getTokenAmount = (balance: BN, decimals: number) => {

packages/multicall/src/constants/blockConflictTolerance.ts

+1
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ export const BLOCK_CONFLICT_TOLERANCE: { [key in ChainId]?: number } = {
2222
[ChainId.OPBNB_TESTNET]: 3,
2323
[ChainId.BASE_TESTNET]: 3,
2424
[ChainId.SCROLL_SEPOLIA]: 3,
25+
[ChainId.MONAD_TESTNET]: 3,
2526
}

packages/permit2-sdk/src/constants.ts

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ const PERMIT2_ADDRESSES: Record<ChainId, Address> = {
3232

3333
[ChainId.OPBNB]: '0x31c2F6fcFf4F8759b3Bd5Bf0e1084A055615c768',
3434
[ChainId.OPBNB_TESTNET]: '0x31c2F6fcFf4F8759b3Bd5Bf0e1084A055615c768',
35+
36+
[ChainId.MONAD_TESTNET]: '0xCe0Ee699531CA107A22f59A1A31A1f62E12571Bb',
3537
}
3638

3739
export const getPermit2Address = (chainId: ChainId | undefined): Address | undefined => {

packages/routing-sdk/addons/quoter/src/constants/mixedRouteQuoterV1.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ export const MIXED_ROUTE_QUOTER_ADDRESSES = {
2525
[ChainId.SEPOLIA]: '0x4c650FB471fe4e0f476fD3437C3411B1122c4e3B',
2626
[ChainId.ARBITRUM_SEPOLIA]: '0x4c650FB471fe4e0f476fD3437C3411B1122c4e3B',
2727
[ChainId.BASE_SEPOLIA]: '0x4c650FB471fe4e0f476fD3437C3411B1122c4e3B',
28+
[ChainId.MONAD_TESTNET]: '0x85b787D71D8E7774c2f10a368BB6cC1C5c2fceD1',
2829
} as const satisfies Record<ChainId, Address>

packages/routing-sdk/addons/quoter/src/constants/v3Quoter.ts

+1
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ export const V3_QUOTER_ADDRESSES = {
2222
[ChainId.SEPOLIA]: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997',
2323
[ChainId.ARBITRUM_SEPOLIA]: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997',
2424
[ChainId.BASE_SEPOLIA]: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997',
25+
[ChainId.MONAD_TESTNET]: '0x7920A0deBEDc8fDa9F3Ff094F5eC9881329d7827',
2526
} as const satisfies Record<ChainId, Address>

0 commit comments

Comments
 (0)