UNPKG

butterjs-sdk

Version:
481 lines (455 loc) 12.9 kB
import { Chain } from '../entities/Chain'; import { MAP_TEST_NATIVE } from './tokens'; /** Chain Id for supported Chain */ export enum ChainId { MAP_MAINNET = '22776', BSC_MAINNET = '56', POLYGON_MAINNET = '137', NEAR_MAINNET = '5566818579631833088', MAP_TEST = '212', ETH_PRIV = '34434', ETH_GOERLI = '5', BSC_TEST = '97', POLYGON_TEST = '80001', NEAR_TESTNET = '5566818579631833089', } /** ID to Chain Object */ export const ID_TO_CHAIN_OBJ = (id: string): Chain => { switch (id) { // mainnet case ChainId.MAP_MAINNET: return MAP_MAINNET_CHAIN; case ChainId.BSC_MAINNET: return BSC_MAINNET_CHAIN; case ChainId.POLYGON_MAINNET: return POLYGON_MAINNET_CHAIN; case ChainId.NEAR_MAINNET: return NEAR_MAINNET_CHAIN; // testnet case ChainId.MAP_TEST: return MAP_TEST_CHAIN; case ChainId.ETH_GOERLI: return ETH_GOERLI_CHAIN; case ChainId.BSC_TEST: return BSC_TEST_CHAIN; case ChainId.POLYGON_TEST: return POLYGON_TEST_CHAIN; case ChainId.ETH_PRIV: return ETH_PRIV_CHAIN; case ChainId.NEAR_TESTNET: return NEAR_TEST_CHAIN; default: throw new Error(`ID_TO_CHAIN_OBJ: unknown chain id: ${id}`); } }; /** ID to JSON RPC URL */ export const ID_TO_DEFAULT_RPC_URL = (id: string): string => { switch (id) { // mainnet case ChainId.MAP_MAINNET: return MAP_MAINNET_CHAIN.rpc!; case ChainId.BSC_MAINNET: return BSC_MAINNET_CHAIN.rpc!; case ChainId.POLYGON_MAINNET: return POLYGON_MAINNET_CHAIN.rpc!; case ChainId.NEAR_MAINNET: return NEAR_MAINNET_CHAIN.rpc!; // testnet case ChainId.MAP_TEST: return MAP_TEST_CHAIN.rpc!; case ChainId.ETH_GOERLI: return ETH_GOERLI_CHAIN.rpc!; case ChainId.BSC_TEST: return BSC_TEST_CHAIN.rpc!; case ChainId.POLYGON_TEST: return POLYGON_TEST_CHAIN.rpc!; case ChainId.ETH_PRIV: return ETH_PRIV_CHAIN.rpc!; case ChainId.NEAR_TESTNET: return NEAR_TEST_CHAIN.rpc!; default: throw new Error(`ID_TO_DEFAULT_RPC_URL: unknown chain id: ${id}`); } }; export const MAP_MAINNET_CHAIN = new Chain( ChainId.MAP_MAINNET, 'MAPO Mainnet', 'https://poc3-rpc.maplabs.io/', 'https://makalu.mapscan.io/', 'https://files.maplabs.io/bridge/map.png', 'MAPO' ); export const BSC_MAINNET_CHAIN = new Chain( ChainId.BSC_MAINNET, 'BNB Chain Mainnet', 'https://bsc-dataseed1.defibit.io/', 'https://bscscan.com/', 'https://uploads-ssl.webflow.com/62f34c32e8660c273054c17c/62fb88db22514137f2029167_bnb%20logo.png', 'BNB' ); export const POLYGON_MAINNET_CHAIN = new Chain( ChainId.POLYGON_MAINNET, 'Polygon Mainnet', 'https://polygon-rpc.com/', 'https://polygonscan.com/', 'https://cryptologos.cc/logos/polygon-matic-logo.png', 'MATIC' ); export const NEAR_MAINNET_CHAIN = new Chain( ChainId.NEAR_MAINNET, 'Near Mainnet', 'https://rpc.mainnet.near.org', 'https://explorer.near.org/', 'https://cryptologos.cc/logos/near-protocol-near-logo.png', 'NEAR' ); export const MAP_TEST_CHAIN = new Chain( ChainId.MAP_TEST, 'MAPO Testnet', 'https://testnet-rpc.maplabs.io', 'http://18.139.224.21:9001/', 'https://files.maplabs.io/bridge/map.png', 'MAPO' ); export const BSC_TEST_CHAIN = new Chain( ChainId.BSC_TEST, 'BNB Chain Testnet', 'https://rpc.ankr.com/bsc_testnet_chapel/9a12629301614050e76136dcaf9627f5ef215f86fb1185d908f9d232b8530ef7', 'https://testnet.bscscan.com/', 'https://uploads-ssl.webflow.com/62f34c32e8660c273054c17c/62fb88db22514137f2029167_bnb%20logo.png', 'BNB' ); export const POLYGON_TEST_CHAIN = new Chain( ChainId.POLYGON_TEST, 'Polygon Testnet', 'https://rpc-mumbai.maticvigil.com/', 'https://mumbai.polygonscan.com/', 'https://cryptologos.cc/logos/polygon-matic-logo.png', 'MATIC' ); export const ETH_GOERLI_CHAIN = new Chain( ChainId.ETH_GOERLI, 'Ethereum Goerli', 'https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161', 'https://goerli.etherscan.io/', 'https://d33wubrfki0l68.cloudfront.net/3b8b93913fd51cacac56256a98ec42612c9c262a/b1261/static/a183661dd70e0e5c70689a0ec95ef0ba/13c43/eth-diamond-purple.png', 'ETH' ); export const ETH_PRIV_CHAIN = new Chain( ChainId.ETH_PRIV, 'Ethereum Private', 'http://18.138.248.113:8545', '', 'https://files.maplabs.io/bridge/eth.png', 'ETH' ); export const NEAR_TEST_CHAIN = new Chain( ChainId.NEAR_TESTNET, 'Near Testnet', 'https://rpc.testnet.near.org', 'https://explorer.testnet.near.org/', 'https://cryptologos.cc/logos/near-protocol-near-logo.png', 'NEAR' ); // TODO: return chain info export const ID_TO_NEAR_NETWORK = (id: string): string => { switch (id) { case ChainId.NEAR_TESTNET: return 'testnet'; default: throw new Error( `ID_TO_NEAR_NETWORK: unknown chain id when querying near network: ${id}` ); } }; export const ID_TO_CHAIN_ID = (id: string): ChainId => { switch (id) { case ChainId.MAP_MAINNET: return ChainId.MAP_MAINNET; case ChainId.BSC_MAINNET: return ChainId.BSC_MAINNET; case ChainId.POLYGON_MAINNET: return ChainId.POLYGON_MAINNET; case ChainId.NEAR_MAINNET: return ChainId.NEAR_MAINNET; case ChainId.MAP_TEST: return ChainId.MAP_TEST; case ChainId.ETH_GOERLI: return ChainId.ETH_GOERLI; case ChainId.BSC_TEST: return ChainId.BSC_TEST; case ChainId.ETH_PRIV: return ChainId.ETH_PRIV; case ChainId.NEAR_TESTNET: return ChainId.NEAR_TESTNET; case ChainId.POLYGON_TEST: return ChainId.POLYGON_TEST; default: throw new Error(`ID_TO_CHAIN_ID: unknown chain id: ${id}`); } }; export const SUPPORTED_CHAIN_LIST_TESTNET = [ MAP_TEST_CHAIN, NEAR_TEST_CHAIN, BSC_TEST_CHAIN, ETH_GOERLI_CHAIN, POLYGON_TEST_CHAIN, ]; export const SUPPORTED_CHAIN_LIST_MAINNET = [ NEAR_MAINNET_CHAIN, BSC_MAINNET_CHAIN, NEAR_MAINNET_CHAIN, POLYGON_MAINNET_CHAIN, ]; export enum ChainName { MAP_MAINNET = 'map-mainnet', BSC_MAINNET = 'bsc-mainnet', POLYGON_MAINNET = 'polygon-mainnet', NEAR_MAINNET = 'near-mainnet', MAP_TEST = 'map-testnet', ETH_PRIV = 'eth-priv', NEAR_TESTNET = 'near-testnet', BSC_TEST = 'bsc-testnet', MATIC_TEST = 'matic-mumbai', ETH_GOERLI = 'ethereum-goerli', } export enum NativeCurrencyName { // Strings match input for CLI ETHER = 'ETH', MATIC = 'MATIC', BSC = 'BNB', MAP = 'MAP', NEAR = 'NEAR', } // export const NATIVE_CURRENCY: { [chainId: number]: NativeCurrencyName } = { // [ChainId.MAINNET]: NativeCurrencyName.ETHER, // // [ChainId.ROPSTEN]: NativeCurrencyName.ETHER, // // [ChainId.RINKEBY]: NativeCurrencyName.ETHER, // // [ChainId.GÖRLI]: NativeCurrencyName.ETHER, // // [ChainId.KOVAN]: NativeCurrencyName.ETHER, // // [ChainId.OPTIMISM]: NativeCurrencyName.ETHER, // // [ChainId.OPTIMISTIC_KOVAN]: NativeCurrencyName.ETHER, // // [ChainId.ARBITRUM_ONE]: NativeCurrencyName.ETHER, // // [ChainId.ARBITRUM_RINKEBY]: NativeCurrencyName.ETHER, // // [ChainId.POLYGON]: NativeCurrencyName.MATIC, // // [ChainId.POLYGON_MUMBAI]: NativeCurrencyName.MATIC, // [ChainId.BSC]: NativeCurrencyName.BSC, // [ChainId.MAP]: NativeCurrencyName.MAP, // [ChainId.MAP_TEST]: NativeCurrencyName.MAP, // }; export const ID_TO_NETWORK_NAME = (id: string): ChainName => { switch (id) { case ChainId.MAP_MAINNET: return ChainName.MAP_MAINNET; case ChainId.BSC_MAINNET: return ChainName.BSC_MAINNET; case ChainId.POLYGON_MAINNET: return ChainName.POLYGON_MAINNET; case ChainId.NEAR_MAINNET: return ChainName.NEAR_MAINNET; case ChainId.MAP_TEST: return ChainName.MAP_TEST; case ChainId.ETH_GOERLI: return ChainName.ETH_GOERLI; case ChainId.ETH_PRIV: return ChainName.ETH_PRIV; case ChainId.BSC_TEST: return ChainName.BSC_TEST; case ChainId.POLYGON_TEST: return ChainName.MATIC_TEST; case ChainId.NEAR_TESTNET: return ChainName.NEAR_TESTNET; default: throw new Error(`ID_TO_NETWORK_NAME: unknown chain id: ${id}`); } }; export const MAP_NETWORK_NAME_TO_ID = (network: string): ChainId => { switch (network) { case ChainName.MAP_MAINNET: return ChainId.MAP_MAINNET; case ChainName.MAP_TEST: return ChainId.MAP_TEST; default: throw new Error( `MAP_NETWORK_NAME_TO_ID: Unsupported network name: ${network}` ); } }; // export const WRAPPED_NATIVE_CURRENCY: { [chainId in ChainId]: Token } = { // [ChainId.MAINNET]: new Token( // 1, // '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // 18, // 'WETH', // 'Wrapped EVMNativCoin' // ), // // [ChainId.ROPSTEN]: new Token( // // 3, // // '0xc778417E063141139Fce010982780140Aa0cD5Ab', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.RINKEBY]: new Token( // // 4, // // '0xc778417E063141139Fce010982780140Aa0cD5Ab', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.GÖRLI]: new Token( // // 5, // // '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.KOVAN]: new Token( // // 42, // // '0xd0A1E359811322d97991E03f863a0C30C2cF029C', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.OPTIMISM]: new Token( // // ChainId.OPTIMISM, // // '0x4200000000000000000000000000000000000006', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.OPTIMISTIC_KOVAN]: new Token( // // ChainId.OPTIMISTIC_KOVAN, // // '0x4200000000000000000000000000000000000006', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.ARBITRUM_ONE]: new Token( // // ChainId.ARBITRUM_ONE, // // '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.ARBITRUM_RINKEBY]: new Token( // // ChainId.ARBITRUM_RINKEBY, // // '0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681', // // 18, // // 'WETH', // // 'Wrapped EVMNativCoin' // // ), // // [ChainId.POLYGON]: new Token( // // ChainId.POLYGON, // // '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // // 18, // // 'WMATIC', // // 'Wrapped MATIC' // // ), // // [ChainId.POLYGON_MUMBAI]: new Token( // // ChainId.POLYGON_MUMBAI, // // '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', // // 18, // // 'WMATIC', // // 'Wrapped MATIC' // // ), // [ChainId.BSC]: new Token( // ChainId.BSC, // '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // 18, // 'WBNB', // 'Wrapped BNB' // ), // [ChainId.MAP]: new Token( // ChainId.MAP, // '0x13CB04d4a5Dfb6398Fc5AB005a6c84337256eE23', // 18, // 'WMAP', // 'Wrapped MAP' // ), // [ChainId.MAP_TEST]: new Token( // ChainId.MAP, // '0x13CB04d4a5Dfb6398Fc5AB005a6c84337256eE23', // 18, // 'WMAP', // 'Wrapped MAP' // ), // [ChainId.ETH_PRIV]: new Token( // ChainId.ETH_PRIV, // '0xfe745307D9C8A6F9a72F608E87821f3F55090A35', // 18, // 'WETH', // 'Wrapped ETH' // ), // [ChainId.NEAR_TESTNET]: new Token( // ChainId.NEAR_TESTNET, // 'wrap.testnet', // 22, // 'WNEAR', // 'Wrapped NEAR' // ), // }; export const IS_MAP = (id: string): boolean => { switch (id) { case ChainId.MAP_MAINNET: case ChainId.MAP_TEST: return true; default: return false; } }; export const IS_NEAR = (id: string): boolean => { switch (id) { case '1': case '3': case '4': case '5': case '42': case '10': case '69': case '42161': case '421611': case '137': case ChainId.MAP_TEST: case ChainId.ETH_GOERLI: case ChainId.ETH_PRIV: case ChainId.BSC_TEST: case ChainId.POLYGON_TEST: case ChainId.MAP_MAINNET: case ChainId.BSC_MAINNET: case ChainId.POLYGON_MAINNET: return false; case ChainId.NEAR_TESTNET: case ChainId.NEAR_MAINNET: return true; default: throw new Error(`IS_NEAR: Unsupported chain id: ${id}`); } }; export const IS_EVM = (id: string): boolean => { switch (id) { case '1': case '3': case '4': case '5': case '42': case '10': case '69': case '42161': case '421611': case ChainId.POLYGON_MAINNET: case ChainId.BSC_MAINNET: case ChainId.MAP_MAINNET: case ChainId.BSC_TEST: case ChainId.POLYGON_TEST: case ChainId.MAP_TEST: case ChainId.ETH_GOERLI: case ChainId.ETH_PRIV: return true; case ChainId.NEAR_TESTNET: case ChainId.NEAR_MAINNET: return false; default: throw new Error(`IS_EVM: unknown chain id: ${id}`); } };