UNPKG

@syncswap/sdk

Version:

SyncSwap TypeScript SDK for building DeFi applications

166 lines 13.9 kB
import { LINEA_MAINNET, SCROLL_MAINNET, SOPHON_MAINNET, ZKCANDY_MAINNET, ZKSYNC_MAINNET } from "../sdkHelper.js"; import { stateStore } from "../statestore/statestore.js"; import { ETH_MAINNET, Token } from "../tokens/tokenRegistry.js"; import ContractRegistry from "./contractRegistry.js"; import { ContractTypes } from "./contractTypes.js"; let previousNetwork = null; export class ContractInitiator { /** * @dev Initialize all contracts with necessary metadata. * * Provider / Signer is not required as they will be connected on using. */ static async initialize(targetNetwork) { const startTime = Date.now(); const network = targetNetwork ?? stateStore().network; if (true || network !== previousNetwork) { previousNetwork = network; ContractRegistry.resetContracts(); Token.ETHER = Token._ETHER; if (network === SOPHON_MAINNET) { Token.ETHER = Token._SOPH; } } if (network === ZKSYNC_MAINNET) { await registerZkSyncMainnetContracts(); } if (network === LINEA_MAINNET) { await registerLineaMainnetContracts(); } if (network === SCROLL_MAINNET) { await registerScrollMainnetContracts(); } if (network === SOPHON_MAINNET) { await registerSophonMainnetContracts(); } if (network === ETH_MAINNET) { await registerEthereumMainnetContracts(); } if (network === ZKCANDY_MAINNET) { await registerZkCandyMainnetContracts(); } console.log('Contract initialize: cost', (Date.now() - startTime), 'ms'); } } // zkSync Mainnet async function registerZkSyncMainnetContracts() { await Promise.all([ ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.WETH, 'weth', '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91'), // V2 ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.ROUTER_V2, 'router', '0x9B5def958d0f3b6955cBEa4D5B7809b2fb26b059'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.POOL_MASTER, 'pool_master3', '0x1FC09AC4b4217602bC34223859783c81310e3791'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.CLASSIC_FACTORY, 'classic_factory3', '0xA757eD0812092E2a8F78e6642a2A3215995A4131'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.STABLE_FACTORY, 'stable_factory3', '0x582ad7014C3f755Fc0d29eCFC02FAB4c3A2D5a3D'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.CRYPTO_FACTORY, 'crypto_factory3', '0x0754870C1aAb00eDCFABDF4e6FEbDD30e90f327d'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.MULTICALL, 'multicall', '0xA23DDf516C1B00B2f00E5466426FA244d275D4F1'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.ROUTE_HELPER, 'route_helper', '0x123c8659127b39925072f1333c9C99a093d069a3'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.TOKEN_HELPER, 'token_helper', '0x455FFfa180D50D8a1AdaaA46Eb2bfb4C1bb28602'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.POOL_HELPER, 'pool_helper', '0x3c027273b160eF29C9b5Bce641881B9e96245C92'), // V3 ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.NFT_POSITION_MANAGER, 'nft_position_manager', '0x7581A80c84D7488BE276E6c7b4c1206F25946502'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.QUOTER, 'quoter', '0x877B04aA6ee60d39dccC675633157E293f6991E9'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.ROUTER_V3, ContractTypes.ROUTER_V3.name, '0x2c81dF4F11A1C7E43Acb972e73767B1f5d0d9edc'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.POOL_MASTER, 'pool_master_range', '0x31a2c9BDE9396222A07D06Ed79Ef1C9200303978'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.CRYPTO_FACTORY, 'ranged_factory', '0x9D63d318143cF14FF05f8AAA7491904A494e6f13'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.MULTICALL2, 'multicall2', '0x1194Ad57A4e0CCebC75BFD90d94277b38017bA30'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.MULTICALL3, 'multicall3', '0xF9cda624FBC7e059355ce98a31693d299FACd963'), ContractRegistry.register(ZKSYNC_MAINNET, ContractTypes.WRAPPER_ROUTER_V3, ContractTypes.WRAPPER_ROUTER_V3.name, '0xFbC0F41075b5D9927dd3b08dE18F53D00B16c399'), ]); } // Linea Mainnet async function registerLineaMainnetContracts() { await Promise.all([ ContractRegistry.register(LINEA_MAINNET, ContractTypes.WETH, 'weth', '0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f'), // V2 ContractRegistry.register(LINEA_MAINNET, ContractTypes.ROUTER_V2, 'router', '0xc2a1947d2336b2af74d5813dc9ca6e0c3b3e8a1e'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.POOL_MASTER, 'pool_master3', '0xeE8790cE315c0871ec612f0A6EbB5471A955b3A0'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.CLASSIC_FACTORY, 'classic_factory3', '0xb8AbaEa25E42DA5ac6897C9DAb0a8157885fE32b'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.STABLE_FACTORY, 'stable_factory3', '0x024A096bAb43587d24004C95C3e20FcB7518Ad86'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.CRYPTO_FACTORY, 'crypto_factory3', '0x1080EE857D165186aF7F8d63e8ec510C28A6d1Ea'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.MULTICALL, 'multicall', '0xC70a3224DE690F1e0c3AcF271219cf68a728D8b4'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.ROUTE_HELPER, 'route_helper', '0x948702164daBb36Acc9f4e68D8e373f4DFF72b0c'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.TOKEN_HELPER, 'token_helper', '0x3d7B585A835e1f37dF2fe081234Da0cA95D88462'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.POOL_HELPER, 'pool_helper', '0xA211DF3fc0451c640eEBe5Dd6dBd80b7A2A1D4f3'), // V3 ContractRegistry.register(LINEA_MAINNET, ContractTypes.NFT_POSITION_MANAGER, 'nft_position_manager', '0x19BBE6BB16d9Ff3F8c2fBfC5dfa5805DeDd9A09d'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.QUOTER, 'quoter', '0xee424Ee3a453b91Da9d64A69d4506a2351eFA57f'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.ROUTER_V3, ContractTypes.ROUTER_V3.name, '0x0B64bA230D4c9d133aA7a52ceFF1620178b07c55'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.POOL_MASTER, 'pool_master_range', '0xBc632B9683a63ac6fa10cacE8a48491f065963dB'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.CRYPTO_FACTORY, 'ranged_factory', '0xc5916f6cF441c72DaA2E2C48AfC7CE642eEe6690'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.MULTICALL2, 'multicall2', '0x4ebEAF7f85253b0E191F9DA7D19D2B56B1fa9d27'), ContractRegistry.register(LINEA_MAINNET, ContractTypes.MULTICALL3, 'multicall3', '0xcA11bde05977b3631167028862bE2a173976CA11'), ]); } // Scroll Mainnet async function registerScrollMainnetContracts() { await Promise.all([ ContractRegistry.register(SCROLL_MAINNET, ContractTypes.WETH, 'weth', '0x5300000000000000000000000000000000000004'), // V2 ContractRegistry.register(SCROLL_MAINNET, ContractTypes.ROUTER_V2, 'router', '0xfd541d0e2773a189450a70f06bc7edd3c1dc9115'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.POOL_MASTER, 'pool_master3', '0x4318a74425E5353a1194CF26138Baa87B607657C'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.CLASSIC_FACTORY, 'classic_factory3', '0x76f549af692efA64952d02c075226df9878Fb54C'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.STABLE_FACTORY, 'stable_factory3', '0xA2acA673C00495A184F88De533BBa8e1b7f38D00'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.CRYPTO_FACTORY, 'crypto_factory3', '0x87aeb51d606056F48D241C4072f55ACd9D937018'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.MULTICALL, 'multicall', '0xA727701bFAA356a3bf2Ea64107c1Da9Ea2080957'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.ROUTE_HELPER, 'route_helper', '0x06A05357a6928940888Ad9460ED53Bb61f0Aef6D'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.TOKEN_HELPER, 'token_helper', '0x4460F0dCacBf61B1D71CBca70B7167C372B836B6'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.POOL_HELPER, 'pool_helper', '0xaAeaBF86D1Ffb52B562DFdBDaaef7C042887acF4'), // V3 ContractRegistry.register(SCROLL_MAINNET, ContractTypes.NFT_POSITION_MANAGER, 'nft_position_manager', '0x85237Fd21640B414b1101dAE5C306e4E126B2709'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.QUOTER, 'quoter', '0x0dD628A68bE876D48b11627c63a6900AEf737B42'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.ROUTER_V3, ContractTypes.ROUTER_V3.name, '0x88A0E09D40b021c0590cf106b7F87A909B9C508C'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.POOL_MASTER, 'pool_master_range', '0x53C261DaF681CaBBD5cE3ae855BBE7aFcA72377D'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.CRYPTO_FACTORY, 'ranged_factory', '0xB11042007e78bE92dc1c79DA1e7eF499b4B31838'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.MULTICALL2, 'multicall2', '0x23001017Eb99d57d02775C23C4Ac96CF89AB9d43'), ContractRegistry.register(SCROLL_MAINNET, ContractTypes.MULTICALL3, 'multicall3', '0xcA11bde05977b3631167028862bE2a173976CA11'), ]); } // Ethereum Mainnet async function registerEthereumMainnetContracts() { await Promise.all([ ContractRegistry.register(ETH_MAINNET, ContractTypes.WETH, 'weth', '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), ContractRegistry.register(ETH_MAINNET, ContractTypes.TOKEN_HELPER, 'token_helper', '0xEFF36a18bfE1B1eB98ea22Ae86a25e7190499d46'), ]); } // ZkCandy Mainnet async function registerZkCandyMainnetContracts() { await Promise.all([ ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.WETH, 'weth', '0x1e347256309b4764edd8d7bdf4aa4ecb62b58320'), // V2 ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.ROUTER_V2, 'router', '0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.POOL_MASTER, 'pool_master3', '0x2da10A1e27bF85cEdD8FFb1AbBe97e53391C0295'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.CLASSIC_FACTORY, 'classic_factory3', '0xC0A4682C82754b6AbBe6eB98E0070e464DA19f72'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.STABLE_FACTORY, 'stable_factory3', '0xE341c99621d2Eb13E79CAe7F0F79Db1bE314e428'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.CRYPTO_FACTORY, 'crypto_factory3', '0x4444f80DfB8a8a29E79087f066eaC306784699Ce'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.MULTICALL, 'multicall', '0xa2504f4a5f67CC573c6531Ac4e7A2e6A2fB003f2'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.ROUTE_HELPER, 'route_helper', '0xFF65D0a12fAF7781d3188B810aa57526479179c3'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.TOKEN_HELPER, 'token_helper', '0xe5d006525a045783ca63B1ad7841E9345daA9f99'), ContractRegistry.register(ZKCANDY_MAINNET, ContractTypes.POOL_HELPER, 'pool_helper', '0xd45ab0E1dc7F503Eb177949c2Fb2Ab772B4B6CFC'), ]); } async function registerSophonMainnetContracts() { await Promise.all([ // WSOPH ContractRegistry.register(SOPHON_MAINNET, ContractTypes.WETH, "weth", "0x2b1a859de6a55c553520d7780bc5805712b128f9"), // V2 ContractRegistry.register(SOPHON_MAINNET, ContractTypes.ROUTER_V2, "router", "0x2da10A1e27bF85cEdD8FFb1AbBe97e53391C0295"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.POOL_MASTER, "pool_master3", "0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.CLASSIC_FACTORY, "classic_factory3", "0x432bcc3BC62DE9186f9E8763C82d43e418681e6C"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.STABLE_FACTORY, "stable_factory3", "0x8C9d66bA3E1D7681cfFFfa3C7d9807adae368E74"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.CRYPTO_FACTORY, "crypto_factory3", "0xA2E2F6B5dB704fDe654DB69895C89523332E538E"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.MULTICALL, "multicall", "0x6e5056cBaa4082d4eeE06906Be7680A8524Ed675"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.ROUTE_HELPER, "route_helper", "0xb9f34758a571052ABe9CBcB242434EfA5894Ea69"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.TOKEN_HELPER, "token_helper", "0x3c027273b160eF29C9b5Bce641881B9e96245C92"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.POOL_HELPER, "pool_helper", "0x46384918127fBd1679C757DF7b495C3F61481467"), // V3 ContractRegistry.register(SOPHON_MAINNET, ContractTypes.NFT_POSITION_MANAGER, "nft_position_manager", "0x55A853462862d54Ef6Fce380CE83dFd60494cf7a"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.QUOTER, "quoter", "0x7339B33F149B51616a01966Ba23bE63F11226b77"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.ROUTER_V3, ContractTypes.ROUTER_V3.name, "0x69663Ea7C713756A2cf34e9fEf1997C7e0d21bC5"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.POOL_MASTER, "pool_master_range", "0x9012C7CE4d1f677aaf9241CF7d4D05fC596556e8"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.CRYPTO_FACTORY, "ranged_factory", "0x0f6e27007e257e74c86522387BD071D561ba3C97"), ContractRegistry.register(SOPHON_MAINNET, ContractTypes.MULTICALL2, "multicall2", "0x5ecb88d35096bA7B89d75d13b8753F719F8C3feD"), // eth multicall3 ContractRegistry.register(SOPHON_MAINNET, ContractTypes.MULTICALL3, "multicall3", "0x159cf4d7016e77624950bCaBd1215332BdC9CFDA"), ]); } //# sourceMappingURL=contractInitiator.js.map