UNPKG

@thinkincoin-libs/sdk-core

Version:

⚒️ An SDK for building applications on top of Uniswap V3

271 lines (240 loc) 10.8 kB
import { ChainId, SUPPORTED_CHAINS, SupportedChainsType } from './chains' type AddressMap = { [chainId: number]: string } type ChainAddresses = { v3CoreFactoryAddress: string multicallAddress: string quoterAddress: string v3MigratorAddress?: string nonfungiblePositionManagerAddress?: string tickLensAddress?: string swapRouter02Address?: string v1MixedRouteQuoterAddress?: string } const DEFAULT_NETWORKS = [ChainId.MAINNET, ChainId.GOERLI] function constructSameAddressMap(address: string, additionalNetworks: ChainId[] = []): AddressMap { return DEFAULT_NETWORKS.concat(additionalNetworks).reduce<AddressMap>((memo, chainId) => { memo[chainId] = address return memo }, {}) } export const UNI_ADDRESSES: AddressMap = constructSameAddressMap('0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', [ ChainId.OPTIMISM, ChainId.ARBITRUM_ONE, ChainId.POLYGON, ChainId.POLYGON_MUMBAI, ChainId.SEPOLIA ]) export const UNISWAP_NFT_AIRDROP_CLAIM_ADDRESS = '0x8B799381ac40b838BBA4131ffB26197C432AFe78' export const V2_FACTORY_ADDRESS = '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' export const V2_FACTORY_ADDRESSES: AddressMap = constructSameAddressMap(V2_FACTORY_ADDRESS) export const V2_ROUTER_ADDRESS = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' export const V2_ROUTER_ADDRESSES: AddressMap = constructSameAddressMap(V2_ROUTER_ADDRESS) // Networks that share most of the same addresses i.e. Mainnet, Goerli, Optimism, Arbitrum, Polygon const DEFAULT_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0x1F98431c8aD98523631AE4a59f267346ea31F984', multicallAddress: '0x1F98415757620B543A52E61c46B32eB19261F984', quoterAddress: '0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6', v3MigratorAddress: '0xA5644E29708357803b5A882D272c41cC0dF92B34', nonfungiblePositionManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' } const MAINNET_ADDRESSES: ChainAddresses = { ...DEFAULT_ADDRESSES, v1MixedRouteQuoterAddress: '0x84E44095eeBfEC7793Cd7d5b57B7e401D7f1cA2E' } const GOERLI_ADDRESSES: ChainAddresses = { ...DEFAULT_ADDRESSES, v1MixedRouteQuoterAddress: '0xBa60b6e6fF25488308789E6e0A65D838be34194e' } const OPTIMISM_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES const ARBITRUM_ONE_ADDRESSES: ChainAddresses = { ...DEFAULT_ADDRESSES, multicallAddress: '0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB', tickLensAddress: '0xbfd8137f7d1516D3ea5cA83523914859ec47F573' } const POLYGON_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES // celo v3 addresses const CELO_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0xAfE208a311B21f13EF87E33A90049fC17A7acDEc', multicallAddress: '0x633987602DE5C4F337e3DbF265303A1080324204', quoterAddress: '0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8', v3MigratorAddress: '0x3cFd4d48EDfDCC53D3f173F596f621064614C582', nonfungiblePositionManagerAddress: '0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A', tickLensAddress: '0x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D' } // BNB v3 addresses const BNB_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7', multicallAddress: '0x963Df249eD09c358A4819E39d9Cd5736c3087184', quoterAddress: '0x78D78E420Da98ad378D7799bE8f4AF69033EB077', v3MigratorAddress: '0x32681814957e0C13117ddc0c2aba232b5c9e760f', nonfungiblePositionManagerAddress: '0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613', tickLensAddress: '0xD9270014D396281579760619CCf4c3af0501A47C', swapRouter02Address: '0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2' } // optimism goerli addresses const OPTIMISM_GOERLI_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0xB656dA17129e7EB733A557f4EBc57B76CFbB5d10', multicallAddress: '0x07F2D8a2a02251B62af965f22fC4744A5f96BCCd', quoterAddress: '0x9569CbA925c8ca2248772A9A4976A516743A246F', v3MigratorAddress: '0xf6c55fBe84B1C8c3283533c53F51bC32F5C7Aba8', nonfungiblePositionManagerAddress: '0x39Ca85Af2F383190cBf7d7c41ED9202D27426EF6', tickLensAddress: '0xe6140Bd164b63E8BfCfc40D5dF952f83e171758e' } // arbitrum goerli v3 addresses const ARBITRUM_GOERLI_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0x4893376342d5D7b3e31d4184c08b265e5aB2A3f6', multicallAddress: '0x8260CB40247290317a4c062F3542622367F206Ee', quoterAddress: '0x1dd92b83591781D0C6d98d07391eea4b9a6008FA', v3MigratorAddress: '0xA815919D2584Ac3F76ea9CB62E6Fd40a43BCe0C3', nonfungiblePositionManagerAddress: '0x622e4726a167799826d1E1D150b076A7725f5D81', tickLensAddress: '0xb52429333da969a0C79a60930a4Bf0020E5D1DE8' } // sepolia v3 addresses const SEPOLIA_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0x0227628f3F023bb0B980b67D528571c95c6DaC1c', multicallAddress: '0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07', quoterAddress: '0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3', v3MigratorAddress: '0x729004182cF005CEC8Bd85df140094b6aCbe8b15', nonfungiblePositionManagerAddress: '0x1238536071E1c677A632429e3655c799b22cDA52', tickLensAddress: '0xd7f33bcdb21b359c8ee6f0251d30e94832baad07' } // HARMONY v3 addresses const HARMONY_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0x73e20b9dD9577ad6A5acafb27d1FB88D9d7d31d5', multicallAddress: '0xdb5849ea2d14ec82f13d1cb7f08a9ca43c2c6754', quoterAddress: '0x76376774BD25fE7bd4c5d12218A0ED3105E018d9', v3MigratorAddress: '0x01777581f63daa788fdb8a86a1b1cecd04461d46', nonfungiblePositionManagerAddress: '0x8f406502534d16BC40cea2AAd95915516b25Cc2E', tickLensAddress: '0xE37083979fc1Aba5309a9e9E6FAeEba9f34111A5', swapRouter02Address: '0x3A49a917c501eCcA3C1A256959BF8557DdF40514' } // Avalanche v3 addresses const AVALANCHE_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD', multicallAddress: '0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2', quoterAddress: '0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F', v3MigratorAddress: '0x44f5f1f5E452ea8d29C890E8F6e893fC0f1f0f97', nonfungiblePositionManagerAddress: '0x655C406EBFa14EE2006250925e54ec43AD184f8B', tickLensAddress: '0xEB9fFC8bf81b4fFd11fb6A63a6B0f098c6e21950', swapRouter02Address: '0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE' } // Base Goerli v3 addresses const BASE_GOERLI_ADDRESSES: ChainAddresses = { v3CoreFactoryAddress: '0x9323c1d6D800ed51Bd7C6B216cfBec678B7d0BC2', multicallAddress: '0xB206027a9E0E13F05eBEFa5D2402Bab3eA716439', quoterAddress: '0xedf539058e28E5937dAef3f69cEd0b25fbE66Ae9', v3MigratorAddress: '0x3efe5d02a04b7351D671Db7008ec6eBA9AD9e3aE', nonfungiblePositionManagerAddress: '0x3c61369ef0D1D2AFa70d8feC2F31C5D6Ce134F30', tickLensAddress: '0x1acB873Ee909D0c98adB18e4474943249F931b92', swapRouter02Address: '0x8357227D4eDc78991Db6FDB9bD6ADE250536dE1d' } export const CHAIN_TO_ADDRESSES_MAP: Record<SupportedChainsType, ChainAddresses> = { [ChainId.MAINNET]: MAINNET_ADDRESSES, [ChainId.OPTIMISM]: OPTIMISM_ADDRESSES, [ChainId.ARBITRUM_ONE]: ARBITRUM_ONE_ADDRESSES, [ChainId.POLYGON]: POLYGON_ADDRESSES, [ChainId.POLYGON_MUMBAI]: POLYGON_ADDRESSES, [ChainId.GOERLI]: GOERLI_ADDRESSES, [ChainId.CELO]: CELO_ADDRESSES, [ChainId.CELO_ALFAJORES]: CELO_ADDRESSES, [ChainId.BNB]: BNB_ADDRESSES, [ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_ADDRESSES, [ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_ADDRESSES, [ChainId.SEPOLIA]: SEPOLIA_ADDRESSES, [ChainId.AVALANCHE]: AVALANCHE_ADDRESSES, [ChainId.BASE_GOERLI]: BASE_GOERLI_ADDRESSES, [ChainId.HARMONY]: HARMONY_ADDRESSES } /* V3 Contract Addresses */ export const V3_CORE_FACTORY_ADDRESSES: AddressMap = { ...SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].v3CoreFactoryAddress return memo }, {}) } export const V3_MIGRATOR_ADDRESSES: AddressMap = { ...SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { const v3MigratorAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v3MigratorAddress if (v3MigratorAddress) { memo[chainId] = v3MigratorAddress } return memo }, {}) } export const MULTICALL_ADDRESSES: AddressMap = { ...SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].multicallAddress return memo }, {}) } /** * The oldest V0 governance address */ export const GOVERNANCE_ALPHA_V0_ADDRESSES: AddressMap = constructSameAddressMap( '0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F' ) /** * The older V1 governance address */ export const GOVERNANCE_ALPHA_V1_ADDRESSES: AddressMap = { [ChainId.MAINNET]: '0xC4e172459f1E7939D522503B81AFAaC1014CE6F6' } /** * The latest governor bravo that is currently admin of timelock */ export const GOVERNANCE_BRAVO_ADDRESSES: AddressMap = { [ChainId.MAINNET]: '0x408ED6354d4973f66138C91495F2f2FCbd8724C3' } export const TIMELOCK_ADDRESSES: AddressMap = constructSameAddressMap('0x1a9C8182C09F50C8318d769245beA52c32BE35BC') export const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = { [ChainId.MAINNET]: '0x090D4613473dEE047c3f2706764f49E0821D256e' } export const ARGENT_WALLET_DETECTOR_ADDRESS: AddressMap = { [ChainId.MAINNET]: '0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8' } export const QUOTER_ADDRESSES: AddressMap = { ...SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].quoterAddress return memo }, {}) } export const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = { ...SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { const nonfungiblePositionManagerAddress = CHAIN_TO_ADDRESSES_MAP[chainId].nonfungiblePositionManagerAddress if (nonfungiblePositionManagerAddress) { memo[chainId] = nonfungiblePositionManagerAddress } return memo }, {}) } export const ENS_REGISTRAR_ADDRESSES: AddressMap = { ...constructSameAddressMap('0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e') } export const SOCKS_CONTROLLER_ADDRESSES: AddressMap = { [ChainId.MAINNET]: '0x65770b5283117639760beA3F867b69b3697a91dd' } export const TICK_LENS_ADDRESSES: AddressMap = { ...SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { const tickLensAddress = CHAIN_TO_ADDRESSES_MAP[chainId].tickLensAddress if (tickLensAddress) { memo[chainId] = tickLensAddress } return memo }, {}) } export const MIXED_ROUTE_QUOTER_V1_ADDRESSES: AddressMap = SUPPORTED_CHAINS.reduce<AddressMap>((memo, chainId) => { const v1MixedRouteQuoterAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v1MixedRouteQuoterAddress if (v1MixedRouteQuoterAddress) { memo[chainId] = v1MixedRouteQuoterAddress } return memo }, {}) export const SWAP_ROUTER_02_ADDRESSES = (chainId: number) => { if (chainId == ChainId.BNB) { return CHAIN_TO_ADDRESSES_MAP[chainId].swapRouter02Address } if (chainId == ChainId.HARMONY) { return CHAIN_TO_ADDRESSES_MAP[chainId].swapRouter02Address } return '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' }