diff --git a/jest.config.js b/jest.config.js index f72369feda..d3ad4fc182 100644 --- a/jest.config.js +++ b/jest.config.js @@ -21,7 +21,6 @@ module.exports = { 'src/connectors/uniswap/uniswap.config.ts', 'src/connectors/uniswap/uniswap.ts', 'src/connectors/uniswap/uniswap.lp.helper.ts', - 'src/connectors/defira/defira.ts', 'src/connectors/openocean/openocean.ts', 'src/connectors/pangolin/pangolin.ts', 'src/chains/injective/injective.mappers.ts', diff --git a/package.json b/package.json index dbaba3c85a..f9932a6b73 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hummingbot-gateway", - "version": "1.20.0", + "version": "1.21.0", "description": "Middleware that helps Hummingbot clients access standardized DEX API endpoints on different blockchain networks", "main": "index.js", "license": "Apache-2.0", @@ -59,7 +59,6 @@ "@uniswap/v3-core": "^1.0.0", "@uniswap/v3-periphery": "^1.1.1", "@uniswap/v3-sdk": "^3.7.0", - "@zuzu-cat/defira-sdk": "^1.0.0", "abi-decoder": "^2.4.0", "ajv": "^8.6.3", "algosdk": "^2.2.0", diff --git a/src/app.ts b/src/app.ts index 18f50b9f9f..bff59e6c53 100644 --- a/src/app.ts +++ b/src/app.ts @@ -112,7 +112,7 @@ export const startSwagger = async () => { export const startGateway = async () => { const port = ConfigManagerV2.getInstance().get('server.port'); - const gateway_version="1.20.0"; // gateway version + const gateway_version="1.21.0"; // gateway version if (!ConfigManagerV2.getInstance().get('server.id')) { ConfigManagerV2.getInstance().set( 'server.id', diff --git a/src/chains/cosmos/cosmos-base.ts b/src/chains/cosmos/cosmos-base.ts index 6cedc6b60d..11a2f393dc 100644 --- a/src/chains/cosmos/cosmos-base.ts +++ b/src/chains/cosmos/cosmos-base.ts @@ -8,6 +8,7 @@ import { BigNumber } from 'ethers'; import { AccountData, DirectSignResponse } from '@cosmjs/proto-signing'; import { IndexedTx, setupIbcExtension } from '@cosmjs/stargate'; +import { logger } from '../../services/logger'; //Cosmos const { DirectSecp256k1Wallet } = require('@cosmjs/proto-signing'); @@ -58,8 +59,7 @@ export class CosmosBase { private _tokenMap: Record = {}; private _ready: boolean = false; - private _initializing: boolean = false; - private _initPromise: Promise = Promise.resolve(); + private _initialized: Promise = Promise.resolve(false); public chainName; public rpcUrl; @@ -93,17 +93,21 @@ export class CosmosBase { } async init(): Promise { - if (!this.ready() && !this._initializing) { - this._initializing = true; - this._initPromise = this.loadTokens( - this.tokenListSource, - this.tokenListType - ).then(() => { - this._ready = true; - this._initializing = false; - }); + await this._initialized; // Wait for any previous init() calls to complete + if (!this.ready()) { + // If we're not ready, this._initialized will be a Promise that resolves after init() completes + this._initialized = (async () => { + try { + await this.loadTokens(this.tokenListSource, this.tokenListType) + return true; + } catch (e) { + logger.error(`Failed to initialize ${this.chainName} chain: ${e}`); + return false; + } + })(); + this._ready = await this._initialized; // Wait for the initialization to complete } - return this._initPromise; + return; } async loadTokens( diff --git a/src/chains/ethereum/ethereum-base.ts b/src/chains/ethereum/ethereum-base.ts index 55101b30ce..f69888c007 100644 --- a/src/chains/ethereum/ethereum-base.ts +++ b/src/chains/ethereum/ethereum-base.ts @@ -39,7 +39,7 @@ export class EthereumBase { private _tokenMap: Record = {}; // there are async values set in the constructor private _ready: boolean = false; - private _initializing: boolean = false; + private _initialized: Promise = Promise.resolve(false); public chainName; public chainId; public rpcUrl; @@ -121,14 +121,22 @@ export class EthereumBase { } async init(): Promise { - if (!this.ready() && !this._initializing) { - this._initializing = true; - await this._nonceManager.init( - async (address) => await this.provider.getTransactionCount(address) - ); - await this.loadTokens(this.tokenListSource, this.tokenListType); - this._ready = true; - this._initializing = false; + await this._initialized; // Wait for any previous init() calls to complete + if (!this.ready()) { + // If we're not ready, this._initialized will be a Promise that resolves after init() completes + this._initialized = (async () => { + try { + await this._nonceManager.init( + async (address) => await this.provider.getTransactionCount(address) + ); + await this.loadTokens(this.tokenListSource, this.tokenListType); + return true; + } catch (e) { + logger.error(`Failed to initialize ${this.chainName} chain: ${e}`); + return false; + } + })(); + this._ready = await this._initialized; // Wait for the initialization to complete } return; } @@ -241,7 +249,7 @@ export class EthereumBase { const balance: BigNumber = await contract.balanceOf(wallet.address); logger.info( `Raw balance of ${contract.address} for ` + - `${wallet.address}: ${balance.toString()}` + `${wallet.address}: ${balance.toString()}` ); return { value: balance, decimals: decimals }; } @@ -255,10 +263,10 @@ export class EthereumBase { ): Promise { logger.info( 'Requesting spender ' + - spender + - ' allowance for owner ' + - wallet.address + - '.' + spender + + ' allowance for owner ' + + wallet.address + + '.' ); const allowance = await contract.allowance(wallet.address, spender); logger.info(allowance); @@ -311,12 +319,12 @@ export class EthereumBase { ): Promise { logger.info( 'Calling approve method called for spender ' + - spender + - ' requesting allowance ' + - amount.toString() + - ' from owner ' + - wallet.address + - '.' + spender + + ' requesting allowance ' + + amount.toString() + + ' from owner ' + + wallet.address + + '.' ); return this.nonceManager.provideNonce( nonce, diff --git a/src/chains/ethereum/ethereum.validators.ts b/src/chains/ethereum/ethereum.validators.ts index 78d7df8454..4fda970472 100644 --- a/src/chains/ethereum/ethereum.validators.ts +++ b/src/chains/ethereum/ethereum.validators.ts @@ -57,7 +57,6 @@ export const validateSpender: Validator = mkValidator( val === 'viperswap' || val === 'openocean' || val === 'quickswap' || - val === 'defira' || val === 'mad_meerkat' || val === 'vvs' || val === 'pancakeswap' || diff --git a/src/chains/harmony/harmony.ts b/src/chains/harmony/harmony.ts index 9a1288cde9..11f6db7b7d 100644 --- a/src/chains/harmony/harmony.ts +++ b/src/chains/harmony/harmony.ts @@ -146,9 +146,7 @@ export class Harmony extends EthereumBase implements Ethereumish { getSpender(reqSpender: string): string { let spender: string; - if (reqSpender === 'defira') { - spender = '0x3C8BF7e25EbfAaFb863256A4380A8a93490d8065'; - } else if (reqSpender === 'openocean') { + if (reqSpender === 'openocean') { spender = OpenoceanConfig.config.routerAddress('ethereum', this._chain); } else if (reqSpender === 'sushiswap') { spender = SushiswapConfig.config.sushiswapRouterAddress( diff --git a/src/chains/harmony/harmony.validators.ts b/src/chains/harmony/harmony.validators.ts index c3111bd5e5..485d2832e2 100644 --- a/src/chains/harmony/harmony.validators.ts +++ b/src/chains/harmony/harmony.validators.ts @@ -42,10 +42,7 @@ export const validateSpender: Validator = mkValidator( invalidSpenderError, (val) => typeof val === 'string' && - (val === 'sushiswap' || - val === 'defira' || - val === 'openocean' || - isValidAddress(val)) + (val === 'sushiswap' || val === 'openocean' || isValidAddress(val)) ); export const validateNonce: Validator = mkValidator( diff --git a/src/chains/injective/injective.ts b/src/chains/injective/injective.ts index a7e48fc1b6..bfc9873002 100644 --- a/src/chains/injective/injective.ts +++ b/src/chains/injective/injective.ts @@ -65,7 +65,7 @@ export interface InjectiveWallet { export class Injective { private static _instances: LRUCache; private _ready: boolean = false; - private _initializing: boolean = false; + private _initialized: Promise = Promise.resolve(false); private _network: Network; private _chainId: ChainId; @@ -152,48 +152,56 @@ export class Injective { } public async init(): Promise { - if (!this.ready() && !this._initializing) { - this._initializing = true; - // initialize nonce manager - await this._nonceManager.init( - async (address: string) => await this.getTransactionCount(address) - ); - // start updating block number - this._blockUpdateIntervalID = setInterval(async () => { - await this.updateCurrentBlockNumber(); - }, 2000) as unknown as number; - - // get tokens - const rawMarkets = await this._spotApi.fetchMarkets(); - for (const market of rawMarkets) { - if (market.baseToken) { - const token = { - address: '', - chainId: chainIdToInt(this._chainId), - name: market.baseToken.name, - decimals: market.baseToken.decimals, - symbol: market.baseToken.symbol, - denom: market.baseDenom, - }; - this._symbolToToken[market.baseToken.symbol] = token; - this._denomToToken[market.baseDenom] = token; - } + await this._initialized; // Wait for any previous init() calls to complete + if (!this.ready()) { + // If we're not ready, this._initialized will be a Promise that resolves after init() completes + this._initialized = (async () => { + try { + // initialize nonce manager + await this._nonceManager.init( + async (address: string) => await this.getTransactionCount(address) + ); + // start updating block number + this._blockUpdateIntervalID = setInterval(async () => { + await this.updateCurrentBlockNumber(); + }, 2000) as unknown as number; + + // get tokens + const rawMarkets = await this._spotApi.fetchMarkets(); + for (const market of rawMarkets) { + if (market.baseToken) { + const token = { + address: '', + chainId: chainIdToInt(this._chainId), + name: market.baseToken.name, + decimals: market.baseToken.decimals, + symbol: market.baseToken.symbol, + denom: market.baseDenom, + }; + this._symbolToToken[market.baseToken.symbol] = token; + this._denomToToken[market.baseDenom] = token; + } - if (market.quoteToken) { - const token = { - address: '', - chainId: chainIdToInt(this._chainId), - name: market.quoteToken.name, - decimals: market.quoteToken.decimals, - symbol: market.quoteToken.symbol, - denom: market.quoteDenom, - }; - this._symbolToToken[market.quoteToken.symbol] = token; - this._denomToToken[market.quoteDenom] = token; + if (market.quoteToken) { + const token = { + address: '', + chainId: chainIdToInt(this._chainId), + name: market.quoteToken.name, + decimals: market.quoteToken.decimals, + symbol: market.quoteToken.symbol, + denom: market.quoteDenom, + }; + this._symbolToToken[market.quoteToken.symbol] = token; + this._denomToToken[market.quoteDenom] = token; + } + } + return true; + } catch (e) { + logger.error(`Failed to initialize ${this.chainName} chain: ${e}`); + return false; } - this._ready = true; - this._initializing = false; - } + })(); + this._ready = await this._initialized; // Wait for the initialization to complete } return; } diff --git a/src/chains/near/near.base.ts b/src/chains/near/near.base.ts index 763c569e31..dec740cbe8 100644 --- a/src/chains/near/near.base.ts +++ b/src/chains/near/near.base.ts @@ -42,8 +42,7 @@ export class NearBase { private _tokenMap: Record = {}; // there are async values set in the constructor private _ready: boolean = false; - private _initializing: boolean = false; - private _initPromise: Promise = Promise.resolve(); + private _initialized: Promise = Promise.resolve(false); private _keyStore: keyStores.InMemoryKeyStore; private _connection: Near | undefined; @@ -107,18 +106,25 @@ export class NearBase { } async init(): Promise { - if (!this.ready() && !this._initializing) { - this._initializing = true; - this._connection = await this.connectProvider(); - this._initPromise = this.loadTokens( - this.tokenListSource, - this.tokenListType - ).then(() => { - this._ready = true; - this._initializing = false; - }); + await this._initialized; // Wait for any previous init() calls to complete + if (!this.ready()) { + // If we're not ready, this._initialized will be a Promise that resolves after init() completes + this._initialized = (async () => { + try { + this._connection = await this.connectProvider(); + await this.loadTokens( + this.tokenListSource, + this.tokenListType + ) + return true; + } catch (e) { + logger.error(`Failed to initialize ${this.chainName} chain: ${e}`); + return false; + } + })(); + this._ready = await this._initialized; // Wait for the initialization to complete } - return this._initPromise; + return; } async connectProvider(): Promise { @@ -260,7 +266,7 @@ export class NearBase { } logger.info( `Raw balance of ${contract.contractId} for ` + - `${contract.account.accountId}: ${balance}` + `${contract.account.accountId}: ${balance}` ); return balance; } diff --git a/src/chains/tezos/tezos.base.ts b/src/chains/tezos/tezos.base.ts index 37ff15934f..1d7b0ff3a1 100644 --- a/src/chains/tezos/tezos.base.ts +++ b/src/chains/tezos/tezos.base.ts @@ -44,8 +44,7 @@ export class TezosBase { private _contractStorageMap: Record = {}; private _ready: boolean = false; - private _initializing: boolean = false; - private _initPromise: Promise = Promise.resolve(); + private _initialized: Promise = Promise.resolve(false); public chainName: string = 'tezos'; public rpcUrl: string; @@ -77,18 +76,25 @@ export class TezosBase { } async init(): Promise { - if (!this.ready() && !this._initializing) { - this._initializing = true; - this._initPromise = this.loadTokens( - this.tokenListSource, - this.tokenListType - ).then(() => { - this._ready = true; - this._initializing = false; - }); - this.provider.setRpcProvider(this.rpcUrl); + await this._initialized; // Wait for any previous init() calls to complete + if (!this.ready()) { + // If we're not ready, this._initialized will be a Promise that resolves after init() completes + this._initialized = (async () => { + try { + await this.loadTokens( + this.tokenListSource, + this.tokenListType + ); + this.provider.setRpcProvider(this.rpcUrl); + return true; + } catch (e) { + logger.error(`Failed to initialize ${this.chainName} chain: ${e}`); + return false; + } + })(); + this._ready = await this._initialized; // Wait for the initialization to complete } - return this._initPromise; + return; } private async loadTokens( diff --git a/src/chains/xdc/xdc.base.ts b/src/chains/xdc/xdc.base.ts index bd718d81f0..8b826f3839 100644 --- a/src/chains/xdc/xdc.base.ts +++ b/src/chains/xdc/xdc.base.ts @@ -38,7 +38,7 @@ export class XdcBase { private _tokenMap: Record = {}; // there are async values set in the constructor private _ready: boolean = false; - private _initializing: boolean = false; + private _initialized: Promise = Promise.resolve(false); public chainName; public chainId; public rpcUrl; @@ -120,16 +120,23 @@ export class XdcBase { } async init(): Promise { - if (!this.ready() && !this._initializing) { - this._initializing = true; - await this._nonceManager.init( - async (address) => - (await this.provider.getTransactionCount(address)) - 1 - ); - - await this.loadTokens(this.tokenListSource, this.tokenListType); - this._ready = true; - this._initializing = false; + await this._initialized; // Wait for any previous init() calls to complete + if (!this.ready()) { + // If we're not ready, this._initialized will be a Promise that resolves after init() completes + this._initialized = (async () => { + try { + await this._nonceManager.init( + async (address) => + (await this.provider.getTransactionCount(address)) - 1 + ); + await this.loadTokens(this.tokenListSource, this.tokenListType); + return true; + } catch (e) { + logger.error(`Failed to initialize ${this.chainName} chain: ${e}`); + return false; + } + })(); + this._ready = await this._initialized; // Wait for the initialization to complete } return; } @@ -242,7 +249,7 @@ export class XdcBase { const balance: BigNumber = await contract.balanceOf(wallet.address); logger.info( `Raw balance of ${contract.address} for ` + - `${wallet.address}: ${balance.toString()}` + `${wallet.address}: ${balance.toString()}` ); return { value: balance, decimals: decimals }; } @@ -256,10 +263,10 @@ export class XdcBase { ): Promise { logger.info( 'Requesting spender ' + - spender + - ' allowance for owner ' + - wallet.address + - '.' + spender + + ' allowance for owner ' + + wallet.address + + '.' ); const allowance = await contract.allowance(wallet.address, spender); logger.info(allowance); @@ -312,12 +319,12 @@ export class XdcBase { ): Promise { logger.info( 'Calling approve method called for spender ' + - spender + - ' requesting allowance ' + - amount.toString() + - ' from owner ' + - wallet.address + - '.' + spender + + ' requesting allowance ' + + amount.toString() + + ' from owner ' + + wallet.address + + '.' ); return this.nonceManager.provideNonce( nonce, diff --git a/src/connectors/connectors.routes.ts b/src/connectors/connectors.routes.ts index b22bf8f20b..96164c7055 100644 --- a/src/connectors/connectors.routes.ts +++ b/src/connectors/connectors.routes.ts @@ -2,7 +2,6 @@ /* eslint-disable @typescript-eslint/ban-types */ import { Router, Response } from 'express'; import { asyncHandler } from '../services/error-handler'; -import { DefiraConfig } from './defira/defira.config'; import { MadMeerkatConfig } from './mad_meerkat/mad_meerkat.config'; import { OpenoceanConfig } from './openocean/openocean.config'; import { PangolinConfig } from './pangolin/pangolin.config'; @@ -81,12 +80,6 @@ export namespace ConnectorsRoutes { chain_type: TraderjoeConfig.config.chainType, available_networks: TraderjoeConfig.config.availableNetworks, }, - { - name: 'defira', - trading_type: DefiraConfig.config.tradingTypes, - chain_type: DefiraConfig.config.chainType, - available_networks: DefiraConfig.config.availableNetworks, - }, { name: 'mad_meerkat', trading_type: MadMeerkatConfig.config.tradingTypes, diff --git a/src/connectors/defira/defira.config.ts b/src/connectors/defira/defira.config.ts deleted file mode 100644 index ae95e3910b..0000000000 --- a/src/connectors/defira/defira.config.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { ConfigManagerV2 } from '../../services/config-manager-v2'; -import { AvailableNetworks } from '../../services/config-manager-types'; -export namespace DefiraConfig { - export interface NetworkConfig { - allowedSlippage: () => string; - gasLimitEstimate: () => number; - ttl: () => number; - routerAddress: (network: string) => string; - initCodeHash: (network: string) => string; - tradingTypes: Array; - chainType: string; - availableNetworks: Array; - } - - export const config: NetworkConfig = { - allowedSlippage: () => - ConfigManagerV2.getInstance().get(`defira.allowedSlippage`), - gasLimitEstimate: () => - ConfigManagerV2.getInstance().get(`defira.gasLimitEstimate`), - ttl: () => ConfigManagerV2.getInstance().get(`defira.ttl`), - routerAddress: (network: string) => - ConfigManagerV2.getInstance().get( - `defira.contractAddresses.${network}.routerAddress` - ), - initCodeHash: (network: string) => - ConfigManagerV2.getInstance().get( - `defira.contractAddresses.${network}.initCodeHash` - ), - tradingTypes: ['AMM'], - chainType: 'EVM', - availableNetworks: [ - { - chain: 'harmony', - networks: ['mainnet', 'testnet'], - }, - ], - }; -} diff --git a/src/connectors/defira/defira.ts b/src/connectors/defira/defira.ts deleted file mode 100644 index c91a3472dd..0000000000 --- a/src/connectors/defira/defira.ts +++ /dev/null @@ -1,323 +0,0 @@ -import { UniswapishPriceError } from '../../services/error-handler'; -import { isFractionString } from '../../services/validators'; -import { DefiraConfig } from './defira.config'; -import routerAbi from './defira_v2_router_abi.json'; -import { - Contract, - ContractInterface, - ContractTransaction, -} from '@ethersproject/contracts'; -import { - Router as DefiraRouter, - Pair as DefiraPair, - SwapParameters, - Trade as DefiraTrade, - Fetcher as DefiraFetcher, -} from '@zuzu-cat/defira-sdk'; - -import { Percent, Token, CurrencyAmount, TradeType } from '@uniswap/sdk-core'; -import { BigNumber, Transaction, Wallet } from 'ethers'; -import { logger } from '../../services/logger'; -import { percentRegexp } from '../../services/config-manager-v2'; -import { Harmony } from '../../chains/harmony/harmony'; -import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; -import { getAddress } from 'ethers/lib/utils'; - -export class Defira implements Uniswapish { - private static _instances: { [name: string]: Defira }; - private harmony: Harmony; - private _router: string; - private _factory: string | null; - private _routerAbi: ContractInterface; - private _initCodeHash: string; - private _gasLimitEstimate: number; - private _ttl: number; - private chainId; - private tokenList: Record = {}; - private _ready: boolean = false; - - private constructor(network: string) { - const config = DefiraConfig.config; - this.harmony = Harmony.getInstance(network); - this.chainId = this.harmony.chainId; - this._ttl = config.ttl(); - this._routerAbi = routerAbi.abi; - this._gasLimitEstimate = config.gasLimitEstimate(); - this._router = config.routerAddress(network); - this._initCodeHash = config.initCodeHash(network); - this._factory = null; - } - - public static getInstance(chain: string, network: string): Defira { - if (Defira._instances === undefined) { - Defira._instances = {}; - } - if (!(chain + network in Defira._instances)) { - Defira._instances[chain + network] = new Defira(network); - } - - return Defira._instances[chain + network]; - } - - /** - * Given a token's address, return the connector's native representation of - * the token. - * - * @param address Token address - */ - public getTokenByAddress(address: string): Token { - return this.tokenList[getAddress(address)]; - } - - public async init() { - if (!this.harmony.ready()) { - await this.harmony.init(); - } - for (const token of this.harmony.storedTokenList) { - this.tokenList[token.address] = new Token( - token.chainId || this.chainId, - token.address, - token.decimals, - token.symbol, - token.name - ); - } - this._ready = true; - } - - public ready(): boolean { - return this._ready; - } - - /** - * Router address. - */ - public get router(): string { - return this._router; - } - - /** - * Lazily computed factory address. - */ - public get factory(): Promise { - // boilerplate to support async getter - return (async () => { - if (!this._factory) { - const routerContract = new Contract( - this.router, - this.routerAbi, - this.provider() - ); - this._factory = await routerContract.factory(); - } - return this._factory as string; - })(); - } - - /** - * Init code hash of Defira DEX Pair contract, used to compute individual pair addresses without network lookups - */ - public get initCodeHash(): string { - return this._initCodeHash; - } - - // in place for mocking - async fetchPairData(tokenA: Token, tokenB: Token): Promise { - return await DefiraFetcher.fetchPairData( - tokenA, - tokenB, - await this.factory, - this.initCodeHash, - this.provider() - ); - } - - // in place for mocking - provider(): any { - return this.harmony.provider; - } - - /** - * Router smart contract ABI. - */ - public get routerAbi(): ContractInterface { - return this._routerAbi; - } - - /** - * Default gas limit for swap transactions. - */ - public get gasLimitEstimate(): number { - return this._gasLimitEstimate; - } - - /** - * Default time-to-live for swap transactions, in seconds. - */ - public get ttl(): number { - return this._ttl; - } - - /** - * Gets the allowed slippage percent from the optional parameter or the value - * in the configuration. - * - * @param allowedSlippageStr (Optional) should be of the form '1/10'. - */ - public getAllowedSlippage(allowedSlippageStr?: string): Percent { - if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { - const fractionSplit = allowedSlippageStr.split('/'); - return new Percent(fractionSplit[0], fractionSplit[1]); - } - - const allowedSlippage = DefiraConfig.config.allowedSlippage(); - const nd = allowedSlippage.match(percentRegexp); - if (nd) return new Percent(nd[1], nd[2]); - throw new Error( - 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' - ); - } - - /** - * Given the amount of `baseToken` to put into a transaction, calculate the - * amount of `quoteToken` that can be expected from the transaction. - * - * This is typically used for calculating token sell prices. - * - * @param baseToken Token input for the transaction - * @param quoteToken Output from the transaction - * @param amount Amount of `baseToken` to put into the transaction - */ - async estimateSellTrade( - baseToken: Token, - quoteToken: Token, - amount: BigNumber, - allowedSlippage?: string - ): Promise { - const baseTokenAmount = CurrencyAmount.fromRawAmount( - baseToken, - amount.toString() - ); - - logger.info( - `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` - ); - - const pair: DefiraPair = await this.fetchPairData(quoteToken, baseToken); - const trades: DefiraTrade[] = - DefiraTrade.bestTradeExactIn([pair], baseTokenAmount, quoteToken, { - maxHops: 1, - }); - if (!trades || trades.length === 0) { - throw new UniswapishPriceError( - `priceSwapIn: no trade pair found for ${baseToken.address} to ${quoteToken.address}.` - ); - } - logger.info( - `Best trade for ${baseToken.address}-${quoteToken.address}: ` + - `${trades[0].executionPrice.toFixed(6)}` + - `${baseToken.name}.` - ); - const expectedAmount = trades[0].minimumAmountOut( - this.getAllowedSlippage(allowedSlippage) - ); - return { trade: trades[0], expectedAmount }; - } - - /** - * Given the amount of `baseToken` desired to acquire from a transaction, - * calculate the amount of `quoteToken` needed for the transaction. - * - * This is typically used for calculating token buy prices. - * - * @param quoteToken Token input for the transaction - * @param baseToken Token output from the transaction - * @param amount Amount of `baseToken` desired from the transaction - */ - async estimateBuyTrade( - quoteToken: Token, - baseToken: Token, - amount: BigNumber, - allowedSlippage?: string - ): Promise { - const baseTokenAmount = CurrencyAmount.fromRawAmount( - baseToken, - amount.toString() - ); - logger.info( - `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` - ); - const pair: DefiraPair = await this.fetchPairData(quoteToken, baseToken); - const trades: DefiraTrade[] = - DefiraTrade.bestTradeExactOut([pair], quoteToken, baseTokenAmount, { - maxHops: 1, - }); - if (!trades || trades.length === 0) { - throw new UniswapishPriceError( - `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` - ); - } - logger.info( - `Best trade for ${quoteToken.address}-${baseToken.address}: ` + - `${trades[0].executionPrice.invert().toFixed(6)} ` + - `${baseToken.name}.` - ); - - const expectedAmount = trades[0].maximumAmountIn( - this.getAllowedSlippage(allowedSlippage) - ); - return { trade: trades[0], expectedAmount }; - } - - /** - * Given a wallet and a defira trade, try to execute it on blockchain. - * - * @param wallet Wallet - * @param trade Expected trade - * @param gasPrice Base gas price, for pre-EIP1559 transactions - * @param defiraRouter Router smart contract address - * @param ttl How long the swap is valid before expiry, in seconds - * @param abi Router contract ABI - * @param gasLimit Gas limit - * @param nonce (Optional) EVM transaction nonce - */ - async executeTrade( - wallet: Wallet, - trade: DefiraTrade, - gasPrice: number, - defiraRouter: string, - ttl: number, - abi: ContractInterface, - gasLimit: number, - nonce?: number, - _1?: BigNumber, - _2?: BigNumber, - allowedSlippage?: string - ): Promise { - const result: SwapParameters = DefiraRouter.swapCallParameters(trade, { - ttl, - recipient: wallet.address, - allowedSlippage: this.getAllowedSlippage(allowedSlippage), - }); - - const contract: Contract = new Contract(defiraRouter, abi, wallet); - return this.harmony.nonceManager.provideNonce( - nonce, - wallet.address, - async (nextNonce) => { - const tx: ContractTransaction = await contract[result.methodName]( - ...result.args, - { - gasPrice: (gasPrice * 1e9).toFixed(0), - gasLimit: gasLimit.toFixed(0), - value: result.value, - nonce: nextNonce, - } - ); - - logger.info(JSON.stringify(tx)); - return tx; - } - ); - } -} diff --git a/src/connectors/defira/defira_v2_router_abi.json b/src/connectors/defira/defira_v2_router_abi.json deleted file mode 100644 index 14a192176b..0000000000 --- a/src/connectors/defira/defira_v2_router_abi.json +++ /dev/null @@ -1,985 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "type": "address", - "name": "_factory", - "internalType": "address" - }, - { - "internalType": "address", - "name": "_WETH", - "type": "address" - } - ], - "type": "constructor", - "stateMutability": "nonpayable" - }, - { - "name": "WETH", - "type": "function", - "inputs": [], - "outputs": [ - { - "internalType": "address", - "type": "address", - "name": "" - } - ], - "stateMutability": "view" - }, - { - "stateMutability": "view", - "name": "factory", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ] - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "name": "addLiquidity", - "type": "function", - "stateMutability": "nonpayable", - "outputs": [ - { - "name": "amountA", - "internalType": "uint256", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - }, - { - "name": "liquidity", - "type": "uint256", - "internalType": "uint256" - } - ], - "inputs": [ - { - "name": "tokenA", - "internalType": "address", - "type": "address" - }, - { - "name": "tokenB", - "type": "address", - "internalType": "address" - }, - { - "internalType": "uint256", - "type": "uint256", - "name": "amountADesired" - }, - { - "type": "uint256", - "name": "amountBDesired", - "internalType": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "name": "to", - "internalType": "address", - "type": "address" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "outputs": [ - { - "type": "uint256", - "name": "amountToken", - "internalType": "uint256" - }, - { - "name": "amountETH", - "internalType": "uint256", - "type": "uint256" - }, - { - "name": "liquidity", - "type": "uint256", - "internalType": "uint256" - } - ], - "type": "function", - "name": "addLiquidityETH", - "inputs": [ - { - "type": "address", - "name": "token", - "internalType": "address" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "amountTokenDesired" - }, - { - "name": "amountTokenMin", - "internalType": "uint256", - "type": "uint256" - }, - { - "internalType": "uint256", - "type": "uint256", - "name": "amountETHMin" - }, - { - "type": "address", - "internalType": "address", - "name": "to" - }, - { - "type": "uint256", - "name": "deadline", - "internalType": "uint256" - } - ], - "stateMutability": "payable" - }, - { - "type": "function", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "tokenA", - "type": "address", - "internalType": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "name": "liquidity", - "type": "uint256", - "internalType": "uint256" - }, - { - "type": "uint256", - "name": "amountAMin", - "internalType": "uint256" - }, - { - "name": "amountBMin", - "internalType": "uint256", - "type": "uint256" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "type": "uint256", - "name": "deadline", - "internalType": "uint256" - } - ], - "name": "removeLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "amountB" - } - ] - }, - { - "stateMutability": "nonpayable", - "outputs": [ - { - "name": "amountToken", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "uint256", - "name": "amountETH", - "type": "uint256" - } - ], - "name": "removeLiquidityETH", - "inputs": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "liquidity", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amountTokenMin", - "internalType": "uint256", - "type": "uint256" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "amountETHMin" - }, - { - "type": "address", - "internalType": "address", - "name": "to" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ], - "type": "function" - }, - { - "stateMutability": "nonpayable", - "type": "function", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "name": "amountB", - "type": "uint256", - "internalType": "uint256" - } - ], - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "name": "liquidity", - "internalType": "uint256", - "type": "uint256" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "amountAMin" - }, - { - "type": "uint256", - "name": "amountBMin", - "internalType": "uint256" - }, - { - "type": "address", - "name": "to", - "internalType": "address" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "name": "v", - "internalType": "uint8", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "internalType": "bytes32", - "type": "bytes32" - } - ], - "name": "removeLiquidityWithPermit" - }, - { - "name": "removeLiquidityETHWithPermit", - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "name": "liquidity", - "internalType": "uint256", - "type": "uint256" - }, - { - "name": "amountTokenMin", - "internalType": "uint256", - "type": "uint256" - }, - { - "name": "amountETHMin", - "type": "uint256", - "internalType": "uint256" - }, - { - "type": "address", - "name": "to", - "internalType": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "type": "function", - "stateMutability": "nonpayable", - "outputs": [ - { - "internalType": "uint256", - "type": "uint256", - "name": "amountToken" - }, - { - "internalType": "uint256", - "type": "uint256", - "name": "amountETH" - } - ] - }, - { - "name": "removeLiquidityETHSupportingFeeOnTransferTokens", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "token", - "internalType": "address", - "type": "address" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "liquidity" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "amountTokenMin" - }, - { - "name": "amountETHMin", - "internalType": "uint256", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "deadline" - } - ], - "type": "function", - "outputs": [ - { - "type": "uint256", - "name": "amountETH", - "internalType": "uint256" - } - ] - }, - { - "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", - "type": "function", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "liquidity", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amountTokenMin", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "uint256", - "type": "uint256", - "name": "amountETHMin" - }, - { - "type": "address", - "internalType": "address", - "name": "to" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "type": "bool", - "name": "approveMax", - "internalType": "bool" - }, - { - "name": "v", - "type": "uint8", - "internalType": "uint8" - }, - { - "type": "bytes32", - "name": "r", - "internalType": "bytes32" - }, - { - "name": "s", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "outputs": [ - { - "type": "uint256", - "name": "amountETH", - "internalType": "uint256" - } - ] - }, - { - "type": "function", - "inputs": [ - { - "name": "amountIn", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "amountOutMin", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "type": "address", - "name": "to", - "internalType": "address" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ], - "name": "swapExactTokensForTokens", - "stateMutability": "nonpayable", - "outputs": [ - { - "name": "amounts", - "type": "uint256[]", - "internalType": "uint256[]" - } - ] - }, - { - "type": "function", - "outputs": [ - { - "name": "amounts", - "internalType": "uint256[]", - "type": "uint256[]" - } - ], - "inputs": [ - { - "type": "uint256", - "internalType": "uint256", - "name": "amountOut" - }, - { - "name": "amountInMax", - "internalType": "uint256", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "name": "to", - "internalType": "address", - "type": "address" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "nonpayable", - "name": "swapTokensForExactTokens" - }, - { - "inputs": [ - { - "name": "amountOutMin", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "path", - "type": "address[]", - "internalType": "address[]" - }, - { - "name": "to", - "internalType": "address", - "type": "address" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "deadline" - } - ], - "outputs": [ - { - "name": "amounts", - "internalType": "uint256[]", - "type": "uint256[]" - } - ], - "stateMutability": "payable", - "name": "swapExactETHForTokens", - "type": "function" - }, - { - "stateMutability": "nonpayable", - "type": "function", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "name": "swapTokensForExactETH", - "inputs": [ - { - "internalType": "uint256", - "type": "uint256", - "name": "amountOut" - }, - { - "name": "amountInMax", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "address[]", - "type": "address[]", - "name": "path" - }, - { - "type": "address", - "name": "to", - "internalType": "address" - }, - { - "type": "uint256", - "name": "deadline", - "internalType": "uint256" - } - ] - }, - { - "outputs": [ - { - "name": "amounts", - "type": "uint256[]", - "internalType": "uint256[]" - } - ], - "inputs": [ - { - "name": "amountIn", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "uint256", - "type": "uint256", - "name": "amountOutMin" - }, - { - "type": "address[]", - "name": "path", - "internalType": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "nonpayable", - "name": "swapExactTokensForETH", - "type": "function" - }, - { - "inputs": [ - { - "name": "amountOut", - "type": "uint256", - "internalType": "uint256" - }, - { - "type": "address[]", - "internalType": "address[]", - "name": "path" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "deadline" - } - ], - "stateMutability": "payable", - "name": "swapETHForExactTokens", - "type": "function", - "outputs": [ - { - "internalType": "uint256[]", - "type": "uint256[]", - "name": "amounts" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "type": "uint256", - "name": "amountIn" - }, - { - "name": "amountOutMin", - "type": "uint256", - "internalType": "uint256" - }, - { - "type": "address[]", - "name": "path", - "internalType": "address[]" - }, - { - "name": "to", - "internalType": "address", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "outputs": [], - "type": "function", - "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", - "stateMutability": "nonpayable" - }, - { - "stateMutability": "payable", - "type": "function", - "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", - "outputs": [], - "inputs": [ - { - "name": "amountOutMin", - "type": "uint256", - "internalType": "uint256" - }, - { - "type": "address[]", - "name": "path", - "internalType": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "name": "deadline", - "internalType": "uint256", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "type": "uint256", - "name": "amountIn" - }, - { - "name": "amountOutMin", - "internalType": "uint256", - "type": "uint256" - }, - { - "name": "path", - "internalType": "address[]", - "type": "address[]" - }, - { - "name": "to", - "internalType": "address", - "type": "address" - }, - { - "type": "uint256", - "name": "deadline", - "internalType": "uint256" - } - ], - "type": "function", - "outputs": [], - "stateMutability": "nonpayable", - "name": "swapExactTokensForETHSupportingFeeOnTransferTokens" - }, - { - "name": "quote", - "inputs": [ - { - "type": "uint256", - "internalType": "uint256", - "name": "amountA" - }, - { - "name": "reserveA", - "type": "uint256", - "internalType": "uint256" - }, - { - "internalType": "uint256", - "type": "uint256", - "name": "reserveB" - } - ], - "outputs": [ - { - "type": "uint256", - "name": "amountB", - "internalType": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "name": "getAmountOut", - "outputs": [ - { - "name": "amountOut", - "type": "uint256", - "internalType": "uint256" - } - ], - "type": "function", - "inputs": [ - { - "name": "amountIn", - "type": "uint256", - "internalType": "uint256" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "reserveIn" - }, - { - "type": "uint256", - "internalType": "uint256", - "name": "reserveOut" - }, - { - "name": "swapFee", - "internalType": "uint256", - "type": "uint256" - } - ], - "stateMutability": "pure" - }, - { - "inputs": [ - { - "name": "amountOut", - "internalType": "uint256", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "type": "uint256", - "name": "reserveOut", - "internalType": "uint256" - }, - { - "internalType": "uint256", - "name": "swapFee", - "type": "uint256" - } - ], - "name": "getAmountIn", - "outputs": [ - { - "name": "amountIn", - "type": "uint256", - "internalType": "uint256" - } - ], - "type": "function", - "stateMutability": "pure" - }, - { - "type": "function", - "outputs": [ - { - "type": "uint256[]", - "name": "amounts", - "internalType": "uint256[]" - } - ], - "inputs": [ - { - "name": "amountIn", - "internalType": "uint256", - "type": "uint256" - }, - { - "type": "address[]", - "internalType": "address[]", - "name": "path" - } - ], - "name": "getAmountsOut", - "stateMutability": "view" - }, - { - "inputs": [ - { - "name": "amountOut", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "path", - "type": "address[]", - "internalType": "address[]" - } - ], - "stateMutability": "view", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "name": "getAmountsIn", - "type": "function" - } - ] -} diff --git a/src/services/common-interfaces.ts b/src/services/common-interfaces.ts index cb1ae9c52f..d7855fb004 100644 --- a/src/services/common-interfaces.ts +++ b/src/services/common-interfaces.ts @@ -78,7 +78,6 @@ import { TradeOptionsDeadline as VVSTradeOptionsDeadline, SwapParameters as VVSSwapParameters, } from 'vvs-sdk'; -import { Trade as DefiraTrade } from '@zuzu-cat/defira-sdk'; import { Token as PancakeSwapToken, CurrencyAmount as PancakeSwapCurrencyAmount, @@ -141,7 +140,6 @@ export type UniswapishTrade = | TradeTraderjoe | SushiswapTrade | TradeUniswap - | DefiraTrade | PancakeSwapTrade | MMFTrade | VVSTrade diff --git a/src/services/connection-manager.ts b/src/services/connection-manager.ts index 420a1137b0..7cc9af8b8b 100644 --- a/src/services/connection-manager.ts +++ b/src/services/connection-manager.ts @@ -31,7 +31,6 @@ import { } from './common-interfaces'; import { Traderjoe } from '../connectors/traderjoe/traderjoe'; import { Sushiswap } from '../connectors/sushiswap/sushiswap'; -import { Defira } from '../connectors/defira/defira'; import { Near } from '../chains/near/near'; import { Ref } from '../connectors/ref/ref'; import { Xsswap } from '../connectors/xsswap/xsswap'; @@ -198,8 +197,6 @@ export async function getConnector( connectorInstance = Openocean.getInstance(chain, network); } else if (chain === 'avalanche' && connector === 'traderjoe') { connectorInstance = Traderjoe.getInstance(chain, network); - } else if (chain === 'harmony' && connector === 'defira') { - connectorInstance = Defira.getInstance(chain, network); } else if (chain === 'cronos' && connector === 'mad_meerkat') { connectorInstance = MadMeerkat.getInstance(chain, network); } else if (chain === 'cronos' && connector === 'vvs') { diff --git a/src/templates/defira.yml b/src/templates/defira.yml deleted file mode 100644 index b6cff6865f..0000000000 --- a/src/templates/defira.yml +++ /dev/null @@ -1,18 +0,0 @@ -# how much the execution price is allowed to move unfavorably from the trade -# execution price. It uses a rational number for precision. -allowedSlippage: '2/100' - -# the maximum gas allowed for a defira trade. -gasLimitEstimate: 150688 - -# how long a trade is valid in seconds. After time passes defira will not -# perform the trade, but the gas will still be spent. -ttl: 600 - -contractAddresses: - mainnet: - routerAddress: '0x3C8BF7e25EbfAaFb863256A4380A8a93490d8065' - initCodeHash: '0x8e129668eb66a23d5dbb072b9b801a6ca1147df379e11546ad4ac19e28557e6c' - testnet: - routerAddress: '0xA5C5D1fd1Fd07F95359E2bde419CB5B2cdC622A9' - initCodeHash: '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' diff --git a/src/templates/root.yml b/src/templates/root.yml index cdc375aa71..1ef1b47bc8 100644 --- a/src/templates/root.yml +++ b/src/templates/root.yml @@ -28,10 +28,6 @@ configurations: configurationPath: polygon.yml schemaPath: ethereum-schema.json - $namespace defira: - configurationPath: defira.yml - schemaPath: defira-schema.json - $namespace near: configurationPath: near.yml schemaPath: ethereum-schema.json diff --git a/test-bronze/chains/harmony/harmony.test.ts b/test-bronze/chains/harmony/harmony.test.ts index 15b937f9fb..8335e7704a 100644 --- a/test-bronze/chains/harmony/harmony.test.ts +++ b/test-bronze/chains/harmony/harmony.test.ts @@ -1,6 +1,5 @@ import { Harmony } from '../../../src/chains/harmony/harmony'; import { patchEVMNonceManager } from '../../../test/evm.nonce.mock'; -import { DefiraConfig } from '../../../src/connectors/defira/defira.config'; let harmony: Harmony; @@ -13,22 +12,3 @@ beforeAll(async () => { afterAll(async () => { await harmony.close(); }); - -describe('getSpender', () => { - describe('get defira', () => { - it('returns defira mainnet router address', () => { - const dfkAddress = harmony.getSpender('defira'); - expect(dfkAddress.toLowerCase()).toEqual( - DefiraConfig.config.routerAddress('mainnet').toLowerCase() - ); - }); - }); - describe('get defira', () => { - it('returns defira mainnet router address', () => { - const dfkAddress = harmony.getSpender('defira'); - expect(dfkAddress.toLowerCase()).toEqual( - DefiraConfig.config.routerAddress('mainnet').toLowerCase() - ); - }); - }); -}); diff --git a/test-bronze/chains/harmony/harmony.validators.test.ts b/test-bronze/chains/harmony/harmony.validators.test.ts index 6c1889e675..25ea291f4f 100644 --- a/test-bronze/chains/harmony/harmony.validators.test.ts +++ b/test-bronze/chains/harmony/harmony.validators.test.ts @@ -82,14 +82,6 @@ describe('validateSpender', () => { ).toEqual([]); }); - it("valid when req.spender is 'defira'", () => { - expect( - validateSpender({ - spender: 'defira', - }) - ).toEqual([]); - }); - it('return error when req.spender does not exist', () => { expect( validateSpender({ diff --git a/test-bronze/chains/near/near.controllers.test.ts b/test-bronze/chains/near/near.controllers.test.ts index 8677c1814e..3151b7704c 100644 --- a/test-bronze/chains/near/near.controllers.test.ts +++ b/test-bronze/chains/near/near.controllers.test.ts @@ -20,7 +20,6 @@ const zeroAddress = beforeAll(async () => { near = Near.getInstance('testnet'); near.getTokenList = jest.fn().mockReturnValue(getTokenListData); - await near.init(); }); afterEach(() => { @@ -40,6 +39,18 @@ const patchGetTransaction = () => { patch(near, 'getTransaction', () => getTransactionData); }; +describe('init', () => { + it('should wait for the first init() call to finish in future immediate init() calls', async () => { + let firstCallFullfilled = false; + near.init().then(() => { + firstCallFullfilled = true; + }); + await near.init().then(() => { + expect(firstCallFullfilled).toEqual(true); + }); + }); +}); + describe('poll', () => { it('return transaction data for given signature', async () => { patchGetCurrentBlockNumber(); diff --git a/test-bronze/chains/tezos/tezos.test.ts b/test-bronze/chains/tezos/tezos.test.ts index 74849f14f9..3fa4141a45 100644 --- a/test-bronze/chains/tezos/tezos.test.ts +++ b/test-bronze/chains/tezos/tezos.test.ts @@ -66,8 +66,14 @@ describe('Tezos', () => { describe('Tezos Base', () => { - beforeAll(async () => { - await tezos.init(); + it('should wait for the first init() call to finish in future immediate init() calls', async () => { + let firstCallFullfilled = false; + tezos.init().then(() => { + firstCallFullfilled = true; + }); + await tezos.init().then(() => { + expect(firstCallFullfilled).toEqual(true); + }); }); it('should be ready', () => { diff --git a/test-bronze/chains/xdc/xdc.test.ts b/test-bronze/chains/xdc/xdc.test.ts index 5f37d4d146..d21075d616 100644 --- a/test-bronze/chains/xdc/xdc.test.ts +++ b/test-bronze/chains/xdc/xdc.test.ts @@ -29,8 +29,6 @@ beforeAll(async () => { // Return the mocked token list instead of getting the list from github patch(xdc, 'getTokenList', () => TOKENS); patchEVMNonceManager(xdc.nonceManager); - - await xdc.init(); }); beforeEach(() => { @@ -45,6 +43,18 @@ afterAll(async () => { await xdc.close(); }); +describe('init', () => { + it('should wait for the first init() call to finish in future immediate init() calls', async () => { + let firstCallFullfilled = false; + xdc.init().then(() => { + firstCallFullfilled = true; + }); + await xdc.init().then(() => { + expect(firstCallFullfilled).toEqual(true); + }); + }); +}); + describe('verify xdc storedTokenList', () => { it('Should only return tokens in the chain', async () => { const tokenList = xdc.storedTokenList; diff --git a/test-bronze/connectors/defira/defira.routes.test.ts b/test-bronze/connectors/defira/defira.routes.test.ts deleted file mode 100644 index 139562baf9..0000000000 --- a/test-bronze/connectors/defira/defira.routes.test.ts +++ /dev/null @@ -1,669 +0,0 @@ -import express from 'express'; -import { Express } from 'express-serve-static-core'; -import request from 'supertest'; -import { Harmony } from '../../../src/chains/harmony/harmony'; -import { Defira } from '../../../src/connectors/defira/defira'; -import { AmmRoutes } from '../../../src/amm/amm.routes'; -import { patch, unpatch } from '../../../test/services/patch'; -import { gasCostInEthString } from '../../../src/services/base'; -let app: Express; -let harmony: Harmony; -let defira: Defira; - -beforeAll(async () => { - app = express(); - app.use(express.json()); - harmony = Harmony.getInstance('testnet'); - await harmony.init(); - defira = Defira.getInstance('harmony', 'testnet'); - await defira.init(); - app.use('/amm', AmmRoutes.router); -}); - -afterEach(() => { - unpatch(); -}); - -afterAll(async () => { - await harmony.close(); -}); - -const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; - -const patchGetWallet = () => { - patch(harmony, 'getWallet', () => { - return { - address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', - }; - }); -}; - -const patchInit = () => { - patch(defira, 'init', async () => { - return; - }); -}; - -const patchStoredTokenList = () => { - patch(harmony, 'tokenList', () => { - return [ - { - chainId: 1666700000, - name: 'WONE74', - symbol: 'WONE74', - address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', - decimals: 18, - }, - { - chainId: 1666700000, - name: 'OneETH', - symbol: '1ETH', - address: '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', - decimals: 18, - }, - ]; - }); -}; - -const patchGetTokenBySymbol = () => { - patch(harmony, 'getTokenBySymbol', (symbol: string) => { - if (symbol === 'WONE74') { - return { - chainId: 1666700000, - name: 'WONE74', - symbol: 'WONE74', - address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', - decimals: 18, - }; - } else { - return { - chainId: 1666700000, - name: 'OneETH', - symbol: '1ETH', - address: '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', - decimals: 18, - }; - } - }); -}; - -const patchGetTokenByAddress = () => { - patch(defira, 'getTokenByAddress', () => { - return { - chainId: 1666700000, - name: 'WONE74', - symbol: 'WONE74', - address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', - decimals: 18, - }; - }); -}; - -const patchGasPrice = () => { - patch(harmony, 'gasPrice', () => 100); -}; - -const patchEstimateBuyTrade = () => { - patch(defira, 'estimateBuyTrade', () => { - return { - expectedAmount: { - toSignificant: () => 100, - }, - trade: { - executionPrice: { - invert: jest.fn().mockReturnValue({ - toSignificant: () => 100, - toFixed: () => '100', - }), - }, - }, - }; - }); -}; - -const patchEstimateSellTrade = () => { - patch(defira, 'estimateSellTrade', () => { - return { - expectedAmount: { - toSignificant: () => 100, - }, - trade: { - executionPrice: { - toSignificant: () => 100, - toFixed: () => '100', - }, - }, - }; - }); -}; - -const patchGetNonce = () => { - patch(harmony.nonceManager, 'getNonce', () => 21); -}; - -const patchExecuteTrade = () => { - patch(defira, 'executeTrade', () => { - return { nonce: 21, hash: '000000000000000' }; - }); -}; - -describe('POST /amm/price', () => { - it('should return 200 for BUY', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patchGasPrice(); - patchEstimateBuyTrade(); - patchGetNonce(); - patchExecuteTrade(); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - side: 'BUY', - }) - .set('Accept', 'application/json') - .expect(200) - .then((res: any) => { - expect(res.body.amount).toEqual('10000.000000000000000000'); - expect(res.body.rawAmount).toEqual('10000000000000000000000'); - }); - }); - - it('should return 200 for SELL', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patchGasPrice(); - patchEstimateSellTrade(); - patchGetNonce(); - patchExecuteTrade(); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - side: 'SELL', - }) - .set('Accept', 'application/json') - .expect(200) - .then((res: any) => { - expect(res.body.amount).toEqual('10000.000000000000000000'); - expect(res.body.rawAmount).toEqual('10000000000000000000000'); - }); - }); - - it('should return 500 for unrecognized quote symbol', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: 'DOGE', - base: 'WONE74', - amount: '10000', - side: 'SELL', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 for unrecognized base symbol', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'SHIBA', - amount: '10000', - side: 'SELL', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 for unrecognized base symbol with decimals in the amount and SELL', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'SHIBA', - amount: '10.000', - side: 'SELL', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 for unrecognized base symbol with decimals in the amount and BUY', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'SHIBA', - amount: '10.000', - side: 'BUY', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 when the priceSwapIn operation fails', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patch(defira, 'priceSwapIn', () => { - return 'error'; - }); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: 'DOGE', - base: 'WONE74', - amount: '10000', - side: 'SELL', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 when the priceSwapOut operation fails', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patch(defira, 'priceSwapOut', () => { - return 'error'; - }); - - await request(app) - .post(`/amm/price`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: 'DOGE', - base: 'WONE74', - amount: '10000', - side: 'BUY', - }) - .set('Accept', 'application/json') - .expect(500); - }); -}); - -describe('POST /amm/trade', () => { - const patchForBuy = () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patchGasPrice(); - patchEstimateBuyTrade(); - patchGetNonce(); - patchExecuteTrade(); - }; - it('should return 200 for BUY', async () => { - patchForBuy(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'BUY', - nonce: 21, - }) - .set('Accept', 'application/json') - .expect(200) - .then((res: any) => { - expect(res.body.nonce).toEqual(21); - }); - }); - - it('should return 200 for BUY without nonce parameter', async () => { - patchForBuy(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'BUY', - }) - .set('Accept', 'application/json') - .expect(200); - }); - - it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { - patchForBuy(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'BUY', - nonce: 21, - maxFeePerGas: '5000000000', - maxPriorityFeePerGas: '5000000000', - }) - .set('Accept', 'application/json') - .expect(200); - }); - - const patchForSell = () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patchGasPrice(); - patchEstimateSellTrade(); - patchGetNonce(); - patchExecuteTrade(); - }; - it('should return 200 for SELL', async () => { - patchForSell(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'SELL', - nonce: 21, - }) - .set('Accept', 'application/json') - .expect(200) - .then((res: any) => { - expect(res.body.nonce).toEqual(21); - }); - }); - - it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { - patchForSell(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'SELL', - nonce: 21, - maxFeePerGas: '5000000000', - maxPriorityFeePerGas: '5000000000', - }) - .set('Accept', 'application/json') - .expect(200); - }); - - it('should return 200 for SELL with limitPrice', async () => { - patchForSell(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'SELL', - nonce: 21, - limitPrice: '9', - }) - .set('Accept', 'application/json') - .expect(200); - }); - - it('should return 200 for BUY with limitPrice', async () => { - patchForBuy(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'BUY', - nonce: 21, - limitPrice: '999999999999999999999', - }) - .set('Accept', 'application/json') - .expect(200); - }); - - it('should return 500 for BUY with price smaller than limitPrice', async () => { - patchForBuy(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'BUY', - nonce: 21, - limitPrice: '9', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 for SELL with price higher than limitPrice', async () => { - patchForSell(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'SELL', - nonce: 21, - limitPrice: '99999999999', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 404 when parameters are incorrect', async () => { - patchInit(); - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: 10000, - address: 'da8', - side: 'comprar', - }) - .set('Accept', 'application/json') - .expect(404); - }); - it('should return 500 when the priceSwapIn operation fails', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patch(defira, 'priceSwapIn', () => { - return 'error'; - }); - - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'SELL', - nonce: 21, - maxFeePerGas: '5000000000', - maxPriorityFeePerGas: '5000000000', - }) - .set('Accept', 'application/json') - .expect(500); - }); - - it('should return 500 when the priceSwapOut operation fails', async () => { - patchGetWallet(); - patchInit(); - patchStoredTokenList(); - patchGetTokenBySymbol(); - patchGetTokenByAddress(); - patch(defira, 'priceSwapOut', () => { - return 'error'; - }); - - await request(app) - .post(`/amm/trade`) - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - quote: '1ETH', - base: 'WONE74', - amount: '10000', - address, - side: 'BUY', - nonce: 21, - maxFeePerGas: '5000000000', - maxPriorityFeePerGas: '5000000000', - }) - .set('Accept', 'application/json') - .expect(500); - }); -}); - -describe('POST /amm/estimateGas', () => { - it('should return 200 for valid connector', async () => { - patchInit(); - patchGasPrice(); - - await request(app) - .post('/amm/estimateGas') - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'defira', - }) - .set('Accept', 'application/json') - .expect(200) - .then((res: any) => { - expect(res.body.network).toEqual('testnet'); - expect(res.body.gasPrice).toEqual(100); - expect(res.body.gasCost).toEqual( - gasCostInEthString(100, defira.gasLimitEstimate) - ); - }); - }); - - it('should return 500 for invalid connector', async () => { - patchInit(); - patchGasPrice(); - - await request(app) - .post('/amm/estimateGas') - .send({ - chain: 'harmony', - network: 'testnet', - connector: 'pangolin', - }) - .set('Accept', 'application/json') - .expect(500); - }); -}); diff --git a/test-bronze/connectors/defira/defira.test.ts b/test-bronze/connectors/defira/defira.test.ts deleted file mode 100644 index 5a07674d47..0000000000 --- a/test-bronze/connectors/defira/defira.test.ts +++ /dev/null @@ -1,182 +0,0 @@ -jest.useFakeTimers(); -const { MockProvider } = require('mock-ethers-provider'); -import { FACTORY_ADDRESS } from '@zuzu-cat/defira-sdk'; -import { Defira } from '../../../src/connectors/defira/defira'; -import { patch, unpatch } from '../../../test/services/patch'; -import { UniswapishPriceError } from '../../../src/services/error-handler'; -import { Token, CurrencyAmount, TradeType, Percent } from '@uniswap/sdk-core'; -import { Trade, Pair, Route } from '@zuzu-cat/defira-sdk'; -import { BigNumber } from 'ethers'; -import { Harmony } from '../../../src/chains/harmony/harmony'; -import { patchEVMNonceManager } from '../../../test/evm.nonce.mock'; -import { DefiraConfig } from '../../../src/connectors/defira/defira.config'; -import { abi as routerAbi } from '../../../src/connectors/defira/defira_v2_router_abi.json'; - -let harmony: Harmony; -let defira: Defira; - -const WONE = new Token( - 3, - '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', - 18, - 'WONE' -); -const ETH = new Token( - 3, - '0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2', - 18, - 'ETH' -); - -let mockProvider: typeof MockProvider; - -beforeAll(async () => { - harmony = Harmony.getInstance('testnet'); - patchEVMNonceManager(harmony.nonceManager); - - defira = Defira.getInstance('harmony', 'testnet'); - await defira.init(); -}); - -beforeEach(() => { - mockProvider = new MockProvider(); - patchEVMNonceManager(harmony.nonceManager); -}); - -afterEach(() => { - unpatch(); -}); - -afterAll(async () => { - await harmony.close(); -}); - -const patchMockProvider = () => { - mockProvider.setMockContract( - DefiraConfig.config.routerAddress('testnet'), - routerAbi - ); - patch(defira, 'provider', () => { - return mockProvider; - }); -}; - -const patchFetchData = () => { - patch(defira, 'fetchPairData', () => { - return new Pair( - CurrencyAmount.fromRawAmount(WONE, '2000000000000000000'), - CurrencyAmount.fromRawAmount(ETH, '1000000000000000000') - ); - }); -}; - -const patchTrade = (key: string, error?: Error) => { - patch(Trade, key, () => { - if (error) return []; - const WONE_ETH = new Pair( - CurrencyAmount.fromRawAmount(WONE, '2000000000000000000'), - CurrencyAmount.fromRawAmount(ETH, '1000000000000000000') - ); - const ETH_TO_WONE = new Route([WONE_ETH], ETH, WONE); - return [ - new Trade( - ETH_TO_WONE, - CurrencyAmount.fromRawAmount(ETH, '1000000000000000'), - TradeType.EXACT_INPUT - ), - ]; - }); -}; - -describe('verify defira gasLimitEstimate', () => { - it('Should initially match the config for mainnet', () => { - expect(defira.gasLimitEstimate).toEqual( - DefiraConfig.config.gasLimitEstimate() - ); - }); -}); - -describe('verify defira getAllowedSlippage', () => { - it('Should parse simple fractions', () => { - expect(defira.getAllowedSlippage('3/100')).toEqual(new Percent('3', '100')); - }); -}); - -describe('verify defira factory', () => { - const expectedFactoryAddress = FACTORY_ADDRESS; - beforeEach(() => { - patchMockProvider(); - mockProvider.stub( - DefiraConfig.config.routerAddress('testnet'), - 'factory', - expectedFactoryAddress - ); - }); - it('Returns the factory address via the provider', async () => { - const factoryAddress = await defira.factory; - expect(factoryAddress).toEqual(expectedFactoryAddress); - }); -}); - -describe('verify defira initCodeHash', () => { - it('Should return the testnet factory initCodeHash', () => { - expect(defira.initCodeHash).toEqual( - DefiraConfig.config.initCodeHash('testnet') - ); - }); -}); - -describe('verify defira estimateSellTrade', () => { - it('Should return an ExpectedTrade when available', async () => { - patchFetchData(); - patchTrade('bestTradeExactIn'); - - const expectedTrade = await defira.estimateSellTrade( - WONE, - ETH, - BigNumber.from(1) - ); - expect(expectedTrade).toHaveProperty('trade'); - expect(expectedTrade).toHaveProperty('expectedAmount'); - }); - - it('Should throw an error if no pair is available', async () => { - patchFetchData(); - patchTrade('bestTradeExactIn', new Error('error getting trade')); - - await expect(async () => { - await defira.estimateSellTrade(WONE, ETH, BigNumber.from(1)); - }).rejects.toThrow(UniswapishPriceError); - }); -}); - -describe('verify defira estimateBuyTrade', () => { - it('Should return an ExpectedTrade when available', async () => { - patchFetchData(); - patchTrade('bestTradeExactOut'); - - const expectedTrade = await defira.estimateBuyTrade( - WONE, - ETH, - BigNumber.from(1) - ); - expect(expectedTrade).toHaveProperty('trade'); - expect(expectedTrade).toHaveProperty('expectedAmount'); - }); - - it('Should return an error if no pair is available', async () => { - patchFetchData(); - patchTrade('bestTradeExactOut', new Error('error getting trade')); - - await expect(async () => { - await defira.estimateBuyTrade(WONE, ETH, BigNumber.from(1)); - }).rejects.toThrow(UniswapishPriceError); - }); -}); - -describe('verify defira Token List', () => { - it('Should return a token by address', async () => { - const token = defira.getTokenByAddress(ETH.address); - expect(token).toBeInstanceOf(Token); - }); -}); diff --git a/test-helpers/curl/curl.sh b/test-helpers/curl/curl.sh index 3219e1c177..e59d1fa459 100644 --- a/test-helpers/curl/curl.sh +++ b/test-helpers/curl/curl.sh @@ -111,8 +111,6 @@ curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: app curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/price_traderjoe.json)" https://localhost:15888/amm/price | jq -curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/price_defira.json)" https://localhost:15888/amm/price | jq - curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/price_mad_meerkat.json)" https://localhost:15888/amm/price | jq curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/price_vvs.json)" https://localhost:15888/amm/price | jq diff --git a/test-helpers/curl/requests/harmony_testnet_defira_trade.json b/test-helpers/curl/requests/harmony_testnet_defira_trade.json deleted file mode 100644 index ca7d1fd09d..0000000000 --- a/test-helpers/curl/requests/harmony_testnet_defira_trade.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "address": "$ETH_ADDRESS", - "quote": "1ETH", - "base": "WONE74", - "amount": "0.01", - "side": "SELL", - "chain": "harmony", - "network": "testnet", - "connector": "defira" -} diff --git a/test-helpers/curl/requests/price_defira.json b/test-helpers/curl/requests/price_defira.json deleted file mode 100644 index bee2dd0f92..0000000000 --- a/test-helpers/curl/requests/price_defira.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "connector": "defira", - "chain": "harmony", - "network": "mainnet", - "quote": "USDC", - "base": "FIRA", - "amount": "0.1", - "side": "SELL" -} diff --git a/test/chains/ethereum/ethereum.controllers.test.ts b/test/chains/ethereum/ethereum.controllers.test.ts index 74567906f7..a0fd3bc346 100644 --- a/test/chains/ethereum/ethereum.controllers.test.ts +++ b/test/chains/ethereum/ethereum.controllers.test.ts @@ -20,8 +20,6 @@ beforeAll(async () => { eth = Ethereum.getInstance('goerli'); patchEVMNonceManager(eth.nonceManager); - - await eth.init(); }); beforeEach(() => { @@ -41,6 +39,18 @@ afterAll(async () => { const mockAddress = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; // noqa: mock +describe('init', () => { + it('should wait for the first init() call to finish in future immediate init() calls', async () => { + let firstCallFullfilled = false; + eth.init().then(() => { + firstCallFullfilled = true; + }); + await eth.init().then(() => { + expect(firstCallFullfilled).toEqual(true); + }); + }); +}); + describe('nonce', () => { it('return a nonce for a wallet', async () => { patch(eth, 'getWallet', () => { diff --git a/test/services/config-manager-v2.test.ts b/test/services/config-manager-v2.test.ts index b6c7e61207..8bc5798699 100644 --- a/test/services/config-manager-v2.test.ts +++ b/test/services/config-manager-v2.test.ts @@ -45,7 +45,6 @@ describe('Configuration manager v2 tests', () => { it('loading a valid configuration root', (done) => { expect(configManager.get('server.certificatePath')).toBeDefined(); expect(configManager.get('ethereum.networks')).toBeDefined(); - expect(configManager.get('defira.contractAddresses')).toBeDefined(); done(); }); @@ -80,11 +79,6 @@ describe('Configuration manager v2 tests', () => { expect( configManager.get('ethereum.networks.goerli.nativeCurrencySymbol') ).toEqual('ETH'); - expect( - configManager.get('defira.contractAddresses.testnet.initCodeHash') - ).toEqual( - '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' // noqa: mock - ); done(); }); diff --git a/test/services/data/config-manager-v2/test1/defira.yaml b/test/services/data/config-manager-v2/test1/defira.yaml deleted file mode 100644 index 0d0ab84deb..0000000000 --- a/test/services/data/config-manager-v2/test1/defira.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# how much the execution price is allowed to move unfavorably from the trade -# execution price. It uses a rational number for precision. -allowedSlippage: '2/100' - -# the maximum gas allowed for a defira trade. -gasLimit: 150688 - -# how long a trade is valid in seconds. After time passes defira will not -# perform the trade, but the gas will still be sent. -ttl: 600 - -contractAddresses: - testnet: - routerAddress: '0xA5C5D1fd1Fd07F95359E2bde419CB5B2cdC622A9' - initCodeHash: '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' diff --git a/test/services/data/config-manager-v2/test1/root.yml b/test/services/data/config-manager-v2/test1/root.yml index 40bc421bf0..b15c278c49 100644 --- a/test/services/data/config-manager-v2/test1/root.yml +++ b/test/services/data/config-manager-v2/test1/root.yml @@ -20,10 +20,6 @@ configurations: configurationPath: polygon.yml schemaPath: ethereum-schema.json - $namespace defira: - configurationPath: defira.yml - schemaPath: defira-schema.json - $namespace pangolin: configurationPath: pangolin.yml schemaPath: pangolin-schema.json diff --git a/yarn.lock b/yarn.lock index 678651fdf1..b8bd43eef5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -161,6 +161,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.20.5": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" @@ -197,6 +205,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" @@ -213,20 +231,25 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.22.5" "@babel/helper-module-imports@^7.18.6": version "7.18.6" @@ -268,16 +291,33 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.18.6": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" @@ -301,11 +341,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -420,19 +474,28 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3", "@babel/traverse@^7.7.2": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" - integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.3" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.3" - "@babel/types" "^7.21.3" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3", "@babel/traverse@^7.7.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" @@ -445,6 +508,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -895,137 +967,137 @@ "@ethersproject-xdc/abi@file:vendor/@ethersproject-xdc/abi": version "5.7.0" dependencies: - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/hash" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/hash" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abi-5.7.0-d49dfe47-95e5-4f4d-a552-4a8328565e4f-1693604176804/node_modules/@ethersproject-xdc/strings" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/hash" "file:vendor/@ethersproject-xdc/hash" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" "@ethersproject-xdc/abstract-provider@file:vendor/@ethersproject-xdc/abstract-provider": version "5.7.0" dependencies: - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/networks" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/networks" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/transactions" - "@ethersproject-xdc/web" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-provider-5.7.0-62916cee-b974-4773-862c-ef76c3e32fcf-1693604176796/node_modules/@ethersproject-xdc/web" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/networks" "file:vendor/@ethersproject-xdc/networks" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" + "@ethersproject-xdc/web" "file:vendor/@ethersproject-xdc/web" "@ethersproject-xdc/abstract-signer@file:vendor/@ethersproject-xdc/abstract-signer": version "5.7.0" dependencies: - "@ethersproject-xdc/abstract-provider" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-signer-5.7.0-aa661009-57e9-4f4e-b1cb-9ebf81f7b9b0-1693604176802/node_modules/@ethersproject-xdc/abstract-provider" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-signer-5.7.0-aa661009-57e9-4f4e-b1cb-9ebf81f7b9b0-1693604176802/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-signer-5.7.0-aa661009-57e9-4f4e-b1cb-9ebf81f7b9b0-1693604176802/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-signer-5.7.0-aa661009-57e9-4f4e-b1cb-9ebf81f7b9b0-1693604176802/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-abstract-signer-5.7.0-aa661009-57e9-4f4e-b1cb-9ebf81f7b9b0-1693604176802/node_modules/@ethersproject-xdc/properties" + "@ethersproject-xdc/abstract-provider" "file:vendor/@ethersproject-xdc/abstract-provider" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" "@ethersproject-xdc/address@file:vendor/@ethersproject-xdc/address": version "5.7.0" dependencies: - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-address-5.7.0-ed8e1ef0-d764-44cd-bfd9-12b0f6ef7f6f-1693604176795/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-address-5.7.0-ed8e1ef0-d764-44cd-bfd9-12b0f6ef7f6f-1693604176795/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-address-5.7.0-ed8e1ef0-d764-44cd-bfd9-12b0f6ef7f6f-1693604176795/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-address-5.7.0-ed8e1ef0-d764-44cd-bfd9-12b0f6ef7f6f-1693604176795/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/rlp" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-address-5.7.0-ed8e1ef0-d764-44cd-bfd9-12b0f6ef7f6f-1693604176795/node_modules/@ethersproject-xdc/rlp" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/rlp" "file:vendor/@ethersproject-xdc/rlp" "@ethersproject-xdc/base64@file:vendor/@ethersproject-xdc/base64": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-base64-5.7.0-47883570-af4f-4b2f-9d61-77f03b4311d1-1693604176796/node_modules/@ethersproject-xdc/bytes" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" "@ethersproject-xdc/basex@file:vendor/@ethersproject-xdc/basex": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-basex-5.7.0-ca67d617-d1fc-4b52-99da-28aa0d093827-1693604176798/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-basex-5.7.0-ca67d617-d1fc-4b52-99da-28aa0d093827-1693604176798/node_modules/@ethersproject-xdc/properties" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" "@ethersproject-xdc/bignumber@file:vendor/@ethersproject-xdc/bignumber": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-bignumber-5.7.0-734dce0b-ad6e-45ae-b2d5-f28e2f2fb11c-1693604176797/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-bignumber-5.7.0-734dce0b-ad6e-45ae-b2d5-f28e2f2fb11c-1693604176797/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" bn.js "^5.2.1" "@ethersproject-xdc/bytes@file:vendor/@ethersproject-xdc/bytes": version "5.7.0" dependencies: - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-bytes-5.7.0-cca27e60-0846-465b-b0ea-8e61e8cfa8de-1693604176797/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/constants@file:vendor/@ethersproject-xdc/constants": version "5.7.0" dependencies: - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-constants-5.7.0-5c22f7bf-46dd-496f-b015-3a7b184a916d-1693604176798/node_modules/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" "@ethersproject-xdc/contracts@file:vendor/@ethersproject-xdc/contracts": version "5.6.0" dependencies: - "@ethersproject-xdc/abi" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/abi" - "@ethersproject-xdc/abstract-provider" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/abstract-provider" - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-contracts-5.6.0-35a2d1af-e866-49aa-a99a-ef54fb13f934-1693604176820/node_modules/@ethersproject-xdc/transactions" + "@ethersproject-xdc/abi" "file:vendor/@ethersproject-xdc/abi" + "@ethersproject-xdc/abstract-provider" "file:vendor/@ethersproject-xdc/abstract-provider" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" "@ethersproject-xdc/hash@file:vendor/@ethersproject-xdc/hash": version "5.7.0" dependencies: - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/base64" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/base64" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hash-5.7.0-0411c5e1-ed3d-47fa-9f0b-f7728932ab96-1693604176798/node_modules/@ethersproject-xdc/strings" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/base64" "file:vendor/@ethersproject-xdc/base64" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" "@ethersproject-xdc/hdnode@file:vendor/@ethersproject-xdc/hdnode": version "5.7.0" dependencies: - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/basex" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/basex" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/pbkdf2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/pbkdf2" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/sha2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/sha2" - "@ethersproject-xdc/signing-key" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/signing-key" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/strings" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/transactions" - "@ethersproject-xdc/wordlists" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-hdnode-5.7.0-c1c83801-94c0-4a44-b211-1813729c1ba9-1693604176801/node_modules/@ethersproject-xdc/wordlists" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/basex" "file:vendor/@ethersproject-xdc/basex" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/pbkdf2" "file:vendor/@ethersproject-xdc/pbkdf2" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/sha2" "file:vendor/@ethersproject-xdc/sha2" + "@ethersproject-xdc/signing-key" "file:vendor/@ethersproject-xdc/signing-key" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" + "@ethersproject-xdc/wordlists" "file:vendor/@ethersproject-xdc/wordlists" "@ethersproject-xdc/json-wallets@file:vendor/@ethersproject-xdc/json-wallets": version "5.6.0" dependencies: - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/hdnode" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/hdnode" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/pbkdf2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/pbkdf2" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/random" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/random" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/strings" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-json-wallets-5.6.0-a2671b0e-c135-4678-b423-01eb4e93fc7d-1693604176800/node_modules/@ethersproject-xdc/transactions" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/hdnode" "file:vendor/@ethersproject-xdc/hdnode" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/pbkdf2" "file:vendor/@ethersproject-xdc/pbkdf2" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/random" "file:vendor/@ethersproject-xdc/random" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" aes-js "3.0.0" scrypt-js "3.0.1" "@ethersproject-xdc/keccak256@file:vendor/@ethersproject-xdc/keccak256": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-keccak256-5.7.0-bd408158-6aa1-4bf4-b127-fe096ae0dda8-1693604176799/node_modules/@ethersproject-xdc/bytes" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" js-sha3 "0.8.0" "@ethersproject-xdc/logger@file:vendor/@ethersproject-xdc/logger": @@ -1034,67 +1106,67 @@ "@ethersproject-xdc/networks@file:vendor/@ethersproject-xdc/networks": version "5.7.1" dependencies: - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-networks-5.7.1-d3327606-c7c9-4efc-b104-a9a7abe0b9db-1693604176822/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/pbkdf2@file:vendor/@ethersproject-xdc/pbkdf2": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-pbkdf2-5.7.0-aa967ed5-ed84-4dcd-a5ed-cdec7dd36960-1693604176802/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/sha2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-pbkdf2-5.7.0-aa967ed5-ed84-4dcd-a5ed-cdec7dd36960-1693604176802/node_modules/@ethersproject-xdc/sha2" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/sha2" "file:vendor/@ethersproject-xdc/sha2" "@ethersproject-xdc/properties@file:vendor/@ethersproject-xdc/properties": version "5.7.0" dependencies: - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-properties-5.7.0-419f291f-9bc8-46e8-a912-970874b2f256-1693604176816/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/providers@file:vendor/@ethersproject-xdc/providers": version "5.6.2" dependencies: - "@ethersproject-xdc/abstract-provider" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/abstract-provider" - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/basex" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/basex" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/hash" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/hash" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/networks" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/networks" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/random" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/random" - "@ethersproject-xdc/rlp" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/rlp" - "@ethersproject-xdc/sha2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/sha2" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/strings" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/transactions" - "@ethersproject-xdc/web" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-providers-5.6.2-328e0619-4171-4475-aec5-d7783bf72d3f-1693604176803/node_modules/@ethersproject-xdc/web" + "@ethersproject-xdc/abstract-provider" "file:vendor/@ethersproject-xdc/abstract-provider" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/basex" "file:vendor/@ethersproject-xdc/basex" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/hash" "file:vendor/@ethersproject-xdc/hash" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/networks" "file:vendor/@ethersproject-xdc/networks" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/random" "file:vendor/@ethersproject-xdc/random" + "@ethersproject-xdc/rlp" "file:vendor/@ethersproject-xdc/rlp" + "@ethersproject-xdc/sha2" "file:vendor/@ethersproject-xdc/sha2" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" + "@ethersproject-xdc/web" "file:vendor/@ethersproject-xdc/web" bech32 "1.1.4" ws "7.4.6" "@ethersproject-xdc/random@file:vendor/@ethersproject-xdc/random": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-random-5.7.0-82adbea0-926b-4825-88e5-934a2896baa8-1693604176803/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-random-5.7.0-82adbea0-926b-4825-88e5-934a2896baa8-1693604176803/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/rlp@file:vendor/@ethersproject-xdc/rlp": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-rlp-5.7.0-de92d40b-f18c-4db2-9e76-349488c67402-1693604176805/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-rlp-5.7.0-de92d40b-f18c-4db2-9e76-349488c67402-1693604176805/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/sha2@file:vendor/@ethersproject-xdc/sha2": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-sha2-5.7.0-a8681a36-ba30-4c5b-8baf-90abbf93aa4e-1693604176848/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-sha2-5.7.0-a8681a36-ba30-4c5b-8baf-90abbf93aa4e-1693604176848/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" hash.js "1.1.7" "@ethersproject-xdc/signing-key@file:vendor/@ethersproject-xdc/signing-key": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-signing-key-5.7.0-28a30213-4bcf-47a7-8089-c0270c7cf68f-1693604176840/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-signing-key-5.7.0-28a30213-4bcf-47a7-8089-c0270c7cf68f-1693604176840/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-signing-key-5.7.0-28a30213-4bcf-47a7-8089-c0270c7cf68f-1693604176840/node_modules/@ethersproject-xdc/properties" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" bn.js "^5.2.1" elliptic "6.5.4" hash.js "1.1.7" @@ -1102,76 +1174,76 @@ "@ethersproject-xdc/solidity@file:vendor/@ethersproject-xdc/solidity": version "5.6.0" dependencies: - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-solidity-5.6.0-594c888e-95c7-432c-8abb-87d4b1bb1720-1693604176815/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-solidity-5.6.0-594c888e-95c7-432c-8abb-87d4b1bb1720-1693604176815/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-solidity-5.6.0-594c888e-95c7-432c-8abb-87d4b1bb1720-1693604176815/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-solidity-5.6.0-594c888e-95c7-432c-8abb-87d4b1bb1720-1693604176815/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/sha2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-solidity-5.6.0-594c888e-95c7-432c-8abb-87d4b1bb1720-1693604176815/node_modules/@ethersproject-xdc/sha2" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-solidity-5.6.0-594c888e-95c7-432c-8abb-87d4b1bb1720-1693604176815/node_modules/@ethersproject-xdc/strings" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/sha2" "file:vendor/@ethersproject-xdc/sha2" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" "@ethersproject-xdc/strings@file:vendor/@ethersproject-xdc/strings": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-strings-5.7.0-3d6f2882-7684-4fd6-a764-1542bf67d3ae-1693604176819/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-strings-5.7.0-3d6f2882-7684-4fd6-a764-1542bf67d3ae-1693604176819/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-strings-5.7.0-3d6f2882-7684-4fd6-a764-1542bf67d3ae-1693604176819/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/transactions@file:vendor/@ethersproject-xdc/transactions": version "5.7.0" dependencies: - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/rlp" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/rlp" - "@ethersproject-xdc/signing-key" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-transactions-5.7.0-59265007-d937-4896-9cf1-99957b937cf5-1693604176823/node_modules/@ethersproject-xdc/signing-key" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/rlp" "file:vendor/@ethersproject-xdc/rlp" + "@ethersproject-xdc/signing-key" "file:vendor/@ethersproject-xdc/signing-key" "@ethersproject-xdc/units@file:vendor/@ethersproject-xdc/units": version "5.6.0" dependencies: - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-units-5.6.0-c2b99376-72f1-461e-9abb-91e3f283f38b-1693604176837/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-units-5.6.0-c2b99376-72f1-461e-9abb-91e3f283f38b-1693604176837/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-units-5.6.0-c2b99376-72f1-461e-9abb-91e3f283f38b-1693604176837/node_modules/@ethersproject-xdc/logger" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" "@ethersproject-xdc/wallet@file:vendor/@ethersproject-xdc/wallet": version "5.6.0" dependencies: - "@ethersproject-xdc/abstract-provider" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/abstract-provider" - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/hash" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/hash" - "@ethersproject-xdc/hdnode" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/hdnode" - "@ethersproject-xdc/json-wallets" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/json-wallets" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/random" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/random" - "@ethersproject-xdc/signing-key" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/signing-key" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/transactions" - "@ethersproject-xdc/wordlists" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wallet-5.6.0-0c62347a-0fd6-46eb-a4b7-f1eee98cd7dd-1693604176835/node_modules/@ethersproject-xdc/wordlists" + "@ethersproject-xdc/abstract-provider" "file:vendor/@ethersproject-xdc/abstract-provider" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/hash" "file:vendor/@ethersproject-xdc/hash" + "@ethersproject-xdc/hdnode" "file:vendor/@ethersproject-xdc/hdnode" + "@ethersproject-xdc/json-wallets" "file:vendor/@ethersproject-xdc/json-wallets" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/random" "file:vendor/@ethersproject-xdc/random" + "@ethersproject-xdc/signing-key" "file:vendor/@ethersproject-xdc/signing-key" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" + "@ethersproject-xdc/wordlists" "file:vendor/@ethersproject-xdc/wordlists" "@ethersproject-xdc/web@file:vendor/@ethersproject-xdc/web": version "5.7.1" dependencies: - "@ethersproject-xdc/base64" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-web-5.7.1-a8df0d7c-aa0f-4a45-8f3c-6e70e77daa2f-1693604176837/node_modules/@ethersproject-xdc/base64" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-web-5.7.1-a8df0d7c-aa0f-4a45-8f3c-6e70e77daa2f-1693604176837/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-web-5.7.1-a8df0d7c-aa0f-4a45-8f3c-6e70e77daa2f-1693604176837/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-web-5.7.1-a8df0d7c-aa0f-4a45-8f3c-6e70e77daa2f-1693604176837/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-web-5.7.1-a8df0d7c-aa0f-4a45-8f3c-6e70e77daa2f-1693604176837/node_modules/@ethersproject-xdc/strings" + "@ethersproject-xdc/base64" "file:vendor/@ethersproject-xdc/base64" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" "@ethersproject-xdc/wordlists@file:vendor/@ethersproject-xdc/wordlists": version "5.7.0" dependencies: - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wordlists-5.7.0-bde14ed4-f544-4161-90ff-b9f8e3db2a03-1693604176839/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/hash" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wordlists-5.7.0-bde14ed4-f544-4161-90ff-b9f8e3db2a03-1693604176839/node_modules/@ethersproject-xdc/hash" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wordlists-5.7.0-bde14ed4-f544-4161-90ff-b9f8e3db2a03-1693604176839/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wordlists-5.7.0-bde14ed4-f544-4161-90ff-b9f8e3db2a03-1693604176839/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-@ethersproject-xdc-wordlists-5.7.0-bde14ed4-f544-4161-90ff-b9f8e3db2a03-1693604176839/node_modules/@ethersproject-xdc/strings" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/hash" "file:vendor/@ethersproject-xdc/hash" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.12", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" @@ -1261,7 +1333,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.0.1", "@ethersproject/contracts@^5.4.0", "@ethersproject/contracts@^5.6.2", "@ethersproject/contracts@^5.7.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.0.1", "@ethersproject/contracts@^5.4.0", "@ethersproject/contracts@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -1406,7 +1478,7 @@ bech32 "1.1.4" ws "7.4.6" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.4", "@ethersproject/providers@^5.4.0", "@ethersproject/providers@^5.6.8", "@ethersproject/providers@^5.7.0": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.4", "@ethersproject/providers@^5.4.0", "@ethersproject/providers@^5.7.0": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -5563,19 +5635,6 @@ dependencies: tslib "^2.3.0" -"@zuzu-cat/defira-sdk@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@zuzu-cat/defira-sdk/-/defira-sdk-1.0.0.tgz#fc9a6625cb7c91d6a81440a6317faa4e3f326ad1" - integrity sha512-NuxpUe3wGjNFDS8YAI2RHi+KH3/h3q1uH3jx6uXJ1deh0QsaxCS7j+KgFKwpJQAvLUc2/wFJuauT4SOAJfLwIw== - dependencies: - "@ethersproject/address" "^5.0.0" - "@ethersproject/contracts" "^5.6.2" - "@ethersproject/providers" "^5.6.8" - "@ethersproject/solidity" "^5.0.0" - "@uniswap/sdk-core" "^3.0.0-alpha.3" - tiny-invariant "^1.1.0" - tiny-warning "^1.0.3" - JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -8801,36 +8860,36 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: "ethers-xdc@file:./vendor/ethers-xdc": version "5.7.2" dependencies: - "@ethersproject-xdc/abi" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/abi" - "@ethersproject-xdc/abstract-provider" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/abstract-provider" - "@ethersproject-xdc/abstract-signer" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/abstract-signer" - "@ethersproject-xdc/address" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/address" - "@ethersproject-xdc/base64" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/base64" - "@ethersproject-xdc/basex" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/basex" - "@ethersproject-xdc/bignumber" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/bignumber" - "@ethersproject-xdc/bytes" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/bytes" - "@ethersproject-xdc/constants" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/constants" - "@ethersproject-xdc/contracts" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/contracts" - "@ethersproject-xdc/hash" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/hash" - "@ethersproject-xdc/hdnode" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/hdnode" - "@ethersproject-xdc/json-wallets" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/json-wallets" - "@ethersproject-xdc/keccak256" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/keccak256" - "@ethersproject-xdc/logger" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/logger" - "@ethersproject-xdc/networks" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/networks" - "@ethersproject-xdc/pbkdf2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/pbkdf2" - "@ethersproject-xdc/properties" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/properties" - "@ethersproject-xdc/providers" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/providers" - "@ethersproject-xdc/random" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/random" - "@ethersproject-xdc/rlp" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/rlp" - "@ethersproject-xdc/sha2" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/sha2" - "@ethersproject-xdc/signing-key" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/signing-key" - "@ethersproject-xdc/solidity" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/solidity" - "@ethersproject-xdc/strings" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/strings" - "@ethersproject-xdc/transactions" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/transactions" - "@ethersproject-xdc/units" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/units" - "@ethersproject-xdc/wallet" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/wallet" - "@ethersproject-xdc/web" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/web" - "@ethersproject-xdc/wordlists" "file:../../../../../../Users/danilo/Library/Caches/Yarn/v6/npm-ethers-xdc-5.7.2-9b38e7ad-b1f7-4730-8b13-e81e1bf276f8-1693604176769/node_modules/@ethersproject-xdc/wordlists" + "@ethersproject-xdc/abi" "file:vendor/@ethersproject-xdc/abi" + "@ethersproject-xdc/abstract-provider" "file:vendor/@ethersproject-xdc/abstract-provider" + "@ethersproject-xdc/abstract-signer" "file:vendor/@ethersproject-xdc/abstract-signer" + "@ethersproject-xdc/address" "file:vendor/@ethersproject-xdc/address" + "@ethersproject-xdc/base64" "file:vendor/@ethersproject-xdc/base64" + "@ethersproject-xdc/basex" "file:vendor/@ethersproject-xdc/basex" + "@ethersproject-xdc/bignumber" "file:vendor/@ethersproject-xdc/bignumber" + "@ethersproject-xdc/bytes" "file:vendor/@ethersproject-xdc/bytes" + "@ethersproject-xdc/constants" "file:vendor/@ethersproject-xdc/constants" + "@ethersproject-xdc/contracts" "file:vendor/@ethersproject-xdc/contracts" + "@ethersproject-xdc/hash" "file:vendor/@ethersproject-xdc/hash" + "@ethersproject-xdc/hdnode" "file:vendor/@ethersproject-xdc/hdnode" + "@ethersproject-xdc/json-wallets" "file:vendor/@ethersproject-xdc/json-wallets" + "@ethersproject-xdc/keccak256" "file:vendor/@ethersproject-xdc/keccak256" + "@ethersproject-xdc/logger" "file:vendor/@ethersproject-xdc/logger" + "@ethersproject-xdc/networks" "file:vendor/@ethersproject-xdc/networks" + "@ethersproject-xdc/pbkdf2" "file:vendor/@ethersproject-xdc/pbkdf2" + "@ethersproject-xdc/properties" "file:vendor/@ethersproject-xdc/properties" + "@ethersproject-xdc/providers" "file:vendor/@ethersproject-xdc/providers" + "@ethersproject-xdc/random" "file:vendor/@ethersproject-xdc/random" + "@ethersproject-xdc/rlp" "file:vendor/@ethersproject-xdc/rlp" + "@ethersproject-xdc/sha2" "file:vendor/@ethersproject-xdc/sha2" + "@ethersproject-xdc/signing-key" "file:vendor/@ethersproject-xdc/signing-key" + "@ethersproject-xdc/solidity" "file:vendor/@ethersproject-xdc/solidity" + "@ethersproject-xdc/strings" "file:vendor/@ethersproject-xdc/strings" + "@ethersproject-xdc/transactions" "file:vendor/@ethersproject-xdc/transactions" + "@ethersproject-xdc/units" "file:vendor/@ethersproject-xdc/units" + "@ethersproject-xdc/wallet" "file:vendor/@ethersproject-xdc/wallet" + "@ethersproject-xdc/web" "file:vendor/@ethersproject-xdc/web" + "@ethersproject-xdc/wordlists" "file:vendor/@ethersproject-xdc/wordlists" ethers@4.0.0-beta.3: version "4.0.0-beta.3"