@proton/wrap-constants 0.2.51 → 0.2.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-constants.cjs.production.min.js","sources":["../src/coins.ts","../src/parsers/base.ts","../src/parsers/actions.ts","../src/parsers/deposit.ts","../src/parsers/auth.ts","../src/constants.ts","../src/parsers/address.ts","../src/parsers/currency.ts","../src/parsers/wrap.ts","../src/parsers/otc.ts","../src/parsers/withdraw.ts","../src/parsers/withdrawalHistory.ts","../src/parsers/dex.ts","../src/parsers/login.ts","../src/graph.ts","../src/math.ts","../src/utils.ts"],"sourcesContent":["import { Asset } from '@bloks/numbers'\n\nexport enum Chains {\n BitcoinMainnet = 'Bitcoin',\n BitcoinTestnet = 'Bitcoin (Testnet)',\n EthereumMainnet = 'Ethereum',\n EthereumRopsten = 'Ethereum (Ropsten)',\n LitecoinMainnet = 'Litecoin',\n LitecoinTestnet = 'Litecoin (Testnet)',\n BitcoinCashMainnet = 'Bitcoin Cash',\n BitcoinCashTestnet = 'Bitcoin Cash (Testnet)',\n StellarMainnet = 'Stellar',\n StellarTestnet = 'Stellar (Testnet)',\n ProtonMainnet = 'Proton',\n ProtonTestnet = 'Proton (Testnet)',\n PolkadotMainnet = 'Polkadot',\n BinanceBEP2 = 'Binance (BEP2)',\n BinanceBEP20 = 'Binance (BEP20)',\n EosMainnet = 'EOS',\n EosTestnet = 'EOS (Jungle Testnet)',\n HederaMainnet = 'Hedera (Mainnet)',\n HederaTestnet = 'Hedera (Testnet)',\n DogeMainnet = 'Dogecoin',\n CardanoMainnet = 'Cardano',\n AvalancheXChain = 'Avalanche X-Chain',\n AvalancheCChain = 'Avalanche C-Chain',\n PolygonMainnet = 'Polygon',\n TerraMainnet = 'Terra',\n RippleMainnet = 'Ripple',\n SolanaMainnet = 'Solana',\n MetalXTestnet = 'Metal X-Chain (Testnet)',\n MetalCTestnet = 'Metal C-Chain (Testnet)',\n MetalCMainnet = 'Metal C-Chain'\n}\n\nexport enum Networks {\n Mainnet = 'mainnet',\n Testnet = 'testnet',\n Ropsten = 'ropsten',\n ERC20 = 'erc20',\n BEP20 = 'bep20',\n XLM = 'xlm',\n AVM = 'avm',\n EVM = 'evm',\n}\n\nexport const similarChains = {\n [Chains.EthereumMainnet]: [Chains.BinanceBEP20],\n [Chains.BinanceBEP20]: [Chains.EthereumMainnet],\n}\n\nexport interface Coin {\n allowSwap : boolean;\n allowBridge : boolean;\n allowLend : boolean;\n allowBorrow : boolean;\n name : string;\n coin : string;\n xtokenSymbol : string;\n xtokenPrecision: number;\n xtokenContract : string;\n wallets : Wallet[];\n image : string;\n coingeckoId : string;\n balance? : Asset;\n}\n \nexport interface Wallet {\n wallet : string;\n symbol : string;\n chain : Chains;\n network : Networks;\n precision : number;\n contract : string | undefined;\n provider : string;\n hasWithdrawMemo: boolean;\n}\n\nexport enum Providers {\n FIREBLOCKS = \"fireblocks\",\n METAL = \"metal\"\n}\n\nexport type CoinWallet = Exclude<Coin, 'wallets'> & Wallet\n\nexport const explorerLinkByChain = {\n [Chains.BitcoinMainnet] : (txid: string) => `https://blockchain.com/btc/tx/${txid}`,\n [Chains.BitcoinTestnet] : (txid: string) => `https://blockstream.info/testnet/tx/${txid}`,\n [Chains.EthereumMainnet] : (txid: string) => `https://etherscan.io/tx/${txid}`,\n [Chains.EthereumRopsten] : (txid: string) => `https://ropsten.etherscan.io/tx/${txid}`,\n [Chains.LitecoinMainnet] : (txid: string) => `https://blockchair.com/litecoin/transaction/${txid}`,\n [Chains.LitecoinTestnet] : (txid: string) => `https://blockexplorer.one/litecoin/testnet/blockHash/${txid}`,\n [Chains.BitcoinCashMainnet]: (txid: string) => `https://blockchair.com/bitcoin-cash/transaction/${txid}`,\n [Chains.BitcoinCashTestnet]: (txid: string) => `https://blockexplorer.one/bitcoin-cash/testnet/blockHash/${txid}`,\n [Chains.StellarMainnet] : (txid: string) => `https://blockchair.com/stellar/transaction/${txid}`,\n [Chains.StellarTestnet] : (txid: string) => `https://testnet.steexp.com/tx/${txid}`,\n [Chains.ProtonMainnet] : (txid: string, traces?: boolean) => `https://proton.bloks.io/transaction/${txid}${traces ? '?tab=traces' : ''}`,\n [Chains.ProtonTestnet] : (txid: string, traces?: boolean) => `https://proton-test.bloks.io/transaction/${txid}${traces ? '?tab=traces' : ''}`,\n [Chains.PolkadotMainnet] : (txid: string) => `https://polkadot.subscan.io/extrinsic/${txid}`,\n [Chains.BinanceBEP2] : (txid: string) => `https://binance.mintscan.io/txs/${txid}`,\n [Chains.BinanceBEP20] : (txid: string) => `https://bscscan.com/tx/${txid}`,\n [Chains.EosMainnet] : (txid: string) => `https://bloks.io/transaction/${txid}`,\n [Chains.EosTestnet] : (txid: string) => `https://jungle.bloks.io/transaction/${txid}`,\n [Chains.HederaMainnet] : (txid: string) => `https://app.dragonglass.me/transactions/${txid}`,\n [Chains.HederaTestnet] : (txid: string) => `https://testnet.dragonglass.me/transactions/${txid}`,\n [Chains.DogeMainnet] : (txid: string) => `https://blockchair.com/dogecoin/transaction/${txid}`,\n [Chains.CardanoMainnet] : (txid: string) => `https://explorer.cardano.org/en/transaction?id=${txid}`,\n [Chains.AvalancheXChain] : (txid: string) => `https://avascan.info/blockchain/x/tx/${txid}`,\n [Chains.AvalancheCChain] : (txid: string) => `https://snowtrace.io/tx/${txid}`,\n [Chains.PolygonMainnet] : (txid: string) => `https://polygonscan.com/tx/${txid}`,\n [Chains.TerraMainnet] : (txid: string) => `https://terra.stake.id/?#/tx/${txid}`,\n [Chains.RippleMainnet] : (txid: string) => `https://xrpscan.com/tx/${txid}`,\n [Chains.SolanaMainnet] : (txid: string) => `https://explorer.solana.com/tx/${txid}`,\n [Chains.MetalXTestnet] : (txid: string) => `https://metalscan.io/tx/${txid}`,\n [Chains.MetalCTestnet] : (txid: string) => `https://tahoe.metaltrace.io/tx/${txid}`,\n [Chains.MetalCMainnet] : (txid: string) => `https://metalscan.io/tx/${txid}`,\n}\n\nexport const protonExplorerTxUrl = (chain: string, txId: string, traces?: boolean) => chain === 'proton'\n ? explorerLinkByChain[Chains.ProtonMainnet](txId, traces)\n : explorerLinkByChain[Chains.ProtonTestnet](txId, traces)\n\n// Initialize.\nexport const initializeCoins = (protonChain: string): {\n allCoins : Coin[];\n swapCoins : Coin[];\n bridgeCoins : Coin[];\n lendCoins : Coin[];\n borrowCoins : Coin[];\n loanCoins : Coin[];\n allEnabledCoins: Coin[];\n} => {\n const IS_MAINNET = protonChain === 'proton'\n const IS_TESTNET = protonChain === 'proton-test'\n \n const coins: Coin[] = [\n { \n allowSwap: true,\n allowBridge: IS_MAINNET,\n allowLend: true,\n allowBorrow: true,\n name: 'Proton',\n coin: 'XPR',\n xtokenSymbol: 'XPR',\n xtokenPrecision: 4,\n xtokenContract: 'eosio.token',\n wallets: [\n ...(IS_MAINNET ? [\n {\n wallet: 'XPR-ERC20',\n symbol: 'XPR',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 4,\n contract: '0xD7EFB00D12C2C13131FD319336FDF952525DA2AF',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'XPR-BEP20',\n symbol: 'XPR',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 4,\n contract: '0x5DE3939B2F811A61D830E6F52D13B066881412AB',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }\n ]: []),\n ],\n image: 'https://www.proton.org/images/tokens/eosio-tokenXPR.png',\n coingeckoId: 'proton'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: true,\n allowBorrow: true,\n name: 'USD Coin',\n coin: 'USDC',\n xtokenSymbol: 'XUSDC',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [\n {\n wallet: 'USDC',\n symbol: 'USDC',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 6,\n contract: '0xA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'USDC-BEP20',\n symbol: 'USDC',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: '0x8AC76A51CC950D9822D68B83FE1AD97B32CD580D',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'USDC-XLM',\n symbol: 'USDC',\n chain: Chains.StellarMainnet,\n network: Networks.XLM,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n },\n ]: []),\n ...(IS_TESTNET ? [\n {\n wallet: 'USDC',\n symbol: 'USDC',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 6,\n contract: '0xA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'USDC-XLM',\n symbol: 'USDC',\n chain: Chains.StellarTestnet,\n network: Networks.XLM,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n },\n ]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUSDC.png',\n coingeckoId: 'usd-coin'\n },\n { \n allowSwap: true,\n allowBridge: IS_MAINNET,\n allowLend: true,\n allowBorrow: true,\n name: 'Metal DAO',\n coin: 'MTL',\n xtokenSymbol: 'XMT',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'MTL',\n symbol: 'MTL',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 8,\n contract: '0xF433089366899D83A9F26A773D59EC7ECF30355E',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXMT.png',\n coingeckoId: 'metal'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Metal Blockchain',\n coin: 'METAL',\n xtokenSymbol: 'METAL',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_TESTNET ? [{\n wallet: 'METAL',\n symbol: 'METAL',\n chain: Chains.MetalCTestnet,\n network: Networks.EVM,\n precision: 18,\n contract: '',\n provider: Providers.METAL,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_MAINNET ? [\n {\n wallet: 'METAL',\n symbol: 'METAL',\n chain: Chains.MetalCMainnet,\n network: Networks.EVM,\n precision: 18,\n contract: '',\n provider: Providers.METAL,\n hasWithdrawMemo: false\n },\n {\n wallet: 'METAL',\n symbol: 'METAL',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }\n ]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/metal-chain.png',\n coingeckoId: 'metal-blockchain'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: true,\n allowBorrow: true,\n name: 'Bitcoin',\n coin: 'BTC',\n xtokenSymbol: 'XBTC',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BTC',\n symbol: 'BTC',\n chain: Chains.BitcoinMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'BTC',\n symbol: 'BTC',\n chain: Chains.BitcoinTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXBTC.png',\n coingeckoId: 'bitcoin'\n },\n {\n allowSwap: true,\n allowBridge: true,\n allowLend: true,\n allowBorrow: true,\n name: 'Ethereum',\n coin: 'ETH',\n xtokenSymbol: 'XETH',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'ETH',\n symbol: 'ETH',\n chain: Chains.EthereumMainnet,\n network: Networks.Mainnet,\n precision: 18,\n contract: '0x0000000000000000000000000000000000000000',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'ETH',\n symbol: 'ETH',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 18,\n contract: '0x0000000000000000000000000000000000000000',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXETH.png',\n coingeckoId: 'ethereum'\n },\n { \n allowSwap: true,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Loan',\n coin: 'LOAN',\n xtokenSymbol: 'LOAN',\n xtokenPrecision: 4,\n xtokenContract: 'loan.token',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/loan.png',\n coingeckoId: 'proton-loan'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Tether',\n coin: 'USDT',\n xtokenSymbol: 'XUSDT',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'USDT',\n symbol: 'USDT',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 6,\n contract: '0xDAC17F958D2EE523A2206206994597C13D831EC7',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_MAINNET ? [{\n wallet: 'USDT-BEP20',\n symbol: 'USDT',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: '0x55d398326f99059fF775485246999027B3197955',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'USDT',\n symbol: 'USDT',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 6,\n contract: '0xDAC17F958D2EE523A2206206994597C13D831EC7',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUSDT.png',\n coingeckoId: 'tether'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'TrueUSD',\n coin: 'TUSD',\n xtokenSymbol: 'XTUSD',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'TUSD',\n symbol: 'TUSD',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x0000000000085D4780B73119B644AE5ECD22B376',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXTUSD.png',\n coingeckoId: 'true-usd'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Paxos Dollar',\n coin: 'PAX',\n xtokenSymbol: 'XPAX',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'PAX',\n symbol: 'PAX',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x8E870D67F660D95D5BE530380D0EC0BD388289E1',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXPAX.png',\n coingeckoId: 'paxos-standard'\n },\n { \n allowSwap: false,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Paxos Gold',\n coin: 'PAXG',\n xtokenSymbol: 'XPAXG',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'PAXG',\n symbol: 'PAXG',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x45804880DE22913DAFE09F4980848ECE6ECBAF78',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'PAXG',\n symbol: 'PAXG',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 18,\n contract: '0x45804880DE22913DAFE09F4980848ECE6ECBAF78',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXPAXG.png',\n coingeckoId: 'pax-gold'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Storex',\n coin: 'STRX',\n xtokenSymbol: 'STRX',\n xtokenPrecision: 4,\n xtokenContract: 'storex',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/strx.png',\n coingeckoId: ''\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Mint',\n coin: 'MINT',\n xtokenSymbol: 'MINT',\n xtokenPrecision: 4,\n xtokenContract: 'protonmint',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/PMLogo-04.png',\n coingeckoId: ''\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Snipcoins',\n coin: 'SNIPS',\n xtokenSymbol: 'SNIPS',\n xtokenPrecision: 4,\n xtokenContract: 'snipcoins',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/snips.png',\n coingeckoId: ''\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Uniswap',\n coin: 'UNI',\n xtokenSymbol: 'XUNI',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'UNI',\n symbol: 'UNI',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x1F9840A85D5AF5BF1D1762F925BDADDC4201F984',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'UNI',\n symbol: 'UNI',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 18,\n contract: '0x1F9840A85D5AF5BF1D1762F925BDADDC4201F984',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUNI.png',\n coingeckoId: 'uniswap'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: '1INCH',\n coin: '1INCH',\n xtokenSymbol: 'XINCH',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: '1INCH',\n symbol: '1INCH',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x111111111117DC0AA78B770FA6A738034120C302',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXINCH.png',\n coingeckoId: '1inch'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Chainlink',\n coin: 'LINK',\n xtokenSymbol: 'XLINK',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'LINK',\n symbol: 'LINK',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x514910771AF9CA656AF840DFF83E8264ECF986CA',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXLINK.png',\n coingeckoId: 'chainlink'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Litecoin',\n coin: 'LTC',\n xtokenSymbol: 'XLTC',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'LTC',\n symbol: 'LTC',\n chain: Chains.LitecoinMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'LTC',\n symbol: 'LTC',\n chain: Chains.LitecoinTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXLTC.png',\n coingeckoId: 'litecoin'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Bitcoin Cash',\n coin: 'BCH',\n xtokenSymbol: 'XBCH',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BCH',\n symbol: 'BCH',\n chain: Chains.BitcoinCashMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'BCH',\n symbol: 'BCH',\n chain: Chains.BitcoinCashTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXBCH.png',\n coingeckoId: 'bitcoin-cash'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'LunarCrush',\n coin: 'LUNR',\n xtokenSymbol: 'XLUNR',\n xtokenPrecision: 4,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'LUNR',\n symbol: 'LUNR',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 4,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xlunr.png',\n coingeckoId: 'lunr-token'\n },\n { \n allowSwap: false,\n allowBridge: IS_TESTNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Stellar',\n coin: 'XLM',\n xtokenSymbol: 'XXLM',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'XLM',\n symbol: 'XLM',\n chain: Chains.StellarMainnet,\n network: Networks.Mainnet,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'XLM',\n symbol: 'XLM',\n chain: Chains.StellarTestnet,\n network: Networks.Testnet,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXXLM.png',\n coingeckoId: 'stellar'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Sense',\n coin: 'SENSE',\n xtokenSymbol: 'XSENSE',\n xtokenPrecision: 4,\n xtokenContract: 'sense',\n wallets: [],\n image: 'https://www.proton.org/images/tokens/senseXSENSE.png',\n coingeckoId: 'sense'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Polkadot',\n coin: 'DOT',\n xtokenSymbol: 'XDOT',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'DOT',\n symbol: 'DOT',\n chain: Chains.PolkadotMainnet,\n network: Networks.Mainnet,\n precision: 10,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXDOT.png',\n coingeckoId: 'polkadot'\n },\n { \n allowSwap: true,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Binance Coin',\n coin: 'BNB',\n xtokenSymbol: 'XBNB',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BNB',\n symbol: 'BNB',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXBNB.png',\n coingeckoId: 'binancecoin'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Binance USD',\n coin: 'BUSD',\n xtokenSymbol: 'XBUSD',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BUSD-BEP20',\n symbol: 'BUSD',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xbusd.png',\n coingeckoId: 'binance-usd'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'EOS',\n coin: 'EOS',\n xtokenSymbol: 'XEOS',\n xtokenPrecision: 4,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'EOS',\n symbol: 'EOS',\n chain: Chains.EosMainnet,\n network: Networks.Mainnet,\n precision: 4,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'EOS',\n symbol: 'EOS',\n chain: Chains.EosTestnet,\n network: Networks.Testnet,\n precision: 4,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXEOS.png',\n coingeckoId: 'eos'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: IS_MAINNET,\n allowLend: true,\n allowBorrow: true,\n name: 'Dogecoin',\n coin: 'DOGE',\n xtokenSymbol: 'XDOGE',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'DOGE',\n symbol: 'DOGE',\n chain: Chains.DogeMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXDOGE.png',\n coingeckoId: 'dogecoin'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Cardano',\n coin: 'ADA',\n xtokenSymbol: 'XADA',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'ADA',\n symbol: 'ADA',\n chain: Chains.CardanoMainnet,\n network: Networks.Mainnet,\n precision: 6,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXADA.png',\n coingeckoId: 'cardano'\n },\n\n // Adding\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Terra',\n coin: 'LUNA',\n xtokenSymbol: 'XLUNA',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n // ...(IS_MAINNET ? [{\n // wallet: 'LUNA',\n // symbol: 'LUNA',\n // chain: Chains.TerraMainnet,\n // network: Networks.Mainnet,\n // precision: 6,\n // contract: undefined,\n // provider: Providers.FIREBLOCKS,\n // hasWithdrawMemo: true\n // }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXLUNA.png',\n coingeckoId: 'terra-luna'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'TerraUSD',\n coin: 'UST',\n xtokenSymbol: 'XUST',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'UST',\n symbol: 'UST',\n chain: Chains.TerraMainnet,\n network: Networks.Mainnet,\n precision: 6,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUST.png',\n coingeckoId: 'terrausd'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Solana',\n coin: 'SOL',\n xtokenSymbol: 'XSOL',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'SOL',\n symbol: 'SOL',\n chain: Chains.SolanaMainnet,\n network: Networks.Mainnet,\n precision: 9,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xsol.png',\n coingeckoId: 'solana'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Ripple',\n coin: 'XRP',\n xtokenSymbol: 'XXRP',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'XRP',\n symbol: 'XRP',\n chain: Chains.RippleMainnet,\n network: Networks.Mainnet,\n precision: 6,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xxrp.png',\n coingeckoId: 'ripple'\n },\n\n // Future\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Avalanche',\n coin: 'AVAX',\n xtokenSymbol: 'XAVAX',\n xtokenPrecision: 9,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [\n {\n wallet: 'AVAX',\n symbol: 'AVAX',\n chain: Chains.AvalancheCChain,\n network: Networks.Mainnet,\n precision: 9,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }\n ]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXAVAX.png',\n coingeckoId: 'avalanche-2'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Polygon',\n coin: 'MATIC',\n xtokenSymbol: 'XMATIC',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'MATIC',\n symbol: 'MATIC',\n chain: Chains.PolygonMainnet,\n network: Networks.Mainnet,\n precision: 18,\n contract: '0x0000000000000000000000000000000000000000',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXMATIC.png',\n coingeckoId: 'matic-network'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Metal Dollar',\n coin: 'XMD',\n xtokenSymbol: 'XMD',\n xtokenPrecision: 6,\n xtokenContract: 'xmd.token',\n wallets: [],\n image: 'https://github.com/eoscafe/eos-airdrops/blob/master/logos/xmd.png?raw=true',\n coingeckoId: ''\n },\n { \n allowSwap: false,\n allowBridge: IS_TESTNET,\n allowLend: false,\n allowBorrow: false,\n name: 'HBAR',\n coin: 'HBAR',\n xtokenSymbol: 'XHBAR',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_TESTNET ? [{\n wallet: 'HBAR',\n symbol: 'HBAR',\n chain: Chains.HederaTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXHBAR.png',\n coingeckoId: 'hedera-hashgraph'\n }\n ]\n\n // Validation\n const walletWithDuplicateChains = coins.find(coin => {\n const chains = coin.wallets.map(wallet => wallet.chain)\n return new Set(chains).size !== chains.length\n })\n if (walletWithDuplicateChains) {\n throw new Error(`Coin ${walletWithDuplicateChains.coin} has duplicate chains in wallet`)\n }\n\n return {\n allCoins: coins,\n swapCoins: coins.filter(coin => coin.allowSwap),\n bridgeCoins: coins.filter(coin => coin.allowBridge),\n lendCoins: coins.filter(coin => coin.allowLend),\n borrowCoins: coins.filter(coin => coin.allowBorrow),\n loanCoins: coins.filter(coin => coin.allowLend || coin.allowBorrow),\n allEnabledCoins: coins.filter(coin => coin.allowSwap || coin.allowBridge || coin.xtokenSymbol === 'XMD')\n }\n}","import * as z from 'zod'\n\nexport const accountParser = z.string().regex(/^[.1-5a-z]{0,12}[.1-5a-j]?$/)\n\nexport const authorizationParser = z.object({\n actor : accountParser,\n permission: z.string()\n})\nexport type Authorization = z.infer<typeof authorizationParser>\n\nexport const authorizationsParser = z.array(authorizationParser).min(1)\nexport type Authorizations = z.infer<typeof authorizationsParser>\n\nexport const ExtendedAssetParser = z.object({\n quantity: z.string(),\n contract: accountParser\n})\nexport type ExtendedAsset = z.infer<typeof ExtendedAssetParser>","import * as z from 'zod';\nimport { accountParser, authorizationsParser } from './base'\n\nconst actionParser = z.object({\n account: z.string(),\n name: z.string(),\n authorization: z.array(\n z.object({\n actor: z.string(),\n permission: z.string(),\n })\n ),\n data: z.any(),\n hex_data: z.string().optional()\n})\n\nconst transactionExtensionsParser = z.array(z.number().or(z.string())).optional()\n\nconst rawTransactionParser = z.object({\n expiration : z.string(),\n ref_block_num : z.number(),\n ref_block_prefix : z.number(),\n max_net_usage_words : z.number(),\n max_cpu_usage_ms : z.number(),\n delay_sec : z.number(),\n context_free_actions : z.array(actionParser),\n transaction_extensions: z.array(transactionExtensionsParser)\n})\n\nexport const baseActionParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => z.object({\n account: contract === '*' ? accountParser : z.literal(contract),\n name: z.literal(action),\n data: z.object(data),\n authorization: authorizationsParser\n})\n\nexport const baseActionSerializedParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => z.object({\n account: contract === '*' ? accountParser : z.literal(contract),\n name: z.literal(action),\n data: z.string().or(z.object(data)),\n authorization: authorizationsParser\n})\n\nexport const webauthActionParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => z.object({\n account: z.literal('webauthn'),\n name: z.literal('exec'),\n data: z.object({\n account: accountParser,\n key: z.object({\n key: z.array(z.string().or(z.object({\n modulus: z.string(),\n exponent: z.string()\n }))),\n user_presence: z.number(),\n rpid: z.string()\n }),\n nonce: z.number(),\n permissions: authorizationsParser,\n signature: z.object({\n auth_data: z.string(),\n client_json: z.string(),\n signature: z.string()\n }),\n trx: rawTransactionParser.merge(\n z.object({\n actions: z.array(\n baseActionSerializedParser(contract, action, data)\n ).length(1)\n })\n )\n }),\n authorization: authorizationsParser\n})\n\nexport const singleActionTransactionParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => {\n const baseAction = baseActionParser(contract, action, data)\n const webauthAction = webauthActionParser(contract, action, data)\n\n return rawTransactionParser.merge(z.object({\n actions: z.array(baseAction.or(webauthAction)).length(1)\n }))\n}","import * as z from 'zod'\n\nexport enum Type {\n RECEIVE = 'receive',\n SEND = 'send'\n}\n\nexport const depositBodyParser = z.object({\n id : z.string(), // \"0x000010203121388fac991\"\n type : z.nativeEnum(Type), // \"receive\" or \"send\"\n hash : z.string(), // \"0x000010203121388fac991\"\n coin : z.string(), // \"ETH\" or \"XPR\"\n wallet : z.string(), // \"ETH-ROPSTEN\" or \"XPR-MAINNET\"\n network : z.string().optional(), // \"erc29\"\n})\nexport type DepositBody = z.infer<typeof depositBodyParser>\n\nexport const transactionParser = z.object({\n id : z.string(), // \"2629304740076324677\"\n wallet : z.string(), // \"ETH\"\n value : z.number(), // 10000000000000000\n valueString : z.string(), // \"10000000000000000\"\n address : z.string(), // \"0x0000\"\n type : z.nativeEnum(Type), // \"receive\" or \"send\"\n state : z.string(), // \"confirmed\"\n confirmations : z.number(), // 1\n hash : z.string(), // \"b4781422be95fee8fbbf720e3e0fa9705ae834474ef25f5724cdd0f5d23211ed\"\n blockHash : z.string().optional().nullable(), // \"000000000000000000089b270eb99f75107d6a9cde37ec944cb80a2998df7b43\"\n blockHeight : z.number().optional().nullable(), // 643159\n})\nexport type Transaction = z.infer<typeof transactionParser>","import * as z from 'zod';\nimport { baseActionParser, singleActionTransactionParser } from './actions'\nimport { authorizationParser } from './base'\nimport { WRAP_CONTRACT, WRAP_AUTH_ACTION } from '../constants'\n\nexport const createAbstractAuthParser = (contract: string, action: string, data: z.ZodRawShape) => {\n return z.object({\n signer : authorizationParser,\n signatures : z.array(z.string()).length(1),\n transaction: singleActionTransactionParser(contract, action, data)\n })\n}\n\nconst generateAuthData = {\n time: z.string(),\n protonAccount: z.string()\n}\nconst generateAuthActionsBaseParser = baseActionParser(WRAP_CONTRACT, WRAP_AUTH_ACTION, generateAuthData)\nexport type GenerateAuthBaseAction = z.infer<typeof generateAuthActionsBaseParser>\n\nexport const generateAuthParser = createAbstractAuthParser(WRAP_CONTRACT, WRAP_AUTH_ACTION, generateAuthData)\nexport type GenerateAuth = z.infer<typeof generateAuthParser>","import { Coin, CoinWallet, initializeCoins, Wallet } from './coins'\n\nexport const WRAP_CONTRACT = 'proton.wrap'\nexport const WRAP_AUTH_ACTION = 'generateauth'\nexport const FEE_FACTOR = 10000\n\nexport const initializeConstants = (chain: string) => {\n const { swapCoins, bridgeCoins, allEnabledCoins, allCoins, lendCoins, borrowCoins, loanCoins } = initializeCoins(chain)\n\n const constants = {\n SWAP_CONTRACT: 'proton.swaps',\n DEX_CONTRACT: 'dex', \n FEE_FACTOR,\n GOOGLE_MAPS_KEY: 'AIzaSyDb2_CrK032kSIqBXbkdwmaLKWELl0SxVs',\n SWAP_URL: chain === 'proton'\n ? 'https://otc.protonswap.com'\n : 'https://otc-test.protonswap.com',\n WRAP_SERVER_URL: chain === 'proton'\n ? 'https://www.api.bloks.io/proton-wrap-public2'\n : 'https://www.api.bloks.io/proton-wrap-testnet-public2',\n WRAP_CONTRACT,\n WRAP_ACTIONS: {\n SAVE_ADDRESS: 'saveaddress2',\n DELETE_ADDRESS: 'deladdress2',\n WRAP_START: 'wrapstart2',\n WRAP_FINISH: 'wrapfinish2',\n WRAP_PROCESS: 'wrapprocess2',\n WRAP_SET_CONF: 'wrapsetconf2',\n },\n WRAP_TABLES: {\n ADDRESSES: 'addresses2',\n WRAPS: 'wraps2'\n },\n ADDRESSES_INDEXES: {\n BY_ACCOUNT: 2,\n BY_ADDR_HASH: 3\n },\n WRAPS_INDEXES: {\n BY_ACCOUNT: 2,\n BY_STATUS: 3,\n BY_WRAP_HASH: 4\n },\n WRAP_PROCESS_TIMER: 5000,\n\n FARM_CONTRACT: 'yield.farms',\n\n WEBHOOK_PERMISSION: 'webhook',\n PUBLIC_PERMISSION: 'public',\n LIGHT_PERMISSION: 'light',\n WRAP_AUTH_ACTION: WRAP_AUTH_ACTION,\n\n METAL_ENDPOINT: chain === 'proton'\n ? 'https://cirrus.metalpay.com'\n : 'https://cirrus-dev.metalpay.com',\n\n METAL_PROTON_ENDPOINT: chain === 'proton'\n ? 'https://api.protonchain.com'\n : 'https://api-dev.protonchain.com',\n\n METAL_DEX_HTTP_ENDPOINT: chain === 'proton'\n ? 'https://metal-dexdb.global.binfra.one/dex'\n : 'https://metallicus-dbapi-dev01.binfra.one/dex',\n\n METAL_DEX_WS_ENDPOINT: chain === 'proton'\n ? 'wss://metal-dexdb.global.binfra.one/dexws'\n : 'wss://metallicus-dbapi-dev01.binfra.one/dexws',\n\n PROTON_ENDPOINTS: chain === 'proton'\n ? ['https://metal-proton-rpc.global.binfra.one', 'https://proton.greymass.com', 'https://proton.eoscafeblock.com', 'https://proton.cryptolions.io', 'https://proton.eosusa.news']\n : ['https://metal-protontest-rpc.global.binfra.one', 'https://testnet.protonchain.com'],\n\n CHAIN_ID: chain === 'proton'\n ? '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0'\n : '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd',\n\n DEX_PROCESS_SIZE: 30,\n DEX_SLTPPROCESS_SIZE: 10,\n MAX_PRICE: \"9223372036854775806\",\n MAX_ITEMS_PER_PAGE_DESKTOP: 25,\n MIN_PRICE: 1,\n DEFAULT_DEX_SYMBOL: chain === 'proton'\n ? 'XPR_XMD'\n : 'XPR_XUSDC',\n\n CHAIN: chain,\n\n SWAP_COINS: swapCoins,\n BRIDGE_COINS: bridgeCoins,\n ALL_ENABLED_COINS: allEnabledCoins,\n LEND_COINS: lendCoins,\n BORROW_COINS: borrowCoins,\n LOAN_COINS: loanCoins,\n ALL_COINS: allCoins,\n\n findBridgeCoinWalletByXtokenAndChain (xtokenSymbol: string, chain: string): CoinWallet | undefined {\n const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin: Coin) => bridgeCoin.xtokenSymbol === xtokenSymbol)\n if (!bridgeCoin) return undefined\n const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet: Wallet) => bridgeWallet.chain === chain)\n if (!bridgeWallet) return undefined\n\n return {\n ...bridgeCoin,\n ...bridgeWallet\n }\n },\n\n findBridgeCoinWallet (coin: string, wallet: string): CoinWallet | undefined {\n const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin: Coin) => bridgeCoin.coin === coin)\n if (!bridgeCoin) return undefined\n\n const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet: Wallet) => bridgeWallet.wallet === wallet)\n if (!bridgeWallet) return undefined\n\n return {\n ...bridgeCoin,\n ...bridgeWallet\n }\n },\n\n findBridgeCoinNetwork (coin: string, network: string): CoinWallet | undefined {\n const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin: Coin) => bridgeCoin.coin === coin)\n if (!bridgeCoin) return undefined\n const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet: Wallet) => bridgeWallet.network === network)\n if (!bridgeWallet) return undefined\n\n return {\n ...bridgeCoin,\n ...bridgeWallet\n }\n }\n }\n\n return constants\n}","import * as z from 'zod';\nimport { accountParser } from './base'\nimport { generateAuthParser } from './auth'\n\nexport const addressParser = z.object({\n index : z.number(),\n account : accountParser,\n chain : z.string(),\n address : z.string(),\n address_hash: z.string(),\n})\nexport type Address = z.infer<typeof addressParser>\n\nexport const generateAddressBodyParser = z.object({\n coin: z.string(),\n wallet: z.string(),\n}).merge(generateAuthParser)\nexport type GenerateAddressBody = z.infer<typeof generateAddressBodyParser>\n\nexport const generateAddressResponse = z.object({\n id : z.string(), // \"2448834505708930950\",\n address: z.string(), // \"0x617C03C1E2Bf81C062A4CEfbE312c070E1d86d18\",\n coin : z.string(), // \"ETH\",\n wallet : z.string(), // \"ETH\",\n memo : z.string().optional()\n})\nexport type GenerateAddressResponse = z.infer<typeof generateAddressResponse>\n","import * as z from 'zod'\n\nexport interface CurrencyStat {\n supply : string;\n max_supply: string;\n issuer : string;\n}\nexport interface CurrencyStats {\n [key: string]: CurrencyStat;\n}\n\nexport const rateParser = z.object({\n counterCurrency : z.string(),\n price : z.number(),\n priceChangePercent: z.number(),\n marketCap : z.number(),\n volume : z.number(),\n timestamp : z.number()\n})\nexport type Rate = z.infer<typeof rateParser>\n\nexport const exchangeRateParser = z.object({\n contract: z.string(),\n symbol : z.string(),\n rank : z.number(),\n rates : z.array(rateParser)\n})\nexport type ExchangeRate = z.infer<typeof exchangeRateParser>\n\nexport const exchangeRatesParser = z.array(exchangeRateParser)\nexport type ExchangeRates = z.infer<typeof exchangeRatesParser>\n\nexport const bloksRatesParser = z.array(z.object({\n contract: z.string(),\n symbol : z.string(),\n rank : z.number(),\n rates : z.array(rateParser)\n}))\n\nexport type BloksRate = {\n key: string;\n symbol: string;\n account: string;\n chain: string;\n supply: {\n circulating: number;\n max: number;\n precision: number;\n last_update: string;\n };\n metadata: {\n name: string;\n website: string;\n logo: string;\n created_at: string;\n desc: string;\n };\n pairs: [\n {\n id: string;\n pair_base: string;\n pair_quote: string;\n exchange: string;\n quote:{\n price: number\n volume_base_24h: number\n volume_quote_24h: number\n market_cap: number\n price_usd: number\n volume_usd_24h: number\n },\n percentage_daily_volume: number\n },\n ];\n price: {\n quotes: {\n [key: string]: number\n },\n usd: number;\n volume_base_24h: number;\n volume_usd_24h: number;\n marketcap_usd: number;\n change_24hr: number;\n },\n rank: number;\n chain_rank: number;\n}\n\nexport type BloksRates = BloksRate[]","import * as z from 'zod'\nimport { ExtendedAssetParser } from './base'\n\nexport enum Status {\n PENDING = 'pending',\n SUCCESS = 'success',\n FAIL = 'fail',\n PROCESSING = 'processing'\n}\n\nexport const wrapStartParser = z.object({\n balance : ExtendedAssetParser,\n id : z.string(),\n txid : z.string(),\n chain : z.string(),\n deposit_address: z.string(),\n confirmations : z.number()\n})\n\nexport type WrapStart = z.infer<typeof wrapStartParser>\n\nexport const wrapSetConfParser = z.object({\n wrap_hash : z.string(),\n confirmations: z.number()\n})\nexport type WrapSetConf = z.infer<typeof wrapSetConfParser>\n\nexport const wrapParser = z.object({\n index : z.number(),\n proton_account : z.string(),\n balance : ExtendedAssetParser,\n id : z.string(),\n txid : z.string(),\n chain : z.string(),\n deposit_address: z.string(),\n status : z.nativeEnum(Status),\n finish_txid : z.string(),\n wrap_hash : z.string(),\n confirmations : z.number(),\n})\nexport type Wrap = z.infer<typeof wrapParser>","import * as z from 'zod'\n\nexport const otcOrderResponseParser = z.object({\n success : z.boolean(),\n transaction_id: z.string(),\n errormsg : z.string().optional()\n})\nexport type OtcOrderResponse = z.infer<typeof otcOrderResponseParser>\n\nexport const otcQuoteBodyParser = z.object({\n baseAmount : z.number(),\n baseSymbol : z.string(),\n quoteSymbol: z.string()\n})\nexport type OtcQuoteBody = z.infer<typeof otcQuoteBodyParser>\n\nexport const otcQuoteResponseParser = z.object({\n success : z.boolean(),\n token : z.string(),\n qty : z.number(),\n errormsg: z.string().optional()\n})\nexport type OtcQuoteResponse = z.infer<typeof otcQuoteResponseParser>","import * as z from 'zod'\nimport { singleActionTransactionParser } from './actions'\nimport { authorizationParser } from './base'\nimport { WRAP_CONTRACT } from '../constants'\nimport { baseActionParser } from './actions'\n\nconst withdrawData = {\n from: z.string().refine((val) => val !== WRAP_CONTRACT, {\n message: `${WRAP_CONTRACT} must be receiver`,\n }),\n to: z.literal(WRAP_CONTRACT),\n quantity: z.string(),\n memo: z.string()\n}\nconst withdrawBodyBaseAction = baseActionParser('*', 'transfer', withdrawData)\nexport type WithdrawBodyBaseAction = z.infer<typeof withdrawBodyBaseAction>\n\nexport const withdrawBodyParser = z.object({\n signer : authorizationParser,\n signatures : z.array(z.string()).length(1),\n transaction: singleActionTransactionParser('*', 'transfer', withdrawData),\n quoteId: z.string(),\n provider: z.string().optional()\n})\nexport type WithdrawBody = z.infer<typeof withdrawBodyParser>\n\nexport const withdrawMetalResponseParser = z.object({\n success: z.boolean(),\n id : z.string(),\n})\nexport type WithdrawMetalResponse = z.infer<typeof withdrawMetalResponseParser>\n\nexport const withdrawalFeeQuoteParser = z.object({\n quoteId : z.string(),\n estimatedFee: z.string(),\n currency : z.string(),\n network : z.string(),\n})\nexport type WithdrawalFeeQuote = z.infer<typeof withdrawalFeeQuoteParser>","import * as z from 'zod'\n\nexport const withdrawHistoryMetalSwapParser = z.object({\n id : z.string(),\n status : z.string(),\n amount : z.string(),\n currency : z.string(),\n network : z.string(),\n created : z.string(),\n withdrawalAddress: z.string(),\n withdrawalHash : z.string().optional()\n})\nexport type WithdrawHistoryMetalSwap = z.infer<typeof withdrawHistoryMetalSwapParser>\n\nexport const withdrawHistoryMetalResponseParser = z.object({\n swaps : z.array(withdrawHistoryMetalSwapParser),\n page : z.number(),\n pageSize : z.number(),\n numberOfElements: z.number(),\n totalPages : z.number(),\n totalElements : z.number()\n})\nexport type WithdrawHistoryMetalResponse = z.infer<typeof withdrawHistoryMetalResponseParser>\n","import * as z from 'zod';\n\nexport const ohlcvParser = z.object({\n time: z.number(),\n open: z.number(),\n high: z.number(),\n low: z.number(),\n close: z.number(),\n volume: z.number(),\n volume_bid: z.number(),\n count: z.number()\n})\nexport type OHLCV = z.infer<typeof ohlcvParser>\n\nexport const getOhlcvParser = z.object({\n interval: z.string(),\n from: z.string(),\n to: z.string(),\n symbol: z.string(),\n limit: z.string().default(\"500\").refine(n => +n <= 1000, 'Max limit is 1000'),\n})\nexport type GetOHLCV = z.infer<typeof getOhlcvParser>\n\nexport const getOhlcvResponseParser = z.object({\n sync: z.number(),\n data: z.array(ohlcvParser)\n})\nexport type GetOHLCVResponse = z.infer<typeof getOhlcvResponseParser>\n\nexport const orderHistoryParser = z.object({\n seq: z.number(),\n block_num: z.number(),\n block_time: z.string(),\n order_id: z.number(),\n market_id: z.number(),\n quantity_init: z.number().optional(),\n quantity_curr: z.number(),\n price: z.number(),\n account_name: z.string(),\n order_side: z.number(),\n order_type: z.number(),\n trigger_price: z.number(),\n fill_type: z.number(),\n status: z.string(),\n quantity_change: z.number(),\n trx_id: z.string(),\n})\nexport type OrderHistory = z.infer<typeof orderHistoryParser>\n\nexport const getOrderHistoryParser = z.object({\n account: z.string(),\n symbol: z.string().optional(),\n offset: z.string().default(\"0\"),\n limit: z.string().default(\"100\").refine(n => +n <= 250, 'Max limit is 250'),\n})\nexport type GetOrderHistory = z.infer<typeof getOrderHistoryParser>\n\nexport const getOrderHistoryResponseParser = z.object({\n sync: z.number(),\n count: z.number(),\n data: z.array(orderHistoryParser)\n})\nexport type GetOrderHistoryResponse = z.infer<typeof getOrderHistoryResponseParser>\n\nexport const depthParser = z.object({\n level: z.number(),\n ask: z.number(),\n bid: z.number(),\n count: z.number(),\n})\nexport type Depth = z.infer<typeof depthParser>\n\nexport const getDepthParser = z.object({\n symbol: z.string(),\n step: z.string(),\n limit: z.string().default(\"100\").refine(n => +n <= 250, 'Max limit is 250'),\n})\nexport type GetDepth = z.infer<typeof getDepthParser>\n\nexport const getDepthResponseParser = z.object({\n sync: z.number(),\n data: z.object({\n bids: z.array(depthParser),\n asks: z.array(depthParser),\n })\n})\nexport type GetDepthResponse = z.infer<typeof getDepthResponseParser>\n\nexport const dailyParser = z.object({\n market_id: z.number(),\n first: z.number(),\n last: z.number(),\n bid: z.number(),\n ask: z.number(),\n change_percentage_24hr: z.number()\n})\nexport type Daily = z.infer<typeof dailyParser>\n\nexport const getDailyResponseParser = z.object({\n sync: z.number(),\n data: z.array(dailyParser)\n})\nexport type GetDailyResponseParser = z.infer<typeof getDailyResponseParser>\n\nexport const marketParser = z.object({\n market_id: z.number(),\n symbol: z.string(),\n status_code: z.number(),\n type: z.string(),\n maker_fee: z.number(),\n taker_fee: z.number(),\n order_min: z.number(),\n bid_token: z.object({\n code: z.string(),\n precision: z.number(),\n contract: z.string(),\n multiplier: z.number()\n }),\n ask_token: z.object({\n code: z.string(),\n precision: z.number(),\n contract: z.string(),\n multiplier: z.number()\n })\n})\nexport type Market = z.infer<typeof marketParser>\n\nexport const getMarketsResponseParser = z.object({\n sync: z.number(),\n data: z.array(marketParser)\n})\nexport type GetMarketsResponse = z.infer<typeof getMarketsResponseParser>\n\nexport const tradeParser = z.object({\n block_num: z.number(),\n block_time: z.string(),\n trade_id: z.number(),\n market_id: z.number(),\n price: z.number(),\n bid_user: z.string(),\n bid_user_order_id: z.number(),\n bid_total: z.number(),\n bid_amount: z.number(),\n bid_fee: z.number(),\n ask_user: z.string(),\n ask_user_order_id: z.number(),\n ask_total: z.number(),\n ask_amount: z.number(),\n ask_fee: z.number(),\n order_side: z.number(),\n trx_id: z.string(),\n})\nexport type Trade = z.infer<typeof tradeParser>\n\nexport const getTradesParser = z.object({\n symbol: z.string(),\n offset: z.string().default(\"0\"),\n limit: z.string().default(\"100\").refine(n => +n <= 250, 'Max limit is 250'),\n})\nexport type GetTrades = z.infer<typeof getTradesParser>\n\nexport const getTradesResponseParser = z.object({\n sync: z.number(),\n data: z.array(tradeParser)\n})\nexport type GetTradesResponseParser = z.infer<typeof getTradesResponseParser>\n\nexport const syncParser = z.object({\n sourceid: z.number(),\n block_num: z.string(),\n block_time: z.string(),\n irreversible: z.string(),\n is_master: z.number(),\n last_updated: z.string(),\n})\nexport type Sync = z.infer<typeof syncParser>\n\nexport const getSyncResponseParser = z.object({\n dbSecondsBehind: z.number(),\n chronicleSecondsBehind: z.number(),\n maxSecondsBehind: z.number()\n})\nexport type GetSyncResponse = z.infer<typeof getSyncResponseParser>\n\nexport enum orderType { ORDERBOOK = 0, LIMIT = 1, STOPLOSS = 2, TAKEPROFIT = 3 }\n\nexport enum orderSide { INVALID = 0, BUY = 1, SELL = 2 }\n\nexport enum fillType { GTC = 0, IOC = 1, POST_ONLY = 2 }\n\nexport enum logStatus {\n CREATE = \"create\",\n UPDATE = \"update\",\n TRANSFER = \"transfer\",\n CANCEL = \"cancel\",\n DELETE = \"delete\",\n}\n\nexport interface CurrentOrder {\n order_id: number\n market_id: number\n quantity_init: number\n quantity_curr: number\n price: number\n account_name: string\n order_side: number\n order_type: number\n status: string\n created_at: string\n updated_at: string\n}\n\nexport interface DbMarket {\n market_id: number\n order_min: number\n status_code: number\n maker_fee: number\n taker_fee: number\n bid_token_c: string\n bid_token_s: string\n bid_token_m: number\n ask_token_c: string\n ask_token_s: string\n ask_token_m: number\n created_at: string\n updated_at: string\n}\n\nexport enum ITopics {\n TRADES = \"TRADES\",\n ORDERS = \"ORDERS\",\n}\n \nexport const TOPICS = {\n [ITopics.TRADES]: {\n topic: ITopics.TRADES,\n },\n [ITopics.ORDERS]: {\n topic: ITopics.ORDERS,\n }\n}","import * as z from 'zod';\nimport { generateAuthParser } from \"./auth\"\n\nexport const loginAccountParamsV3Parser = z.object({\n email: z.string().optional(),\n verificationCode: z.string().optional(),\n}).merge(generateAuthParser)\n \nexport type LoginAccountParamsV3 = z.infer<typeof loginAccountParamsV3Parser>","import cloneDeep from 'lodash.clonedeep'\n\nexport class INode <T> {\n data: T = {} as T\n constructor (public key: string, data?: T) {\n if (data) {\n this.data = data\n }\n }\n}\n\nexport class ILink <T> {\n data: T = {} as T\n constructor (public from: INode<T>, public to: INode<T>, data?: T) {\n if (data) {\n this.data = data\n }\n }\n}\n\nexport class Graph <T> {\n nodes: INode<T>[] = []\n links: ILink<T>[] = []\n lastPathFound: INode<T>[] = []\n\n isEquals = (a: INode<T>, b: INode<T>) => a.key === b.key\n\n addNode (k: string, v?: T): void {\n const node = this.findNode(k)\n if (!node) {\n this.nodes.push(new INode(k, v))\n }\n }\n\n addNodes (...nodes: (string | [string, T?])[]): void {\n nodes.forEach(node => typeof node === \"string\" ? this.addNode(node) : this.addNode(node[0], node[1]))\n }\n\n findNode (k: string): INode<T> | undefined {\n const inode = new INode<T>(k)\n return this.nodes.find(node => this.isEquals(node, inode))\n }\n\n findNodes (...keys: string[]): (INode<T> | undefined)[] {\n return keys.map(k => this.findNode(k))\n }\n\n requireFindNodes (...keys: string[]): INode<T>[] {\n const nodes = this.findNodes(...keys)\n if (nodes.some(n => n === undefined)) {\n throw new Error('One of the nodes does not exist')\n }\n return nodes as INode<T>[]\n }\n\n addLink (nodeA: string, nodeB: string, data?: T): void {\n const [inodeA, inodeB] = this.requireFindNodes(nodeA, nodeB)\n this.links.push(new ILink<T>(inodeA, inodeB, data))\n }\n\n addLinks (...links: [nodeA: string, nodeB: string, data?: T][]): void {\n links.forEach(link => this.addLink(...link))\n }\n \n /** \n * Get all nodes linked \n * to from `node`.\n */\n findLinkedNodes (node: INode<T>) {\n return this.links.reduce((acc, link) => {\n if (this.isEquals(link.from, node)) {\n acc.push(link.to)\n }\n return acc;\n }, [] as INode<T>[]);\n }\n\n findAllPaths(from: string, to: string) {\n const allPaths: INode<T>[][] = []\n\n const [fromNode, toNode] = this.requireFindNodes(from, to)\n\n const path: INode<T>[] = [fromNode]\n let seen = new Set()\n\n const stuck = (x: INode<T>) => {\n if (this.isEquals(x, toNode)) {\n return false\n }\n\n for (const y of this.findLinkedNodes(x)) {\n if (!seen.has(y.key)) {\n seen.add(y.key)\n if (!stuck(y)) {\n return false\n }\n }\n }\n\n return true\n }\n\n const search = (x: INode<T>) => {\n if (this.isEquals(x, toNode)) {\n allPaths.push(cloneDeep(path))\n return\n }\n seen = new Set(path.map(p => p.key))\n if (stuck(x)) {\n return\n }\n\n for (const y of this.findLinkedNodes(x)) {\n if (!path.includes(y)) {\n path.push(y)\n search(y)\n path.pop()\n }\n }\n }\n\n search(fromNode)\n\n return allPaths\n }\n}","import { BigNumber as BN } from 'bignumber.js'\nimport { FEE_FACTOR } from './constants'\n\n/**\n * XPR<>XUSDT (XPR -> XUSDT)\n *\n * pool1 * pool2\n * term = pool2 - --------------\n * pool1 + swap\n *\n * result = term - (term * fee)\n */\nexport const compute_transfer = (pool1: BN.Instance, pool2: BN.Instance, swap: BN.Instance, exchange_fee: number, precision: number): BN => {\n const term1 = pool2\n const term2over = pool1.times(pool2)\n const term2under = pool1.plus(swap)\n const term2 = term2over.div(term2under).integerValue(BN.ROUND_DOWN)\n const term = term1.minus(term2)\n const fee = new BN(exchange_fee).div(FEE_FACTOR)\n const result = term.minus(term.times(fee))\n \n return result.integerValue(BN.ROUND_DOWN).shiftedBy(-precision)\n}\n\nexport const compute_transfer_curve = (\n reserve_in: number,\n reserve_out: number,\n amount_in: number,\n exchange_fee: number,\n precision: number,\n amplifier: number\n): BN => {\n if (amplifier === 0) {\n return compute_transfer(new BN(reserve_in), new BN(reserve_out), new BN(amount_in), exchange_fee, precision)\n }\n\n const MAX_ITERATIONS = 10\n\n const sum = reserve_in + reserve_out\n let D = sum;\n let D_prev = 0\n\n const F = (v: number) => {\n return (v >= 0 ? 1 : -1) * Math.floor(Math.abs(v));\n }\n\n let i = MAX_ITERATIONS\n while (D != D_prev && i--) {\n const prod1 = F((F((D * D) / (reserve_in * 2)) * D) / (reserve_out * 2));\n D_prev = D\n D = F((2 * D * ((amplifier * sum) + prod1)) / ((2 * amplifier - 1) * D + 3 * prod1));\n }\n\n const b = ((reserve_in + amount_in) + F(D / (amplifier * 2))) - D;\n\n const c = F(F((D * D) / ((reserve_in + amount_in) * 2)) * D / (amplifier * 4));\n\n let x = D, x_prev = 0;\n i = MAX_ITERATIONS;\n while ( x != x_prev && i--) {\n x_prev = F(x);\n x = +new BN(x * x + c).div(2 * x + b).toFixed(0, BN.ROUND_DOWN)\n }\n\n if (reserve_out <= x) {\n throw new Error(\"curve: insufficient reserve out\")\n }\n\n // Amount out + Fee + 1\n const amount_out_with_fee = new BN(reserve_out - x);\n\n // Fee + 1\n // +1 covers small precision issues\n const fee = amount_out_with_fee.times(exchange_fee).div(FEE_FACTOR).plus(1).toFixed(0, BN.ROUND_DOWN);\n \n // Amount out\n const amount_out = amount_out_with_fee.minus(fee)\n\n return amount_out.integerValue(BN.ROUND_DOWN).shiftedBy(-precision)\n}\n\nexport const compute_liquidity = (amount_lt: BN.Instance, pool: BN.Instance, lt_supply: BN.Instance, precision: number): number => {\n const over = amount_lt.times(pool)\n const under = lt_supply\n const result = over.div(under).integerValue(BN.ROUND_DOWN)\n\n return +(result.shiftedBy(-precision).toFixed(precision, BN.ROUND_DOWN))\n}\n\nexport const isInputInvalid = (data: string, value: string | number, pool: { xtokenPrecision: number }): boolean => {\n value = String(value)\n \n const isBackspace = data === null\n const isNumber = !/[0-9]|\\./.test(data)\n const isDoubleDot = data === '.' && value.indexOf('.') !== value.length - 1\n const isPrecisionTooHigh = value && value.indexOf('.') !== -1 && value.split('.')[1].length > pool.xtokenPrecision\n const isInvalid = !isBackspace && Boolean(isNumber || isDoubleDot || isPrecisionTooHigh)\n\n return isInvalid\n}\n\nexport const applyDiscountToFee = (fee: number, staked: number): number => {\n if (staked >= 10000000) {\n return fee * 0\n } else if (staked >= 1000000) {\n return fee * 0.33\n } else if (staked >= 100000) {\n return fee * 0.66\n } else {\n return fee\n }\n}","interface PartialCoin {\n xtokenSymbol: string;\n xtokenPrecision: number;\n xtokenContract: string;\n}\n\nexport const isSameToken = (token1: PartialCoin, token2: PartialCoin) => {\n return token1.xtokenSymbol === token2.xtokenSymbol &&\n token1.xtokenPrecision === token2.xtokenPrecision &&\n token1.xtokenContract === token2.xtokenContract\n}\n\nexport const median = (numbers: number[]) => {\n const sorted = numbers.slice().sort((a, b) => a - b);\n const middle = Math.floor(sorted.length / 2);\n\n if (sorted.length % 2 === 0) {\n return (sorted[middle - 1] + sorted[middle]) / 2;\n }\n\n return sorted[middle];\n}\n"],"names":["Chains","Networks","Providers","similarChains","EthereumMainnet","BinanceBEP20","explorerLinkByChain","BitcoinMainnet","txid","BitcoinTestnet","EthereumRopsten","LitecoinMainnet","LitecoinTestnet","BitcoinCashMainnet","BitcoinCashTestnet","StellarMainnet","StellarTestnet","ProtonMainnet","traces","ProtonTestnet","PolkadotMainnet","BinanceBEP2","EosMainnet","EosTestnet","HederaMainnet","HederaTestnet","DogeMainnet","CardanoMainnet","AvalancheXChain","AvalancheCChain","PolygonMainnet","TerraMainnet","RippleMainnet","SolanaMainnet","MetalXTestnet","MetalCTestnet","MetalCMainnet","initializeCoins","protonChain","IS_MAINNET","IS_TESTNET","coins","allowSwap","allowBridge","allowLend","allowBorrow","name","coin","xtokenSymbol","xtokenPrecision","xtokenContract","wallets","wallet","symbol","chain","network","ERC20","precision","contract","provider","FIREBLOCKS","hasWithdrawMemo","BEP20","image","coingeckoId","XLM","undefined","Ropsten","EVM","METAL","Mainnet","Testnet","walletWithDuplicateChains","find","chains","map","Set","size","length","Error","allCoins","swapCoins","filter","bridgeCoins","lendCoins","borrowCoins","loanCoins","allEnabledCoins","accountParser","z","regex","authorizationParser","actor","permission","authorizationsParser","min","ExtendedAssetParser","quantity","actionParser","account","authorization","data","hex_data","optional","transactionExtensionsParser","or","rawTransactionParser","expiration","ref_block_num","ref_block_prefix","max_net_usage_words","max_cpu_usage_ms","delay_sec","context_free_actions","transaction_extensions","baseActionParser","action","baseActionSerializedParser","webauthActionParser","key","modulus","exponent","user_presence","rpid","nonce","permissions","signature","auth_data","client_json","trx","merge","actions","singleActionTransactionParser","baseAction","webauthAction","Type","createAbstractAuthParser","signer","signatures","transaction","generateAuthParser","time","protonAccount","addressParser","index","address","address_hash","generateAddressBodyParser","generateAddressResponse","id","memo","rateParser","counterCurrency","price","priceChangePercent","marketCap","volume","timestamp","exchangeRateParser","rank","rates","exchangeRatesParser","bloksRatesParser","Status","depositBodyParser","type","hash","transactionParser","value","valueString","state","confirmations","blockHash","nullable","blockHeight","otcOrderResponseParser","success","transaction_id","errormsg","otcQuoteBodyParser","baseAmount","baseSymbol","quoteSymbol","otcQuoteResponseParser","token","qty","withdrawData","from","refine","val","message","WRAP_CONTRACT","to","withdrawBodyParser","quoteId","withdrawMetalResponseParser","withdrawalFeeQuoteParser","estimatedFee","currency","withdrawHistoryMetalSwapParser","status","amount","created","withdrawalAddress","withdrawalHash","withdrawHistoryMetalResponseParser","swaps","page","pageSize","numberOfElements","totalPages","totalElements","orderType","orderSide","fillType","logStatus","ITopics","wrapStartParser","balance","deposit_address","wrapSetConfParser","wrap_hash","wrapParser","proton_account","finish_txid","ohlcvParser","open","high","low","close","volume_bid","count","getOhlcvParser","interval","limit","n","getOhlcvResponseParser","sync","orderHistoryParser","seq","block_num","block_time","order_id","market_id","quantity_init","quantity_curr","account_name","order_side","order_type","trigger_price","fill_type","quantity_change","trx_id","getOrderHistoryParser","offset","getOrderHistoryResponseParser","depthParser","level","ask","bid","getDepthParser","step","getDepthResponseParser","bids","asks","dailyParser","first","last","change_percentage_24hr","getDailyResponseParser","marketParser","status_code","maker_fee","taker_fee","order_min","bid_token","code","multiplier","ask_token","getMarketsResponseParser","tradeParser","trade_id","bid_user","bid_user_order_id","bid_total","bid_amount","bid_fee","ask_user","ask_user_order_id","ask_total","ask_amount","ask_fee","getTradesParser","getTradesResponseParser","syncParser","sourceid","irreversible","is_master","last_updated","getSyncResponseParser","dbSecondsBehind","chronicleSecondsBehind","maxSecondsBehind","TOPICS","TRADES","topic","ORDERS","loginAccountParamsV3Parser","email","verificationCode","INode","this","ILink","Graph","nodes","links","lastPathFound","isEquals","a","b","_proto","addNode","k","v","findNode","push","addNodes","forEach","node","_this","inode","_this2","findNodes","keys","_this3","requireFindNodes","some","addLink","nodeA","nodeB","addLinks","link","_this4","findLinkedNodes","reduce","acc","_this5","findAllPaths","allPaths","fromNode","toNode","path","seen","search","x","_this6","cloneDeep","p","stuck","y","has","add","includes","pop","compute_transfer","pool1","pool2","swap","exchange_fee","term1","term2over","times","term2under","plus","term2","div","integerValue","BN","ROUND_DOWN","term","minus","fee","shiftedBy","staked","amount_lt","pool","lt_supply","toFixed","reserve_in","reserve_out","amount_in","amplifier","sum","D","D_prev","F","Math","floor","abs","i","prod1","c","x_prev","amount_out_with_fee","constants","SWAP_CONTRACT","DEX_CONTRACT","FEE_FACTOR","GOOGLE_MAPS_KEY","SWAP_URL","WRAP_SERVER_URL","WRAP_ACTIONS","SAVE_ADDRESS","DELETE_ADDRESS","WRAP_START","WRAP_FINISH","WRAP_PROCESS","WRAP_SET_CONF","WRAP_TABLES","ADDRESSES","WRAPS","ADDRESSES_INDEXES","BY_ACCOUNT","BY_ADDR_HASH","WRAPS_INDEXES","BY_STATUS","BY_WRAP_HASH","WRAP_PROCESS_TIMER","FARM_CONTRACT","WEBHOOK_PERMISSION","PUBLIC_PERMISSION","LIGHT_PERMISSION","WRAP_AUTH_ACTION","METAL_ENDPOINT","METAL_PROTON_ENDPOINT","METAL_DEX_HTTP_ENDPOINT","METAL_DEX_WS_ENDPOINT","PROTON_ENDPOINTS","CHAIN_ID","DEX_PROCESS_SIZE","DEX_SLTPPROCESS_SIZE","MAX_PRICE","MAX_ITEMS_PER_PAGE_DESKTOP","MIN_PRICE","DEFAULT_DEX_SYMBOL","CHAIN","SWAP_COINS","BRIDGE_COINS","ALL_ENABLED_COINS","LEND_COINS","BORROW_COINS","LOAN_COINS","ALL_COINS","findBridgeCoinWalletByXtokenAndChain","bridgeCoin","bridgeWallet","findBridgeCoinWallet","findBridgeCoinNetwork","String","isBackspace","isNumber","test","isDoubleDot","indexOf","isPrecisionTooHigh","split","Boolean","token1","token2","numbers","sorted","slice","sort","middle","txId"],"mappings":"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"}
1
+ {"version":3,"file":"wrap-constants.cjs.production.min.js","sources":["../src/coins.ts","../src/parsers/base.ts","../src/parsers/actions.ts","../src/parsers/deposit.ts","../src/parsers/auth.ts","../src/constants.ts","../src/parsers/address.ts","../src/parsers/currency.ts","../src/parsers/wrap.ts","../src/parsers/otc.ts","../src/parsers/withdraw.ts","../src/parsers/withdrawalHistory.ts","../src/parsers/dex.ts","../src/parsers/login.ts","../src/graph.ts","../src/math.ts","../src/utils.ts"],"sourcesContent":["import { Asset } from '@bloks/numbers'\n\nexport enum Chains {\n BitcoinMainnet = 'Bitcoin',\n BitcoinTestnet = 'Bitcoin (Testnet)',\n EthereumMainnet = 'Ethereum',\n EthereumRopsten = 'Ethereum (Ropsten)',\n LitecoinMainnet = 'Litecoin',\n LitecoinTestnet = 'Litecoin (Testnet)',\n BitcoinCashMainnet = 'Bitcoin Cash',\n BitcoinCashTestnet = 'Bitcoin Cash (Testnet)',\n StellarMainnet = 'Stellar',\n StellarTestnet = 'Stellar (Testnet)',\n ProtonMainnet = 'Proton',\n ProtonTestnet = 'Proton (Testnet)',\n PolkadotMainnet = 'Polkadot',\n BinanceBEP2 = 'Binance (BEP2)',\n BinanceBEP20 = 'Binance (BEP20)',\n EosMainnet = 'EOS',\n EosTestnet = 'EOS (Jungle Testnet)',\n HederaMainnet = 'Hedera (Mainnet)',\n HederaTestnet = 'Hedera (Testnet)',\n DogeMainnet = 'Dogecoin',\n CardanoMainnet = 'Cardano',\n AvalancheXChain = 'Avalanche X-Chain',\n AvalancheCChain = 'Avalanche C-Chain',\n PolygonMainnet = 'Polygon',\n TerraMainnet = 'Terra',\n RippleMainnet = 'Ripple',\n SolanaMainnet = 'Solana',\n MetalXTestnet = 'Metal X-Chain (Testnet)',\n MetalCTestnet = 'Metal C-Chain (Testnet)',\n MetalCMainnet = 'Metal C-Chain'\n}\n\nexport enum Networks {\n Mainnet = 'mainnet',\n Testnet = 'testnet',\n Ropsten = 'ropsten',\n ERC20 = 'erc20',\n BEP20 = 'bep20',\n XLM = 'xlm',\n AVM = 'avm',\n EVM = 'evm',\n}\n\nexport const similarChains = {\n [Chains.EthereumMainnet]: [Chains.BinanceBEP20],\n [Chains.BinanceBEP20]: [Chains.EthereumMainnet],\n}\n\nexport interface Coin {\n allowSwap : boolean;\n allowBridge : boolean;\n allowLend : boolean;\n allowBorrow : boolean;\n name : string;\n coin : string;\n xtokenSymbol : string;\n xtokenPrecision: number;\n xtokenContract : string;\n wallets : Wallet[];\n image : string;\n coingeckoId : string;\n balance? : Asset;\n}\n \nexport interface Wallet {\n wallet : string;\n symbol : string;\n chain : Chains;\n network : Networks;\n precision : number;\n contract : string | undefined;\n provider : string;\n hasWithdrawMemo: boolean;\n}\n\nexport enum Providers {\n FIREBLOCKS = \"fireblocks\",\n METAL = \"metal\"\n}\n\nexport type CoinWallet = Exclude<Coin, 'wallets'> & Wallet\n\nexport const explorerLinkByChain = {\n [Chains.BitcoinMainnet] : (txid: string) => `https://blockchain.com/btc/tx/${txid}`,\n [Chains.BitcoinTestnet] : (txid: string) => `https://blockstream.info/testnet/tx/${txid}`,\n [Chains.EthereumMainnet] : (txid: string) => `https://etherscan.io/tx/${txid}`,\n [Chains.EthereumRopsten] : (txid: string) => `https://ropsten.etherscan.io/tx/${txid}`,\n [Chains.LitecoinMainnet] : (txid: string) => `https://blockchair.com/litecoin/transaction/${txid}`,\n [Chains.LitecoinTestnet] : (txid: string) => `https://blockexplorer.one/litecoin/testnet/blockHash/${txid}`,\n [Chains.BitcoinCashMainnet]: (txid: string) => `https://blockchair.com/bitcoin-cash/transaction/${txid}`,\n [Chains.BitcoinCashTestnet]: (txid: string) => `https://blockexplorer.one/bitcoin-cash/testnet/blockHash/${txid}`,\n [Chains.StellarMainnet] : (txid: string) => `https://blockchair.com/stellar/transaction/${txid}`,\n [Chains.StellarTestnet] : (txid: string) => `https://testnet.steexp.com/tx/${txid}`,\n [Chains.ProtonMainnet] : (txid: string, traces?: boolean) => `https://proton.bloks.io/transaction/${txid}${traces ? '?tab=traces' : ''}`,\n [Chains.ProtonTestnet] : (txid: string, traces?: boolean) => `https://proton-test.bloks.io/transaction/${txid}${traces ? '?tab=traces' : ''}`,\n [Chains.PolkadotMainnet] : (txid: string) => `https://polkadot.subscan.io/extrinsic/${txid}`,\n [Chains.BinanceBEP2] : (txid: string) => `https://binance.mintscan.io/txs/${txid}`,\n [Chains.BinanceBEP20] : (txid: string) => `https://bscscan.com/tx/${txid}`,\n [Chains.EosMainnet] : (txid: string) => `https://bloks.io/transaction/${txid}`,\n [Chains.EosTestnet] : (txid: string) => `https://jungle.bloks.io/transaction/${txid}`,\n [Chains.HederaMainnet] : (txid: string) => `https://app.dragonglass.me/transactions/${txid}`,\n [Chains.HederaTestnet] : (txid: string) => `https://testnet.dragonglass.me/transactions/${txid}`,\n [Chains.DogeMainnet] : (txid: string) => `https://blockchair.com/dogecoin/transaction/${txid}`,\n [Chains.CardanoMainnet] : (txid: string) => `https://explorer.cardano.org/en/transaction?id=${txid}`,\n [Chains.AvalancheXChain] : (txid: string) => `https://avascan.info/blockchain/x/tx/${txid}`,\n [Chains.AvalancheCChain] : (txid: string) => `https://snowtrace.io/tx/${txid}`,\n [Chains.PolygonMainnet] : (txid: string) => `https://polygonscan.com/tx/${txid}`,\n [Chains.TerraMainnet] : (txid: string) => `https://terra.stake.id/?#/tx/${txid}`,\n [Chains.RippleMainnet] : (txid: string) => `https://xrpscan.com/tx/${txid}`,\n [Chains.SolanaMainnet] : (txid: string) => `https://explorer.solana.com/tx/${txid}`,\n [Chains.MetalXTestnet] : (txid: string) => `https://metalscan.io/tx/${txid}`,\n [Chains.MetalCTestnet] : (txid: string) => `https://tahoe.metaltrace.io/tx/${txid}`,\n [Chains.MetalCMainnet] : (txid: string) => `https://metalscan.io/tx/${txid}`,\n}\n\nexport const protonExplorerTxUrl = (chain: string, txId: string, traces?: boolean) => chain === 'proton'\n ? explorerLinkByChain[Chains.ProtonMainnet](txId, traces)\n : explorerLinkByChain[Chains.ProtonTestnet](txId, traces)\n\n// Initialize.\nexport const initializeCoins = (protonChain: string): {\n allCoins : Coin[];\n swapCoins : Coin[];\n bridgeCoins : Coin[];\n lendCoins : Coin[];\n borrowCoins : Coin[];\n loanCoins : Coin[];\n allEnabledCoins: Coin[];\n} => {\n const IS_MAINNET = protonChain === 'proton'\n const IS_TESTNET = protonChain === 'proton-test'\n \n const coins: Coin[] = [\n { \n allowSwap: true,\n allowBridge: IS_MAINNET,\n allowLend: true,\n allowBorrow: true,\n name: 'Proton',\n coin: 'XPR',\n xtokenSymbol: 'XPR',\n xtokenPrecision: 4,\n xtokenContract: 'eosio.token',\n wallets: [\n ...(IS_MAINNET ? [\n {\n wallet: 'XPR-ERC20',\n symbol: 'XPR',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 4,\n contract: '0xD7EFB00D12C2C13131FD319336FDF952525DA2AF',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'XPR-BEP20',\n symbol: 'XPR',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 4,\n contract: '0x5DE3939B2F811A61D830E6F52D13B066881412AB',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }\n ]: []),\n ],\n image: 'https://www.proton.org/images/tokens/eosio-tokenXPR.png',\n coingeckoId: 'proton'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: true,\n allowBorrow: true,\n name: 'USD Coin',\n coin: 'USDC',\n xtokenSymbol: 'XUSDC',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [\n {\n wallet: 'USDC',\n symbol: 'USDC',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 6,\n contract: '0xA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'USDC-BEP20',\n symbol: 'USDC',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: '0x8AC76A51CC950D9822D68B83FE1AD97B32CD580D',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'USDC-XLM',\n symbol: 'USDC',\n chain: Chains.StellarMainnet,\n network: Networks.XLM,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n },\n ]: []),\n ...(IS_TESTNET ? [\n {\n wallet: 'USDC',\n symbol: 'USDC',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 6,\n contract: '0xA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n },\n {\n wallet: 'USDC-XLM',\n symbol: 'USDC',\n chain: Chains.StellarTestnet,\n network: Networks.XLM,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n },\n ]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUSDC.png',\n coingeckoId: 'usd-coin'\n },\n { \n allowSwap: true,\n allowBridge: IS_MAINNET,\n allowLend: true,\n allowBorrow: true,\n name: 'Metal DAO',\n coin: 'MTL',\n xtokenSymbol: 'XMT',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'MTL',\n symbol: 'MTL',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 8,\n contract: '0xF433089366899D83A9F26A773D59EC7ECF30355E',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXMT.png',\n coingeckoId: 'metal'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Metal Blockchain',\n coin: 'METAL',\n xtokenSymbol: 'METAL',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_TESTNET ? [{\n wallet: 'METAL',\n symbol: 'METAL',\n chain: Chains.MetalCTestnet,\n network: Networks.EVM,\n precision: 18,\n contract: '',\n provider: Providers.METAL,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_MAINNET ? [\n {\n wallet: 'METAL',\n symbol: 'METAL',\n chain: Chains.MetalCMainnet,\n network: Networks.EVM,\n precision: 18,\n contract: '',\n provider: Providers.METAL,\n hasWithdrawMemo: false\n },\n {\n wallet: 'METAL',\n symbol: 'METAL',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }\n ]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/metal-chain.png',\n coingeckoId: 'metal-blockchain'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: true,\n allowBorrow: true,\n name: 'Bitcoin',\n coin: 'BTC',\n xtokenSymbol: 'XBTC',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BTC',\n symbol: 'BTC',\n chain: Chains.BitcoinMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'BTC',\n symbol: 'BTC',\n chain: Chains.BitcoinTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXBTC.png',\n coingeckoId: 'bitcoin'\n },\n {\n allowSwap: true,\n allowBridge: true,\n allowLend: true,\n allowBorrow: true,\n name: 'Ethereum',\n coin: 'ETH',\n xtokenSymbol: 'XETH',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'ETH',\n symbol: 'ETH',\n chain: Chains.EthereumMainnet,\n network: Networks.Mainnet,\n precision: 18,\n contract: '0x0000000000000000000000000000000000000000',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'ETH',\n symbol: 'ETH',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 18,\n contract: '0x0000000000000000000000000000000000000000',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXETH.png',\n coingeckoId: 'ethereum'\n },\n { \n allowSwap: true,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Loan',\n coin: 'LOAN',\n xtokenSymbol: 'LOAN',\n xtokenPrecision: 4,\n xtokenContract: 'loan.token',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/loan.png',\n coingeckoId: 'proton-loan'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Tether',\n coin: 'USDT',\n xtokenSymbol: 'XUSDT',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'USDT',\n symbol: 'USDT',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 6,\n contract: '0xDAC17F958D2EE523A2206206994597C13D831EC7',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_MAINNET ? [{\n wallet: 'USDT-BEP20',\n symbol: 'USDT',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: '0x55d398326f99059fF775485246999027B3197955',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'USDT',\n symbol: 'USDT',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 6,\n contract: '0xDAC17F958D2EE523A2206206994597C13D831EC7',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUSDT.png',\n coingeckoId: 'tether'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'TrueUSD',\n coin: 'TUSD',\n xtokenSymbol: 'XTUSD',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'TUSD',\n symbol: 'TUSD',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x0000000000085D4780B73119B644AE5ECD22B376',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXTUSD.png',\n coingeckoId: 'true-usd'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Paxos Dollar',\n coin: 'PAX',\n xtokenSymbol: 'XPAX',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'PAX',\n symbol: 'PAX',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x8E870D67F660D95D5BE530380D0EC0BD388289E1',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXPAX.png',\n coingeckoId: 'paxos-standard'\n },\n { \n allowSwap: false,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Paxos Gold',\n coin: 'PAXG',\n xtokenSymbol: 'XPAXG',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'PAXG',\n symbol: 'PAXG',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x45804880DE22913DAFE09F4980848ECE6ECBAF78',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'PAXG',\n symbol: 'PAXG',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 18,\n contract: '0x45804880DE22913DAFE09F4980848ECE6ECBAF78',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXPAXG.png',\n coingeckoId: 'pax-gold'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Storex',\n coin: 'STRX',\n xtokenSymbol: 'STRX',\n xtokenPrecision: 4,\n xtokenContract: 'storex',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/strx.png',\n coingeckoId: ''\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Mint',\n coin: 'MINT',\n xtokenSymbol: 'MINT',\n xtokenPrecision: 4,\n xtokenContract: 'protonmint',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/PMLogo-04.png',\n coingeckoId: ''\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Snipcoins',\n coin: 'SNIPS',\n xtokenSymbol: 'SNIPS',\n xtokenPrecision: 4,\n xtokenContract: 'snipcoins',\n wallets: [],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/snips.png',\n coingeckoId: ''\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Uniswap',\n coin: 'UNI',\n xtokenSymbol: 'XUNI',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'UNI',\n symbol: 'UNI',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x1F9840A85D5AF5BF1D1762F925BDADDC4201F984',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'UNI',\n symbol: 'UNI',\n chain: Chains.EthereumRopsten,\n network: Networks.Ropsten,\n precision: 18,\n contract: '0x1F9840A85D5AF5BF1D1762F925BDADDC4201F984',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUNI.png',\n coingeckoId: 'uniswap'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: '1INCH',\n coin: '1INCH',\n xtokenSymbol: 'XINCH',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: '1INCH',\n symbol: '1INCH',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x111111111117DC0AA78B770FA6A738034120C302',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXINCH.png',\n coingeckoId: '1inch'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Chainlink',\n coin: 'LINK',\n xtokenSymbol: 'XLINK',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'LINK',\n symbol: 'LINK',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 18,\n contract: '0x514910771AF9CA656AF840DFF83E8264ECF986CA',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXLINK.png',\n coingeckoId: 'chainlink'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Litecoin',\n coin: 'LTC',\n xtokenSymbol: 'XLTC',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'LTC',\n symbol: 'LTC',\n chain: Chains.LitecoinMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'LTC',\n symbol: 'LTC',\n chain: Chains.LitecoinTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXLTC.png',\n coingeckoId: 'litecoin'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'Bitcoin Cash',\n coin: 'BCH',\n xtokenSymbol: 'XBCH',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BCH',\n symbol: 'BCH',\n chain: Chains.BitcoinCashMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'BCH',\n symbol: 'BCH',\n chain: Chains.BitcoinCashTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXBCH.png',\n coingeckoId: 'bitcoin-cash'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'LunarCrush',\n coin: 'LUNR',\n xtokenSymbol: 'XLUNR',\n xtokenPrecision: 4,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'LUNR',\n symbol: 'LUNR',\n chain: Chains.EthereumMainnet,\n network: Networks.ERC20,\n precision: 4,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xlunr.png',\n coingeckoId: 'lunr-token'\n },\n { \n allowSwap: false,\n allowBridge: IS_TESTNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Stellar',\n coin: 'XLM',\n xtokenSymbol: 'XXLM',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'XLM',\n symbol: 'XLM',\n chain: Chains.StellarMainnet,\n network: Networks.Mainnet,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'XLM',\n symbol: 'XLM',\n chain: Chains.StellarTestnet,\n network: Networks.Testnet,\n precision: 7,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXXLM.png',\n coingeckoId: 'stellar'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Sense',\n coin: 'SENSE',\n xtokenSymbol: 'XSENSE',\n xtokenPrecision: 4,\n xtokenContract: 'sense',\n wallets: [],\n image: 'https://www.proton.org/images/tokens/senseXSENSE.png',\n coingeckoId: 'sense'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Polkadot',\n coin: 'DOT',\n xtokenSymbol: 'XDOT',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'DOT',\n symbol: 'DOT',\n chain: Chains.PolkadotMainnet,\n network: Networks.Mainnet,\n precision: 10,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXDOT.png',\n coingeckoId: 'polkadot'\n },\n { \n allowSwap: true,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Binance Coin',\n coin: 'BNB',\n xtokenSymbol: 'XBNB',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BNB',\n symbol: 'BNB',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXBNB.png',\n coingeckoId: 'binancecoin'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Binance USD',\n coin: 'BUSD',\n xtokenSymbol: 'XBUSD',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'BUSD-BEP20',\n symbol: 'BUSD',\n chain: Chains.BinanceBEP20,\n network: Networks.BEP20,\n precision: 18,\n contract: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xbusd.png',\n coingeckoId: 'binance-usd'\n },\n { \n allowSwap: true,\n allowBridge: true,\n allowLend: false,\n allowBorrow: false,\n name: 'EOS',\n coin: 'EOS',\n xtokenSymbol: 'XEOS',\n xtokenPrecision: 4,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'EOS',\n symbol: 'EOS',\n chain: Chains.EosMainnet,\n network: Networks.Mainnet,\n precision: 4,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: []),\n ...(IS_TESTNET ? [{\n wallet: 'EOS',\n symbol: 'EOS',\n chain: Chains.EosTestnet,\n network: Networks.Testnet,\n precision: 4,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXEOS.png',\n coingeckoId: 'eos'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: IS_MAINNET,\n allowLend: true,\n allowBorrow: true,\n name: 'Dogecoin',\n coin: 'DOGE',\n xtokenSymbol: 'XDOGE',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'DOGE',\n symbol: 'DOGE',\n chain: Chains.DogeMainnet,\n network: Networks.Mainnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: []),\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXDOGE.png',\n coingeckoId: 'dogecoin'\n },\n { \n allowSwap: IS_MAINNET,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Cardano',\n coin: 'ADA',\n xtokenSymbol: 'XADA',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'ADA',\n symbol: 'ADA',\n chain: Chains.CardanoMainnet,\n network: Networks.Mainnet,\n precision: 6,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXADA.png',\n coingeckoId: 'cardano'\n },\n\n // Adding\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Terra',\n coin: 'LUNA',\n xtokenSymbol: 'XLUNA',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n // ...(IS_MAINNET ? [{\n // wallet: 'LUNA',\n // symbol: 'LUNA',\n // chain: Chains.TerraMainnet,\n // network: Networks.Mainnet,\n // precision: 6,\n // contract: undefined,\n // provider: Providers.FIREBLOCKS,\n // hasWithdrawMemo: true\n // }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXLUNA.png',\n coingeckoId: 'terra-luna'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'TerraUSD',\n coin: 'UST',\n xtokenSymbol: 'XUST',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'UST',\n symbol: 'UST',\n chain: Chains.TerraMainnet,\n network: Networks.Mainnet,\n precision: 6,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXUST.png',\n coingeckoId: 'terrausd'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Solana',\n coin: 'SOL',\n xtokenSymbol: 'XSOL',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'SOL',\n symbol: 'SOL',\n chain: Chains.SolanaMainnet,\n network: Networks.Mainnet,\n precision: 9,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xsol.png',\n coingeckoId: 'solana'\n },\n { \n allowSwap: false,\n allowBridge: IS_MAINNET,\n allowLend: false,\n allowBorrow: false,\n name: 'Ripple',\n coin: 'XRP',\n xtokenSymbol: 'XXRP',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'XRP',\n symbol: 'XRP',\n chain: Chains.RippleMainnet,\n network: Networks.Mainnet,\n precision: 6,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xxrp.png',\n coingeckoId: 'ripple'\n },\n\n // Future\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Avalanche',\n coin: 'AVAX',\n xtokenSymbol: 'XAVAX',\n xtokenPrecision: 9,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [\n {\n wallet: 'AVAX',\n symbol: 'AVAX',\n chain: Chains.AvalancheCChain,\n network: Networks.Mainnet,\n precision: 9,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }\n ]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXAVAX.png',\n coingeckoId: 'avalanche-2'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Polygon',\n coin: 'MATIC',\n xtokenSymbol: 'XMATIC',\n xtokenPrecision: 8,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_MAINNET ? [{\n wallet: 'MATIC',\n symbol: 'MATIC',\n chain: Chains.PolygonMainnet,\n network: Networks.Mainnet,\n precision: 18,\n contract: '0x0000000000000000000000000000000000000000',\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: false\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXMATIC.png',\n coingeckoId: 'matic-network'\n },\n { \n allowSwap: false,\n allowBridge: false,\n allowLend: false,\n allowBorrow: false,\n name: 'Metal Dollar',\n coin: 'XMD',\n xtokenSymbol: 'XMD',\n xtokenPrecision: 6,\n xtokenContract: 'xmd.token',\n wallets: [],\n image: 'https://github.com/eoscafe/eos-airdrops/blob/master/logos/xmd.png?raw=true',\n coingeckoId: ''\n },\n { \n allowSwap: false,\n allowBridge: IS_TESTNET,\n allowLend: false,\n allowBorrow: false,\n name: 'HBAR',\n coin: 'HBAR',\n xtokenSymbol: 'XHBAR',\n xtokenPrecision: 6,\n xtokenContract: 'xtokens',\n wallets: [\n ...(IS_TESTNET ? [{\n wallet: 'HBAR',\n symbol: 'HBAR',\n chain: Chains.HederaTestnet,\n network: Networks.Testnet,\n precision: 8,\n contract: undefined,\n provider: Providers.FIREBLOCKS,\n hasWithdrawMemo: true\n }]: [])\n ],\n image: 'https://www.proton.org/images/tokens/xtokensXHBAR.png',\n coingeckoId: 'hedera-hashgraph'\n }\n ]\n\n // Validation\n const walletWithDuplicateChains = coins.find(coin => {\n const chains = coin.wallets.map(wallet => wallet.chain)\n return new Set(chains).size !== chains.length\n })\n if (walletWithDuplicateChains) {\n throw new Error(`Coin ${walletWithDuplicateChains.coin} has duplicate chains in wallet`)\n }\n\n return {\n allCoins: coins,\n swapCoins: coins.filter(coin => coin.allowSwap),\n bridgeCoins: coins.filter(coin => coin.allowBridge),\n lendCoins: coins.filter(coin => coin.allowLend),\n borrowCoins: coins.filter(coin => coin.allowBorrow),\n loanCoins: coins.filter(coin => coin.allowLend || coin.allowBorrow),\n allEnabledCoins: coins.filter(coin => coin.allowSwap || coin.allowBridge || coin.xtokenSymbol === 'XMD')\n }\n}","import * as z from 'zod'\n\nexport const accountParser = z.string().regex(/^[.1-5a-z]{0,12}[.1-5a-j]?$/)\n\nexport const authorizationParser = z.object({\n actor : accountParser,\n permission: z.string()\n})\nexport type Authorization = z.infer<typeof authorizationParser>\n\nexport const authorizationsParser = z.array(authorizationParser).min(1)\nexport type Authorizations = z.infer<typeof authorizationsParser>\n\nexport const ExtendedAssetParser = z.object({\n quantity: z.string(),\n contract: accountParser\n})\nexport type ExtendedAsset = z.infer<typeof ExtendedAssetParser>","import * as z from 'zod';\nimport { accountParser, authorizationsParser } from './base'\n\nconst actionParser = z.object({\n account: z.string(),\n name: z.string(),\n authorization: z.array(\n z.object({\n actor: z.string(),\n permission: z.string(),\n })\n ),\n data: z.any(),\n hex_data: z.string().optional()\n})\n\nconst transactionExtensionsParser = z.array(z.number().or(z.string())).optional()\n\nconst rawTransactionParser = z.object({\n expiration : z.string(),\n ref_block_num : z.number(),\n ref_block_prefix : z.number(),\n max_net_usage_words : z.number(),\n max_cpu_usage_ms : z.number(),\n delay_sec : z.number(),\n context_free_actions : z.array(actionParser),\n transaction_extensions: z.array(transactionExtensionsParser)\n})\n\nexport const baseActionParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => z.object({\n account: contract === '*' ? accountParser : z.literal(contract),\n name: z.literal(action),\n data: z.object(data),\n authorization: authorizationsParser\n})\n\nexport const baseActionSerializedParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => z.object({\n account: contract === '*' ? accountParser : z.literal(contract),\n name: z.literal(action),\n data: z.string().or(z.object(data)),\n authorization: authorizationsParser\n})\n\nexport const webauthActionParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => z.object({\n account: z.literal('webauthn'),\n name: z.literal('exec'),\n data: z.object({\n account: accountParser,\n key: z.object({\n key: z.array(z.string().or(z.object({\n modulus: z.string(),\n exponent: z.string()\n }))),\n user_presence: z.number(),\n rpid: z.string()\n }),\n nonce: z.number(),\n permissions: authorizationsParser,\n signature: z.object({\n auth_data: z.string(),\n client_json: z.string(),\n signature: z.string()\n }),\n trx: rawTransactionParser.merge(\n z.object({\n actions: z.array(\n baseActionSerializedParser(contract, action, data)\n ).length(1)\n })\n )\n }),\n authorization: authorizationsParser\n})\n\nexport const singleActionTransactionParser = <T extends z.ZodRawShape>(contract: string, action: string, data: T) => {\n const baseAction = baseActionParser(contract, action, data)\n const webauthAction = webauthActionParser(contract, action, data)\n\n return rawTransactionParser.merge(z.object({\n actions: z.array(baseAction.or(webauthAction)).length(1)\n }))\n}","import * as z from 'zod'\n\nexport enum Type {\n RECEIVE = 'receive',\n SEND = 'send'\n}\n\nexport const depositBodyParser = z.object({\n id : z.string(), // \"0x000010203121388fac991\"\n type : z.nativeEnum(Type), // \"receive\" or \"send\"\n hash : z.string(), // \"0x000010203121388fac991\"\n coin : z.string(), // \"ETH\" or \"XPR\"\n wallet : z.string(), // \"ETH-ROPSTEN\" or \"XPR-MAINNET\"\n network : z.string(), // \"erc29\"\n})\nexport type DepositBody = z.infer<typeof depositBodyParser>\n\nexport const transactionParser = z.object({\n id : z.string(), // \"2629304740076324677\"\n wallet : z.string(), // \"ETH\"\n value : z.number(), // 10000000000000000\n valueString : z.string(), // \"10000000000000000\"\n address : z.string(), // \"0x0000\"\n type : z.nativeEnum(Type), // \"receive\" or \"send\"\n state : z.string(), // \"confirmed\"\n confirmations : z.number(), // 1\n hash : z.string(), // \"b4781422be95fee8fbbf720e3e0fa9705ae834474ef25f5724cdd0f5d23211ed\"\n blockHash : z.string().optional().nullable(), // \"000000000000000000089b270eb99f75107d6a9cde37ec944cb80a2998df7b43\"\n blockHeight : z.number().optional().nullable(), // 643159\n})\nexport type Transaction = z.infer<typeof transactionParser>","import * as z from 'zod';\nimport { baseActionParser, singleActionTransactionParser } from './actions'\nimport { authorizationParser } from './base'\nimport { WRAP_CONTRACT, WRAP_AUTH_ACTION } from '../constants'\n\nexport const createAbstractAuthParser = (contract: string, action: string, data: z.ZodRawShape) => {\n return z.object({\n signer : authorizationParser,\n signatures : z.array(z.string()).length(1),\n transaction: singleActionTransactionParser(contract, action, data)\n })\n}\n\nconst generateAuthData = {\n time: z.string(),\n protonAccount: z.string()\n}\nconst generateAuthActionsBaseParser = baseActionParser(WRAP_CONTRACT, WRAP_AUTH_ACTION, generateAuthData)\nexport type GenerateAuthBaseAction = z.infer<typeof generateAuthActionsBaseParser>\n\nexport const generateAuthParser = createAbstractAuthParser(WRAP_CONTRACT, WRAP_AUTH_ACTION, generateAuthData)\nexport type GenerateAuth = z.infer<typeof generateAuthParser>","import { Coin, CoinWallet, initializeCoins, Wallet } from './coins'\n\nexport const WRAP_CONTRACT = 'proton.wrap'\nexport const WRAP_AUTH_ACTION = 'generateauth'\nexport const FEE_FACTOR = 10000\n\nexport const initializeConstants = (chain: string) => {\n const { swapCoins, bridgeCoins, allEnabledCoins, allCoins, lendCoins, borrowCoins, loanCoins } = initializeCoins(chain)\n\n const constants = {\n SWAP_CONTRACT: 'proton.swaps',\n DEX_CONTRACT: 'dex', \n FEE_FACTOR,\n GOOGLE_MAPS_KEY: 'AIzaSyDb2_CrK032kSIqBXbkdwmaLKWELl0SxVs',\n SWAP_URL: chain === 'proton'\n ? 'https://otc.protonswap.com'\n : 'https://otc-test.protonswap.com',\n WRAP_SERVER_URL: chain === 'proton'\n ? 'https://www.api.bloks.io/proton-wrap-public2'\n : 'https://www.api.bloks.io/proton-wrap-testnet-public2',\n WRAP_CONTRACT,\n WRAP_ACTIONS: {\n SAVE_ADDRESS: 'saveaddress2',\n DELETE_ADDRESS: 'deladdress2',\n WRAP_START: 'wrapstart2',\n WRAP_FINISH: 'wrapfinish2',\n WRAP_PROCESS: 'wrapprocess2',\n WRAP_SET_CONF: 'wrapsetconf2',\n },\n WRAP_TABLES: {\n ADDRESSES: 'addresses2',\n WRAPS: 'wraps2'\n },\n ADDRESSES_INDEXES: {\n BY_ACCOUNT: 2,\n BY_ADDR_HASH: 3\n },\n WRAPS_INDEXES: {\n BY_ACCOUNT: 2,\n BY_STATUS: 3,\n BY_WRAP_HASH: 4\n },\n WRAP_PROCESS_TIMER: 5000,\n\n FARM_CONTRACT: 'yield.farms',\n\n WEBHOOK_PERMISSION: 'webhook',\n PUBLIC_PERMISSION: 'public',\n LIGHT_PERMISSION: 'light',\n WRAP_AUTH_ACTION: WRAP_AUTH_ACTION,\n\n METAL_ENDPOINT: chain === 'proton'\n ? 'https://cirrus.metalpay.com'\n : 'https://cirrus-dev.metalpay.com',\n\n METAL_PROTON_ENDPOINT: chain === 'proton'\n ? 'https://api.protonchain.com'\n : 'https://api-dev.protonchain.com',\n\n METAL_DEX_HTTP_ENDPOINT: chain === 'proton'\n ? 'https://metal-dexdb.global.binfra.one/dex'\n : 'https://metallicus-dbapi-dev01.binfra.one/dex',\n\n METAL_DEX_WS_ENDPOINT: chain === 'proton'\n ? 'wss://metal-dexdb.global.binfra.one/dexws'\n : 'wss://metallicus-dbapi-dev01.binfra.one/dexws',\n\n PROTON_ENDPOINTS: chain === 'proton'\n ? ['https://metal-proton-rpc.global.binfra.one', 'https://proton.greymass.com', 'https://proton.eoscafeblock.com', 'https://proton.cryptolions.io', 'https://proton.eosusa.news']\n : ['https://metal-protontest-rpc.global.binfra.one', 'https://testnet.protonchain.com'],\n\n CHAIN_ID: chain === 'proton'\n ? '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0'\n : '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd',\n\n DEX_PROCESS_SIZE: 30,\n DEX_SLTPPROCESS_SIZE: 10,\n MAX_PRICE: \"9223372036854775806\",\n MAX_ITEMS_PER_PAGE_DESKTOP: 25,\n MIN_PRICE: 1,\n DEFAULT_DEX_SYMBOL: chain === 'proton'\n ? 'XPR_XMD'\n : 'XPR_XUSDC',\n\n CHAIN: chain,\n\n SWAP_COINS: swapCoins,\n BRIDGE_COINS: bridgeCoins,\n ALL_ENABLED_COINS: allEnabledCoins,\n LEND_COINS: lendCoins,\n BORROW_COINS: borrowCoins,\n LOAN_COINS: loanCoins,\n ALL_COINS: allCoins,\n\n findBridgeCoinWalletByXtokenAndChain (xtokenSymbol: string, chain: string): CoinWallet | undefined {\n const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin: Coin) => bridgeCoin.xtokenSymbol === xtokenSymbol)\n if (!bridgeCoin) return undefined\n const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet: Wallet) => bridgeWallet.chain === chain)\n if (!bridgeWallet) return undefined\n\n return {\n ...bridgeCoin,\n ...bridgeWallet\n }\n },\n\n findBridgeCoinWallet (coin: string, wallet: string): CoinWallet | undefined {\n const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin: Coin) => bridgeCoin.coin === coin)\n if (!bridgeCoin) return undefined\n\n const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet: Wallet) => bridgeWallet.wallet === wallet)\n if (!bridgeWallet) return undefined\n\n return {\n ...bridgeCoin,\n ...bridgeWallet\n }\n },\n\n findBridgeCoinNetwork (coin: string, network: string): CoinWallet | undefined {\n const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin: Coin) => bridgeCoin.coin === coin)\n if (!bridgeCoin) return undefined\n const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet: Wallet) => bridgeWallet.network === network)\n if (!bridgeWallet) return undefined\n\n return {\n ...bridgeCoin,\n ...bridgeWallet\n }\n }\n }\n\n return constants\n}","import * as z from 'zod';\nimport { accountParser } from './base'\nimport { generateAuthParser } from './auth'\n\nexport const addressParser = z.object({\n index : z.number(),\n account : accountParser,\n chain : z.string(),\n address : z.string(),\n address_hash: z.string(),\n})\nexport type Address = z.infer<typeof addressParser>\n\nexport const generateAddressBodyParser = z.object({\n coin: z.string(),\n wallet: z.string(),\n}).merge(generateAuthParser)\nexport type GenerateAddressBody = z.infer<typeof generateAddressBodyParser>\n\nexport const generateAddressResponse = z.object({\n id : z.string(), // \"2448834505708930950\",\n address: z.string(), // \"0x617C03C1E2Bf81C062A4CEfbE312c070E1d86d18\",\n coin : z.string(), // \"ETH\",\n wallet : z.string(), // \"ETH\",\n memo : z.string().optional()\n})\nexport type GenerateAddressResponse = z.infer<typeof generateAddressResponse>\n","import * as z from 'zod'\n\nexport interface CurrencyStat {\n supply : string;\n max_supply: string;\n issuer : string;\n}\nexport interface CurrencyStats {\n [key: string]: CurrencyStat;\n}\n\nexport const rateParser = z.object({\n counterCurrency : z.string(),\n price : z.number(),\n priceChangePercent: z.number(),\n marketCap : z.number(),\n volume : z.number(),\n timestamp : z.number()\n})\nexport type Rate = z.infer<typeof rateParser>\n\nexport const exchangeRateParser = z.object({\n contract: z.string(),\n symbol : z.string(),\n rank : z.number(),\n rates : z.array(rateParser)\n})\nexport type ExchangeRate = z.infer<typeof exchangeRateParser>\n\nexport const exchangeRatesParser = z.array(exchangeRateParser)\nexport type ExchangeRates = z.infer<typeof exchangeRatesParser>\n\nexport const bloksRatesParser = z.array(z.object({\n contract: z.string(),\n symbol : z.string(),\n rank : z.number(),\n rates : z.array(rateParser)\n}))\n\nexport type BloksRate = {\n key: string;\n symbol: string;\n account: string;\n chain: string;\n supply: {\n circulating: number;\n max: number;\n precision: number;\n last_update: string;\n };\n metadata: {\n name: string;\n website: string;\n logo: string;\n created_at: string;\n desc: string;\n };\n pairs: [\n {\n id: string;\n pair_base: string;\n pair_quote: string;\n exchange: string;\n quote:{\n price: number\n volume_base_24h: number\n volume_quote_24h: number\n market_cap: number\n price_usd: number\n volume_usd_24h: number\n },\n percentage_daily_volume: number\n },\n ];\n price: {\n quotes: {\n [key: string]: number\n },\n usd: number;\n volume_base_24h: number;\n volume_usd_24h: number;\n marketcap_usd: number;\n change_24hr: number;\n },\n rank: number;\n chain_rank: number;\n}\n\nexport type BloksRates = BloksRate[]","import * as z from 'zod'\nimport { ExtendedAssetParser } from './base'\n\nexport enum Status {\n PENDING = 'pending',\n SUCCESS = 'success',\n FAIL = 'fail',\n PROCESSING = 'processing'\n}\n\nexport const wrapStartParser = z.object({\n balance : ExtendedAssetParser,\n id : z.string(),\n txid : z.string(),\n chain : z.string(),\n deposit_address: z.string(),\n confirmations : z.number()\n})\n\nexport type WrapStart = z.infer<typeof wrapStartParser>\n\nexport const wrapSetConfParser = z.object({\n wrap_hash : z.string(),\n confirmations: z.number()\n})\nexport type WrapSetConf = z.infer<typeof wrapSetConfParser>\n\nexport const wrapParser = z.object({\n index : z.number(),\n proton_account : z.string(),\n balance : ExtendedAssetParser,\n id : z.string(),\n txid : z.string(),\n chain : z.string(),\n deposit_address: z.string(),\n status : z.nativeEnum(Status),\n finish_txid : z.string(),\n wrap_hash : z.string(),\n confirmations : z.number(),\n})\nexport type Wrap = z.infer<typeof wrapParser>","import * as z from 'zod'\n\nexport const otcOrderResponseParser = z.object({\n success : z.boolean(),\n transaction_id: z.string(),\n errormsg : z.string().optional()\n})\nexport type OtcOrderResponse = z.infer<typeof otcOrderResponseParser>\n\nexport const otcQuoteBodyParser = z.object({\n baseAmount : z.number(),\n baseSymbol : z.string(),\n quoteSymbol: z.string()\n})\nexport type OtcQuoteBody = z.infer<typeof otcQuoteBodyParser>\n\nexport const otcQuoteResponseParser = z.object({\n success : z.boolean(),\n token : z.string(),\n qty : z.number(),\n errormsg: z.string().optional()\n})\nexport type OtcQuoteResponse = z.infer<typeof otcQuoteResponseParser>","import * as z from 'zod'\nimport { singleActionTransactionParser } from './actions'\nimport { authorizationParser } from './base'\nimport { WRAP_CONTRACT } from '../constants'\nimport { baseActionParser } from './actions'\n\nconst withdrawData = {\n from: z.string().refine((val) => val !== WRAP_CONTRACT, {\n message: `${WRAP_CONTRACT} must be receiver`,\n }),\n to: z.literal(WRAP_CONTRACT),\n quantity: z.string(),\n memo: z.string()\n}\nconst withdrawBodyBaseAction = baseActionParser('*', 'transfer', withdrawData)\nexport type WithdrawBodyBaseAction = z.infer<typeof withdrawBodyBaseAction>\n\nexport const withdrawBodyParser = z.object({\n signer : authorizationParser,\n signatures : z.array(z.string()).length(1),\n transaction: singleActionTransactionParser('*', 'transfer', withdrawData),\n quoteId: z.string(),\n provider: z.string().optional()\n})\nexport type WithdrawBody = z.infer<typeof withdrawBodyParser>\n\nexport const withdrawMetalResponseParser = z.object({\n success: z.boolean(),\n id : z.string(),\n})\nexport type WithdrawMetalResponse = z.infer<typeof withdrawMetalResponseParser>\n\nexport const withdrawalFeeQuoteParser = z.object({\n quoteId : z.string(),\n estimatedFee: z.string(),\n currency : z.string(),\n network : z.string(),\n})\nexport type WithdrawalFeeQuote = z.infer<typeof withdrawalFeeQuoteParser>","import * as z from 'zod'\n\nexport const withdrawHistoryMetalSwapParser = z.object({\n id : z.string(),\n status : z.string(),\n amount : z.string(),\n currency : z.string(),\n network : z.string(),\n created : z.string(),\n withdrawalAddress: z.string(),\n withdrawalHash : z.string().optional()\n})\nexport type WithdrawHistoryMetalSwap = z.infer<typeof withdrawHistoryMetalSwapParser>\n\nexport const withdrawHistoryMetalResponseParser = z.object({\n swaps : z.array(withdrawHistoryMetalSwapParser),\n page : z.number(),\n pageSize : z.number(),\n numberOfElements: z.number(),\n totalPages : z.number(),\n totalElements : z.number()\n})\nexport type WithdrawHistoryMetalResponse = z.infer<typeof withdrawHistoryMetalResponseParser>\n","import * as z from 'zod';\n\nexport const ohlcvParser = z.object({\n time: z.number(),\n open: z.number(),\n high: z.number(),\n low: z.number(),\n close: z.number(),\n volume: z.number(),\n volume_bid: z.number(),\n count: z.number()\n})\nexport type OHLCV = z.infer<typeof ohlcvParser>\n\nexport const getOhlcvParser = z.object({\n interval: z.string(),\n from: z.string(),\n to: z.string(),\n symbol: z.string(),\n limit: z.string().default(\"500\").refine(n => +n <= 1000, 'Max limit is 1000'),\n})\nexport type GetOHLCV = z.infer<typeof getOhlcvParser>\n\nexport const getOhlcvResponseParser = z.object({\n sync: z.number(),\n data: z.array(ohlcvParser)\n})\nexport type GetOHLCVResponse = z.infer<typeof getOhlcvResponseParser>\n\nexport const orderHistoryParser = z.object({\n seq: z.number(),\n block_num: z.number(),\n block_time: z.string(),\n order_id: z.number(),\n market_id: z.number(),\n quantity_init: z.number().optional(),\n quantity_curr: z.number(),\n price: z.number(),\n account_name: z.string(),\n order_side: z.number(),\n order_type: z.number(),\n trigger_price: z.number(),\n fill_type: z.number(),\n status: z.string(),\n quantity_change: z.number(),\n trx_id: z.string(),\n})\nexport type OrderHistory = z.infer<typeof orderHistoryParser>\n\nexport const getOrderHistoryParser = z.object({\n account: z.string(),\n symbol: z.string().optional(),\n offset: z.string().default(\"0\"),\n limit: z.string().default(\"100\").refine(n => +n <= 250, 'Max limit is 250'),\n})\nexport type GetOrderHistory = z.infer<typeof getOrderHistoryParser>\n\nexport const getOrderHistoryResponseParser = z.object({\n sync: z.number(),\n count: z.number(),\n data: z.array(orderHistoryParser)\n})\nexport type GetOrderHistoryResponse = z.infer<typeof getOrderHistoryResponseParser>\n\nexport const depthParser = z.object({\n level: z.number(),\n ask: z.number(),\n bid: z.number(),\n count: z.number(),\n})\nexport type Depth = z.infer<typeof depthParser>\n\nexport const getDepthParser = z.object({\n symbol: z.string(),\n step: z.string(),\n limit: z.string().default(\"100\").refine(n => +n <= 250, 'Max limit is 250'),\n})\nexport type GetDepth = z.infer<typeof getDepthParser>\n\nexport const getDepthResponseParser = z.object({\n sync: z.number(),\n data: z.object({\n bids: z.array(depthParser),\n asks: z.array(depthParser),\n })\n})\nexport type GetDepthResponse = z.infer<typeof getDepthResponseParser>\n\nexport const dailyParser = z.object({\n market_id: z.number(),\n first: z.number(),\n last: z.number(),\n bid: z.number(),\n ask: z.number(),\n change_percentage_24hr: z.number()\n})\nexport type Daily = z.infer<typeof dailyParser>\n\nexport const getDailyResponseParser = z.object({\n sync: z.number(),\n data: z.array(dailyParser)\n})\nexport type GetDailyResponseParser = z.infer<typeof getDailyResponseParser>\n\nexport const marketParser = z.object({\n market_id: z.number(),\n symbol: z.string(),\n status_code: z.number(),\n type: z.string(),\n maker_fee: z.number(),\n taker_fee: z.number(),\n order_min: z.number(),\n bid_token: z.object({\n code: z.string(),\n precision: z.number(),\n contract: z.string(),\n multiplier: z.number()\n }),\n ask_token: z.object({\n code: z.string(),\n precision: z.number(),\n contract: z.string(),\n multiplier: z.number()\n })\n})\nexport type Market = z.infer<typeof marketParser>\n\nexport const getMarketsResponseParser = z.object({\n sync: z.number(),\n data: z.array(marketParser)\n})\nexport type GetMarketsResponse = z.infer<typeof getMarketsResponseParser>\n\nexport const tradeParser = z.object({\n block_num: z.number(),\n block_time: z.string(),\n trade_id: z.number(),\n market_id: z.number(),\n price: z.number(),\n bid_user: z.string(),\n bid_user_order_id: z.number(),\n bid_total: z.number(),\n bid_amount: z.number(),\n bid_fee: z.number(),\n ask_user: z.string(),\n ask_user_order_id: z.number(),\n ask_total: z.number(),\n ask_amount: z.number(),\n ask_fee: z.number(),\n order_side: z.number(),\n trx_id: z.string(),\n})\nexport type Trade = z.infer<typeof tradeParser>\n\nexport const getTradesParser = z.object({\n symbol: z.string(),\n offset: z.string().default(\"0\"),\n limit: z.string().default(\"100\").refine(n => +n <= 250, 'Max limit is 250'),\n})\nexport type GetTrades = z.infer<typeof getTradesParser>\n\nexport const getTradesResponseParser = z.object({\n sync: z.number(),\n data: z.array(tradeParser)\n})\nexport type GetTradesResponseParser = z.infer<typeof getTradesResponseParser>\n\nexport const syncParser = z.object({\n sourceid: z.number(),\n block_num: z.string(),\n block_time: z.string(),\n irreversible: z.string(),\n is_master: z.number(),\n last_updated: z.string(),\n})\nexport type Sync = z.infer<typeof syncParser>\n\nexport const getSyncResponseParser = z.object({\n dbSecondsBehind: z.number(),\n chronicleSecondsBehind: z.number(),\n maxSecondsBehind: z.number()\n})\nexport type GetSyncResponse = z.infer<typeof getSyncResponseParser>\n\nexport enum orderType { ORDERBOOK = 0, LIMIT = 1, STOPLOSS = 2, TAKEPROFIT = 3 }\n\nexport enum orderSide { INVALID = 0, BUY = 1, SELL = 2 }\n\nexport enum fillType { GTC = 0, IOC = 1, POST_ONLY = 2 }\n\nexport enum logStatus {\n CREATE = \"create\",\n UPDATE = \"update\",\n TRANSFER = \"transfer\",\n CANCEL = \"cancel\",\n DELETE = \"delete\",\n}\n\nexport interface CurrentOrder {\n order_id: number\n market_id: number\n quantity_init: number\n quantity_curr: number\n price: number\n account_name: string\n order_side: number\n order_type: number\n status: string\n created_at: string\n updated_at: string\n}\n\nexport interface DbMarket {\n market_id: number\n order_min: number\n status_code: number\n maker_fee: number\n taker_fee: number\n bid_token_c: string\n bid_token_s: string\n bid_token_m: number\n ask_token_c: string\n ask_token_s: string\n ask_token_m: number\n created_at: string\n updated_at: string\n}\n\nexport enum ITopics {\n TRADES = \"TRADES\",\n ORDERS = \"ORDERS\",\n}\n \nexport const TOPICS = {\n [ITopics.TRADES]: {\n topic: ITopics.TRADES,\n },\n [ITopics.ORDERS]: {\n topic: ITopics.ORDERS,\n }\n}","import * as z from 'zod';\nimport { generateAuthParser } from \"./auth\"\n\nexport const loginAccountParamsV3Parser = z.object({\n email: z.string().optional(),\n verificationCode: z.string().optional(),\n}).merge(generateAuthParser)\n \nexport type LoginAccountParamsV3 = z.infer<typeof loginAccountParamsV3Parser>","import cloneDeep from 'lodash.clonedeep'\n\nexport class INode <T> {\n data: T = {} as T\n constructor (public key: string, data?: T) {\n if (data) {\n this.data = data\n }\n }\n}\n\nexport class ILink <T> {\n data: T = {} as T\n constructor (public from: INode<T>, public to: INode<T>, data?: T) {\n if (data) {\n this.data = data\n }\n }\n}\n\nexport class Graph <T> {\n nodes: INode<T>[] = []\n links: ILink<T>[] = []\n lastPathFound: INode<T>[] = []\n\n isEquals = (a: INode<T>, b: INode<T>) => a.key === b.key\n\n addNode (k: string, v?: T): void {\n const node = this.findNode(k)\n if (!node) {\n this.nodes.push(new INode(k, v))\n }\n }\n\n addNodes (...nodes: (string | [string, T?])[]): void {\n nodes.forEach(node => typeof node === \"string\" ? this.addNode(node) : this.addNode(node[0], node[1]))\n }\n\n findNode (k: string): INode<T> | undefined {\n const inode = new INode<T>(k)\n return this.nodes.find(node => this.isEquals(node, inode))\n }\n\n findNodes (...keys: string[]): (INode<T> | undefined)[] {\n return keys.map(k => this.findNode(k))\n }\n\n requireFindNodes (...keys: string[]): INode<T>[] {\n const nodes = this.findNodes(...keys)\n if (nodes.some(n => n === undefined)) {\n throw new Error('One of the nodes does not exist')\n }\n return nodes as INode<T>[]\n }\n\n addLink (nodeA: string, nodeB: string, data?: T): void {\n const [inodeA, inodeB] = this.requireFindNodes(nodeA, nodeB)\n this.links.push(new ILink<T>(inodeA, inodeB, data))\n }\n\n addLinks (...links: [nodeA: string, nodeB: string, data?: T][]): void {\n links.forEach(link => this.addLink(...link))\n }\n \n /** \n * Get all nodes linked \n * to from `node`.\n */\n findLinkedNodes (node: INode<T>) {\n return this.links.reduce((acc, link) => {\n if (this.isEquals(link.from, node)) {\n acc.push(link.to)\n }\n return acc;\n }, [] as INode<T>[]);\n }\n\n findAllPaths(from: string, to: string) {\n const allPaths: INode<T>[][] = []\n\n const [fromNode, toNode] = this.requireFindNodes(from, to)\n\n const path: INode<T>[] = [fromNode]\n let seen = new Set()\n\n const stuck = (x: INode<T>) => {\n if (this.isEquals(x, toNode)) {\n return false\n }\n\n for (const y of this.findLinkedNodes(x)) {\n if (!seen.has(y.key)) {\n seen.add(y.key)\n if (!stuck(y)) {\n return false\n }\n }\n }\n\n return true\n }\n\n const search = (x: INode<T>) => {\n if (this.isEquals(x, toNode)) {\n allPaths.push(cloneDeep(path))\n return\n }\n seen = new Set(path.map(p => p.key))\n if (stuck(x)) {\n return\n }\n\n for (const y of this.findLinkedNodes(x)) {\n if (!path.includes(y)) {\n path.push(y)\n search(y)\n path.pop()\n }\n }\n }\n\n search(fromNode)\n\n return allPaths\n }\n}","import { BigNumber as BN } from 'bignumber.js'\nimport { FEE_FACTOR } from './constants'\n\n/**\n * XPR<>XUSDT (XPR -> XUSDT)\n *\n * pool1 * pool2\n * term = pool2 - --------------\n * pool1 + swap\n *\n * result = term - (term * fee)\n */\nexport const compute_transfer = (pool1: BN.Instance, pool2: BN.Instance, swap: BN.Instance, exchange_fee: number, precision: number): BN => {\n const term1 = pool2\n const term2over = pool1.times(pool2)\n const term2under = pool1.plus(swap)\n const term2 = term2over.div(term2under).integerValue(BN.ROUND_DOWN)\n const term = term1.minus(term2)\n const fee = new BN(exchange_fee).div(FEE_FACTOR)\n const result = term.minus(term.times(fee))\n \n return result.integerValue(BN.ROUND_DOWN).shiftedBy(-precision)\n}\n\nexport const compute_transfer_curve = (\n reserve_in: number,\n reserve_out: number,\n amount_in: number,\n exchange_fee: number,\n precision: number,\n amplifier: number\n): BN => {\n if (amplifier === 0) {\n return compute_transfer(new BN(reserve_in), new BN(reserve_out), new BN(amount_in), exchange_fee, precision)\n }\n\n const MAX_ITERATIONS = 10\n\n const sum = reserve_in + reserve_out\n let D = sum;\n let D_prev = 0\n\n const F = (v: number) => {\n return (v >= 0 ? 1 : -1) * Math.floor(Math.abs(v));\n }\n\n let i = MAX_ITERATIONS\n while (D != D_prev && i--) {\n const prod1 = F((F((D * D) / (reserve_in * 2)) * D) / (reserve_out * 2));\n D_prev = D\n D = F((2 * D * ((amplifier * sum) + prod1)) / ((2 * amplifier - 1) * D + 3 * prod1));\n }\n\n const b = ((reserve_in + amount_in) + F(D / (amplifier * 2))) - D;\n\n const c = F(F((D * D) / ((reserve_in + amount_in) * 2)) * D / (amplifier * 4));\n\n let x = D, x_prev = 0;\n i = MAX_ITERATIONS;\n while ( x != x_prev && i--) {\n x_prev = F(x);\n x = +new BN(x * x + c).div(2 * x + b).toFixed(0, BN.ROUND_DOWN)\n }\n\n if (reserve_out <= x) {\n throw new Error(\"curve: insufficient reserve out\")\n }\n\n // Amount out + Fee + 1\n const amount_out_with_fee = new BN(reserve_out - x);\n\n // Fee + 1\n // +1 covers small precision issues\n const fee = amount_out_with_fee.times(exchange_fee).div(FEE_FACTOR).plus(1).toFixed(0, BN.ROUND_DOWN);\n \n // Amount out\n const amount_out = amount_out_with_fee.minus(fee)\n\n return amount_out.integerValue(BN.ROUND_DOWN).shiftedBy(-precision)\n}\n\nexport const compute_liquidity = (amount_lt: BN.Instance, pool: BN.Instance, lt_supply: BN.Instance, precision: number): number => {\n const over = amount_lt.times(pool)\n const under = lt_supply\n const result = over.div(under).integerValue(BN.ROUND_DOWN)\n\n return +(result.shiftedBy(-precision).toFixed(precision, BN.ROUND_DOWN))\n}\n\nexport const isInputInvalid = (data: string, value: string | number, pool: { xtokenPrecision: number }): boolean => {\n value = String(value)\n \n const isBackspace = data === null\n const isNumber = !/[0-9]|\\./.test(data)\n const isDoubleDot = data === '.' && value.indexOf('.') !== value.length - 1\n const isPrecisionTooHigh = value && value.indexOf('.') !== -1 && value.split('.')[1].length > pool.xtokenPrecision\n const isInvalid = !isBackspace && Boolean(isNumber || isDoubleDot || isPrecisionTooHigh)\n\n return isInvalid\n}\n\nexport const applyDiscountToFee = (fee: number, staked: number): number => {\n if (staked >= 10000000) {\n return fee * 0\n } else if (staked >= 1000000) {\n return fee * 0.33\n } else if (staked >= 100000) {\n return fee * 0.66\n } else {\n return fee\n }\n}","interface PartialCoin {\n xtokenSymbol: string;\n xtokenPrecision: number;\n xtokenContract: string;\n}\n\nexport const isSameToken = (token1: PartialCoin, token2: PartialCoin) => {\n return token1.xtokenSymbol === token2.xtokenSymbol &&\n token1.xtokenPrecision === token2.xtokenPrecision &&\n token1.xtokenContract === token2.xtokenContract\n}\n\nexport const median = (numbers: number[]) => {\n const sorted = numbers.slice().sort((a, b) => a - b);\n const middle = Math.floor(sorted.length / 2);\n\n if (sorted.length % 2 === 0) {\n return (sorted[middle - 1] + sorted[middle]) / 2;\n }\n\n return sorted[middle];\n}\n"],"names":["Chains","Networks","Providers","similarChains","EthereumMainnet","BinanceBEP20","explorerLinkByChain","BitcoinMainnet","txid","BitcoinTestnet","EthereumRopsten","LitecoinMainnet","LitecoinTestnet","BitcoinCashMainnet","BitcoinCashTestnet","StellarMainnet","StellarTestnet","ProtonMainnet","traces","ProtonTestnet","PolkadotMainnet","BinanceBEP2","EosMainnet","EosTestnet","HederaMainnet","HederaTestnet","DogeMainnet","CardanoMainnet","AvalancheXChain","AvalancheCChain","PolygonMainnet","TerraMainnet","RippleMainnet","SolanaMainnet","MetalXTestnet","MetalCTestnet","MetalCMainnet","initializeCoins","protonChain","IS_MAINNET","IS_TESTNET","coins","allowSwap","allowBridge","allowLend","allowBorrow","name","coin","xtokenSymbol","xtokenPrecision","xtokenContract","wallets","wallet","symbol","chain","network","ERC20","precision","contract","provider","FIREBLOCKS","hasWithdrawMemo","BEP20","image","coingeckoId","XLM","undefined","Ropsten","EVM","METAL","Mainnet","Testnet","walletWithDuplicateChains","find","chains","map","Set","size","length","Error","allCoins","swapCoins","filter","bridgeCoins","lendCoins","borrowCoins","loanCoins","allEnabledCoins","accountParser","z","regex","authorizationParser","actor","permission","authorizationsParser","min","ExtendedAssetParser","quantity","actionParser","account","authorization","data","hex_data","optional","transactionExtensionsParser","or","rawTransactionParser","expiration","ref_block_num","ref_block_prefix","max_net_usage_words","max_cpu_usage_ms","delay_sec","context_free_actions","transaction_extensions","baseActionParser","action","baseActionSerializedParser","webauthActionParser","key","modulus","exponent","user_presence","rpid","nonce","permissions","signature","auth_data","client_json","trx","merge","actions","singleActionTransactionParser","baseAction","webauthAction","Type","createAbstractAuthParser","signer","signatures","transaction","generateAuthParser","time","protonAccount","addressParser","index","address","address_hash","generateAddressBodyParser","generateAddressResponse","id","memo","rateParser","counterCurrency","price","priceChangePercent","marketCap","volume","timestamp","exchangeRateParser","rank","rates","exchangeRatesParser","bloksRatesParser","Status","depositBodyParser","type","hash","transactionParser","value","valueString","state","confirmations","blockHash","nullable","blockHeight","otcOrderResponseParser","success","transaction_id","errormsg","otcQuoteBodyParser","baseAmount","baseSymbol","quoteSymbol","otcQuoteResponseParser","token","qty","withdrawData","from","refine","val","message","WRAP_CONTRACT","to","withdrawBodyParser","quoteId","withdrawMetalResponseParser","withdrawalFeeQuoteParser","estimatedFee","currency","withdrawHistoryMetalSwapParser","status","amount","created","withdrawalAddress","withdrawalHash","withdrawHistoryMetalResponseParser","swaps","page","pageSize","numberOfElements","totalPages","totalElements","orderType","orderSide","fillType","logStatus","ITopics","wrapStartParser","balance","deposit_address","wrapSetConfParser","wrap_hash","wrapParser","proton_account","finish_txid","ohlcvParser","open","high","low","close","volume_bid","count","getOhlcvParser","interval","limit","n","getOhlcvResponseParser","sync","orderHistoryParser","seq","block_num","block_time","order_id","market_id","quantity_init","quantity_curr","account_name","order_side","order_type","trigger_price","fill_type","quantity_change","trx_id","getOrderHistoryParser","offset","getOrderHistoryResponseParser","depthParser","level","ask","bid","getDepthParser","step","getDepthResponseParser","bids","asks","dailyParser","first","last","change_percentage_24hr","getDailyResponseParser","marketParser","status_code","maker_fee","taker_fee","order_min","bid_token","code","multiplier","ask_token","getMarketsResponseParser","tradeParser","trade_id","bid_user","bid_user_order_id","bid_total","bid_amount","bid_fee","ask_user","ask_user_order_id","ask_total","ask_amount","ask_fee","getTradesParser","getTradesResponseParser","syncParser","sourceid","irreversible","is_master","last_updated","getSyncResponseParser","dbSecondsBehind","chronicleSecondsBehind","maxSecondsBehind","TOPICS","TRADES","topic","ORDERS","loginAccountParamsV3Parser","email","verificationCode","INode","this","ILink","Graph","nodes","links","lastPathFound","isEquals","a","b","_proto","addNode","k","v","findNode","push","addNodes","forEach","node","_this","inode","_this2","findNodes","keys","_this3","requireFindNodes","some","addLink","nodeA","nodeB","addLinks","link","_this4","findLinkedNodes","reduce","acc","_this5","findAllPaths","allPaths","fromNode","toNode","path","seen","search","x","_this6","cloneDeep","p","stuck","y","has","add","includes","pop","compute_transfer","pool1","pool2","swap","exchange_fee","term1","term2over","times","term2under","plus","term2","div","integerValue","BN","ROUND_DOWN","term","minus","fee","shiftedBy","staked","amount_lt","pool","lt_supply","toFixed","reserve_in","reserve_out","amount_in","amplifier","sum","D","D_prev","F","Math","floor","abs","i","prod1","c","x_prev","amount_out_with_fee","constants","SWAP_CONTRACT","DEX_CONTRACT","FEE_FACTOR","GOOGLE_MAPS_KEY","SWAP_URL","WRAP_SERVER_URL","WRAP_ACTIONS","SAVE_ADDRESS","DELETE_ADDRESS","WRAP_START","WRAP_FINISH","WRAP_PROCESS","WRAP_SET_CONF","WRAP_TABLES","ADDRESSES","WRAPS","ADDRESSES_INDEXES","BY_ACCOUNT","BY_ADDR_HASH","WRAPS_INDEXES","BY_STATUS","BY_WRAP_HASH","WRAP_PROCESS_TIMER","FARM_CONTRACT","WEBHOOK_PERMISSION","PUBLIC_PERMISSION","LIGHT_PERMISSION","WRAP_AUTH_ACTION","METAL_ENDPOINT","METAL_PROTON_ENDPOINT","METAL_DEX_HTTP_ENDPOINT","METAL_DEX_WS_ENDPOINT","PROTON_ENDPOINTS","CHAIN_ID","DEX_PROCESS_SIZE","DEX_SLTPPROCESS_SIZE","MAX_PRICE","MAX_ITEMS_PER_PAGE_DESKTOP","MIN_PRICE","DEFAULT_DEX_SYMBOL","CHAIN","SWAP_COINS","BRIDGE_COINS","ALL_ENABLED_COINS","LEND_COINS","BORROW_COINS","LOAN_COINS","ALL_COINS","findBridgeCoinWalletByXtokenAndChain","bridgeCoin","bridgeWallet","findBridgeCoinWallet","findBridgeCoinNetwork","String","isBackspace","isNumber","test","isDoubleDot","indexOf","isPrecisionTooHigh","split","Boolean","token1","token2","numbers","sorted","slice","sort","middle","txId"],"mappings":"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"}
@@ -1369,7 +1369,7 @@ var depositBodyParser = /*#__PURE__*/object({
1369
1369
  hash: /*#__PURE__*/string(),
1370
1370
  coin: /*#__PURE__*/string(),
1371
1371
  wallet: /*#__PURE__*/string(),
1372
- network: /*#__PURE__*/string().optional() // "erc29"
1372
+ network: /*#__PURE__*/string() // "erc29"
1373
1373
 
1374
1374
  });
1375
1375
  var transactionParser = /*#__PURE__*/object({