@syncswap/sdk
Version:
SyncSwap TypeScript SDK for building DeFi applications
166 lines • 13.9 kB
JavaScript
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