@shapeshiftoss/swapper 9.15.0 → 9.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/manager/SwapperManager.js +3 -3
  2. package/dist/swappercli.js +8 -8
  3. package/dist/swappers/cow/CowSwapper.js +1 -1
  4. package/dist/swappers/cow/cowApprovalNeeded/cowApprovalNeeded.js +4 -4
  5. package/dist/swappers/cow/cowApproveInfinite/cowApproveInfinite.js +3 -3
  6. package/dist/swappers/cow/cowBuildTrade/cowBuildTrade.js +11 -11
  7. package/dist/swappers/cow/cowExecuteTrade/cowExecuteTrade.js +7 -7
  8. package/dist/swappers/cow/cowGetTradeTxs/cowGetTradeTxs.js +4 -4
  9. package/dist/swappers/cow/getCowSwapMinMax/getCowSwapMinMax.js +1 -1
  10. package/dist/swappers/cow/getCowSwapTradeQuote/getCowSwapTradeQuote.js +12 -12
  11. package/dist/swappers/cow/utils/blacklist.js +1 -1
  12. package/dist/swappers/cow/utils/cowService.js +2 -2
  13. package/dist/swappers/cow/utils/helpers/helpers.js +7 -7
  14. package/dist/swappers/osmosis/OsmosisSwapper.js +20 -20
  15. package/dist/swappers/osmosis/utils/helpers.d.ts +1 -1
  16. package/dist/swappers/osmosis/utils/helpers.js +35 -35
  17. package/dist/swappers/test/TestSwapper.js +2 -2
  18. package/dist/swappers/thorchain/ThorchainSwapper.js +13 -13
  19. package/dist/swappers/thorchain/buildThorTrade/buildThorTrade.d.ts +1 -1
  20. package/dist/swappers/thorchain/buildThorTrade/buildThorTrade.js +14 -14
  21. package/dist/swappers/thorchain/getThorTradeQuote/getTradeQuote.js +14 -14
  22. package/dist/swappers/thorchain/thorTradeApprovalNeeded/thorTradeApprovalNeeded.d.ts +1 -1
  23. package/dist/swappers/thorchain/thorTradeApprovalNeeded/thorTradeApprovalNeeded.js +7 -7
  24. package/dist/swappers/thorchain/thorTradeApproveInfinite/thorTradeApproveInfinite.d.ts +1 -1
  25. package/dist/swappers/thorchain/thorTradeApproveInfinite/thorTradeApproveInfinite.js +7 -7
  26. package/dist/swappers/thorchain/utils/bitcoin/utils/getThorTxData.js +5 -5
  27. package/dist/swappers/thorchain/utils/constants.js +1 -1
  28. package/dist/swappers/thorchain/utils/cosmos/cosmosTxData.js +6 -6
  29. package/dist/swappers/thorchain/utils/estimateTradeFee/estimateTradeFee.js +6 -6
  30. package/dist/swappers/thorchain/utils/ethereum/makeTradeTx.d.ts +1 -1
  31. package/dist/swappers/thorchain/utils/ethereum/makeTradeTx.js +6 -6
  32. package/dist/swappers/thorchain/utils/ethereum/utils/getThorTxData.js +5 -5
  33. package/dist/swappers/thorchain/utils/getLimit/getLimit.d.ts +1 -1
  34. package/dist/swappers/thorchain/utils/getLimit/getLimit.js +2 -2
  35. package/dist/swappers/thorchain/utils/getPriceRatio/getPriceRatio.js +3 -3
  36. package/dist/swappers/thorchain/utils/getTradeRate/getTradeRate.js +5 -5
  37. package/dist/swappers/thorchain/utils/getUsdRate/getUsdRate.d.ts +1 -1
  38. package/dist/swappers/thorchain/utils/getUsdRate/getUsdRate.js +4 -4
  39. package/dist/swappers/thorchain/utils/makeSwapMemo/makeSwapMemo.d.ts +1 -1
  40. package/dist/swappers/thorchain/utils/makeSwapMemo/makeSwapMemo.js +4 -4
  41. package/dist/swappers/thorchain/utils/test-data/midgardResponse.js +11 -11
  42. package/dist/swappers/thorchain/utils/test-data/setupThorswapDeps.js +9 -9
  43. package/dist/swappers/thorchain/utils/thorService.js +2 -2
  44. package/dist/swappers/thorchain/utils/txFeeHelpers/btcTxFees/getBtcTxFees.d.ts +1 -1
  45. package/dist/swappers/thorchain/utils/txFeeHelpers/btcTxFees/getBtcTxFees.js +4 -4
  46. package/dist/swappers/thorchain/utils/txFeeHelpers/ethTxFees/getEthTxFees.d.ts +1 -1
  47. package/dist/swappers/thorchain/utils/txFeeHelpers/ethTxFees/getEthTxFees.js +7 -7
  48. package/dist/swappers/utils/abi/erc20-abi.js +54 -54
  49. package/dist/swappers/utils/abi/erc20Allowance-abi.js +7 -7
  50. package/dist/swappers/utils/helpers/helpers.d.ts +4 -4
  51. package/dist/swappers/utils/helpers/helpers.js +13 -13
  52. package/dist/swappers/utils/test-data/assets.js +8 -8
  53. package/dist/swappers/utils/test-data/setupDeps.js +3 -3
  54. package/dist/swappers/utils/test-data/setupSwapQuote.js +3 -3
  55. package/dist/swappers/zrx/ZrxSwapper.js +2 -2
  56. package/dist/swappers/zrx/getZrxMinMax/getZrxMinMax.js +1 -1
  57. package/dist/swappers/zrx/getZrxTradeQuote/getZrxTradeQuote.js +7 -7
  58. package/dist/swappers/zrx/utils/blacklist.js +1 -1
  59. package/dist/swappers/zrx/utils/helpers/helpers.js +6 -6
  60. package/dist/swappers/zrx/utils/test-data/setupZrxSwapQuote.js +2 -2
  61. package/dist/swappers/zrx/utils/zrxService.js +2 -2
  62. package/dist/swappers/zrx/zrxApprovalNeeded/zrxApprovalNeeded.js +6 -6
  63. package/dist/swappers/zrx/zrxApprove/zrxApprove.js +6 -6
  64. package/dist/swappers/zrx/zrxBuildTrade/zrxBuildTrade.js +13 -11
  65. package/dist/swappers/zrx/zrxExecuteTrade/zrxExecuteTrade.js +6 -6
  66. package/package.json +1 -1
@@ -9,7 +9,7 @@ const api_1 = require("../api");
9
9
  function validateSwapper(swapper) {
10
10
  if (!(typeof swapper === 'object' && typeof swapper.getType === 'function'))
11
11
  throw new api_1.SwapError('[validateSwapper] - invalid swapper instance', {
12
- code: api_1.SwapErrorTypes.MANAGER_ERROR
12
+ code: api_1.SwapErrorTypes.MANAGER_ERROR,
13
13
  });
14
14
  }
15
15
  // TODO: remove me
@@ -38,7 +38,7 @@ class SwapperManager {
38
38
  if (!swapper)
39
39
  throw new api_1.SwapError('[getSwapper] - swapperType doesnt exist', {
40
40
  code: api_1.SwapErrorTypes.MANAGER_ERROR,
41
- details: { swapperType }
41
+ details: { swapperType },
42
42
  });
43
43
  return swapper;
44
44
  }
@@ -52,7 +52,7 @@ class SwapperManager {
52
52
  if (!swapper)
53
53
  throw new api_1.SwapError('[removeSwapper] - swapperType doesnt exist', {
54
54
  code: api_1.SwapErrorTypes.MANAGER_ERROR,
55
- details: { swapperType }
55
+ details: { swapperType },
56
56
  });
57
57
  this.swappers.delete(swapperType);
58
58
  return this;
@@ -38,7 +38,7 @@ const web3_1 = __importDefault(require("web3"));
38
38
  const SwapperManager_1 = require("./manager/SwapperManager");
39
39
  const ZrxSwapper_1 = require("./swappers/zrx/ZrxSwapper");
40
40
  dotenv_1.default.config();
41
- const { UNCHAINED_HTTP_API = 'http://localhost:31300', UNCHAINED_WS_API = 'wss://localhost:31300', ETH_NODE_URL = 'http://localhost:3000', DEVICE_ID = 'device123', MNEMONIC = 'all all all all all all all all all all all all' } = process.env;
41
+ const { UNCHAINED_HTTP_API = 'http://localhost:31300', UNCHAINED_WS_API = 'wss://localhost:31300', ETH_NODE_URL = 'http://localhost:3000', DEVICE_ID = 'device123', MNEMONIC = 'all all all all all all all all all all all all', } = process.env;
42
42
  const toBaseUnit = (amount, precision) => {
43
43
  return new bignumber_js_1.default(amount)
44
44
  .multipliedBy(new bignumber_js_1.default(10).exponentiatedBy(new bignumber_js_1.default(precision)))
@@ -53,7 +53,7 @@ const getWallet = async () => {
53
53
  }
54
54
  const nativeAdapterArgs = {
55
55
  mnemonic: MNEMONIC,
56
- deviceId: DEVICE_ID
56
+ deviceId: DEVICE_ID,
57
57
  };
58
58
  const wallet = new hdwallet_native_1.NativeHDWallet(nativeAdapterArgs);
59
59
  await wallet.initialize();
@@ -88,10 +88,10 @@ const main = async () => {
88
88
  providers: {
89
89
  ws: new unchained.ws.Client(UNCHAINED_WS_API),
90
90
  http: new unchained.ethereum.V1Api(new unchained.ethereum.Configuration({
91
- basePath: UNCHAINED_HTTP_API
92
- }))
91
+ basePath: UNCHAINED_HTTP_API,
92
+ })),
93
93
  },
94
- rpcUrl: 'https://mainnet.infura.io/v3/d734c7eebcdf400185d7eb67322a7e57'
94
+ rpcUrl: 'https://mainnet.infura.io/v3/d734c7eebcdf400185d7eb67322a7e57',
95
95
  });
96
96
  const web3Provider = new web3_1.default.providers.HttpProvider(ETH_NODE_URL);
97
97
  const web3 = new web3_1.default(web3Provider);
@@ -101,7 +101,7 @@ const main = async () => {
101
101
  manager.addSwapper(zrxSwapper);
102
102
  const swapper = await manager.getBestSwapper({
103
103
  sellAssetId: 'eip155:1/slip44:60',
104
- buyAssetId: 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d'
104
+ buyAssetId: 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d',
105
105
  });
106
106
  if (!swapper)
107
107
  return;
@@ -116,7 +116,7 @@ const main = async () => {
116
116
  sellAssetAccountNumber: 0,
117
117
  sendMax: false,
118
118
  receiveAddress: '0xc770eefad204b5180df6a14ee197d99d808ee52d',
119
- wallet
119
+ wallet,
120
120
  });
121
121
  }
122
122
  catch (e) {
@@ -137,7 +137,7 @@ const main = async () => {
137
137
  sellAmount: sellAmountBase,
138
138
  sellAsset,
139
139
  sellAssetAccountNumber: 0,
140
- receiveAddress: '0xc770eefad204b5180df6a14ee197d99d808ee52d'
140
+ receiveAddress: '0xc770eefad204b5180df6a14ee197d99d808ee52d',
141
141
  });
142
142
  const txid = await swapper.executeTrade({ trade, wallet });
143
143
  console.info('broadcast tx with id: ', txid);
@@ -54,7 +54,7 @@ class CowSwapper {
54
54
  }
55
55
  async approveAmount() {
56
56
  throw new api_1.SwapError('CowSwapper: approveAmount unimplemented', {
57
- code: api_1.SwapErrorTypes.RESPONSE_ERROR
57
+ code: api_1.SwapErrorTypes.RESPONSE_ERROR,
58
58
  });
59
59
  }
60
60
  filterBuyAssetsBySellAssetId(args) {
@@ -14,7 +14,7 @@ async function cowApprovalNeeded({ adapter, web3 }, { quote, wallet }) {
14
14
  if (assetNamespace !== 'erc20') {
15
15
  throw new api_1.SwapError('[cowApprovalNeeded] - unsupported asset namespace', {
16
16
  code: api_1.SwapErrorTypes.UNSUPPORTED_NAMESPACE,
17
- details: { assetNamespace }
17
+ details: { assetNamespace },
18
18
  });
19
19
  }
20
20
  const receiveAddress = await adapter.getAddress({ wallet });
@@ -23,11 +23,11 @@ async function cowApprovalNeeded({ adapter, web3 }, { quote, wallet }) {
23
23
  erc20AllowanceAbi: erc20Allowance_abi_1.erc20AllowanceAbi,
24
24
  sellAssetErc20Address,
25
25
  spenderAddress: constants_1.COW_SWAP_VAULT_RELAYER_ADDRESS,
26
- ownerAddress: receiveAddress
26
+ ownerAddress: receiveAddress,
27
27
  });
28
28
  const allowanceOnChain = (0, bignumber_1.bnOrZero)(allowanceResult);
29
29
  return {
30
- approvalNeeded: allowanceOnChain.lte((0, bignumber_1.bnOrZero)(quote.sellAmount))
30
+ approvalNeeded: allowanceOnChain.lte((0, bignumber_1.bnOrZero)(quote.sellAmount)),
31
31
  };
32
32
  }
33
33
  catch (e) {
@@ -35,7 +35,7 @@ async function cowApprovalNeeded({ adapter, web3 }, { quote, wallet }) {
35
35
  throw e;
36
36
  throw new api_1.SwapError('[cowApprovalNeeded]', {
37
37
  cause: e,
38
- code: api_1.SwapErrorTypes.CHECK_APPROVAL_FAILED
38
+ code: api_1.SwapErrorTypes.CHECK_APPROVAL_FAILED,
39
39
  });
40
40
  }
41
41
  }
@@ -10,12 +10,12 @@ async function cowApproveInfinite({ adapter, web3 }, { quote, wallet }) {
10
10
  const allowanceGrantRequired = await (0, helpers_1.grantAllowance)({
11
11
  quote: {
12
12
  ...quote,
13
- sellAmount: constants_1.MAX_ALLOWANCE
13
+ sellAmount: constants_1.MAX_ALLOWANCE,
14
14
  },
15
15
  wallet,
16
16
  adapter,
17
17
  erc20Abi: erc20_abi_1.erc20Abi,
18
- web3
18
+ web3,
19
19
  });
20
20
  return allowanceGrantRequired;
21
21
  }
@@ -24,7 +24,7 @@ async function cowApproveInfinite({ adapter, web3 }, { quote, wallet }) {
24
24
  throw e;
25
25
  throw new api_1.SwapError('[cowApproveInfinite]', {
26
26
  cause: e,
27
- code: api_1.SwapErrorTypes.APPROVE_INFINITE_FAILED
27
+ code: api_1.SwapErrorTypes.APPROVE_INFINITE_FAILED,
28
28
  });
29
29
  }
30
30
  }
@@ -19,13 +19,13 @@ async function cowBuildTrade(deps, input) {
19
19
  if (sellAssetNamespace !== 'erc20') {
20
20
  throw new api_1.SwapError('[cowBuildTrade] - Sell asset needs to be ERC-20 to use CowSwap', {
21
21
  code: api_1.SwapErrorTypes.UNSUPPORTED_PAIR,
22
- details: { sellAssetNamespace }
22
+ details: { sellAssetNamespace },
23
23
  });
24
24
  }
25
25
  if (buyAssetChainId !== types_1.KnownChainIds.EthereumMainnet) {
26
26
  throw new api_1.SwapError('[cowBuildTrade] - Buy asset needs to be on ETH mainnet to use CowSwap', {
27
27
  code: api_1.SwapErrorTypes.UNSUPPORTED_PAIR,
28
- details: { buyAssetChainId }
28
+ details: { buyAssetChainId },
29
29
  });
30
30
  }
31
31
  const buyToken = buyAsset.assetId !== caip_1.ethAssetId ? buyAssetErc20Address : constants_1.COW_SWAP_ETH_MARKER_ADDRESS;
@@ -54,21 +54,21 @@ async function cowBuildTrade(deps, input) {
54
54
  partiallyFillable: false,
55
55
  from: receiveAddress,
56
56
  kind: constants_1.ORDER_KIND_SELL,
57
- sellAmountBeforeFee: normalizedSellAmount
57
+ sellAmountBeforeFee: normalizedSellAmount,
58
58
  });
59
- const { data: { quote } } = quoteResponse;
59
+ const { data: { quote }, } = quoteResponse;
60
60
  const buyCryptoAmount = (0, bignumber_1.bn)(quote.buyAmount).div((0, bignumber_1.bn)(10).exponentiatedBy(buyAsset.precision));
61
61
  const sellCryptoAmount = (0, bignumber_1.bn)(quote.sellAmount).div((0, bignumber_1.bn)(10).exponentiatedBy(sellAsset.precision));
62
62
  const rate = buyCryptoAmount.div(sellCryptoAmount).toString();
63
63
  const data = (0, helpers_1.getApproveContractData)({
64
64
  web3,
65
65
  spenderAddress: constants_1.COW_SWAP_VAULT_RELAYER_ADDRESS,
66
- contractAddress: sellAssetErc20Address
66
+ contractAddress: sellAssetErc20Address,
67
67
  });
68
68
  const feeDataOptions = await adapter.getFeeData({
69
69
  to: sellAssetErc20Address,
70
70
  value: '0',
71
- chainSpecific: { from: receiveAddress, contractData: data }
71
+ chainSpecific: { from: receiveAddress, contractData: data },
72
72
  });
73
73
  const feeData = feeDataOptions['fast'];
74
74
  const trade = {
@@ -77,9 +77,9 @@ async function cowBuildTrade(deps, input) {
77
77
  fee: '0',
78
78
  chainSpecific: {
79
79
  estimatedGas: feeData.chainSpecific.gasLimit,
80
- gasPrice: feeData.chainSpecific.gasPrice
80
+ gasPrice: feeData.chainSpecific.gasPrice,
81
81
  },
82
- tradeFee: '0' // Trade fees for buy Asset are always 0 since trade fees are subtracted from sell asset
82
+ tradeFee: '0', // Trade fees for buy Asset are always 0 since trade fees are subtracted from sell asset
83
83
  },
84
84
  sellAmount: normalizedSellAmount,
85
85
  buyAmount: quote.buyAmount,
@@ -89,7 +89,7 @@ async function cowBuildTrade(deps, input) {
89
89
  sellAssetAccountNumber,
90
90
  receiveAddress,
91
91
  feeAmountInSellToken: quote.feeAmount,
92
- sellAmountWithoutFee: quote.sellAmount
92
+ sellAmountWithoutFee: quote.sellAmount,
93
93
  };
94
94
  const allowanceRequired = await (0, helpers_1.getAllowanceRequired)({
95
95
  adapter,
@@ -98,7 +98,7 @@ async function cowBuildTrade(deps, input) {
98
98
  receiveAddress,
99
99
  sellAmount: quote.sellAmount,
100
100
  web3: deps.web3,
101
- erc20AllowanceAbi: erc20Allowance_abi_1.erc20AllowanceAbi
101
+ erc20AllowanceAbi: erc20Allowance_abi_1.erc20AllowanceAbi,
102
102
  });
103
103
  if (!allowanceRequired.isZero()) {
104
104
  trade.feeData.chainSpecific.approvalFee = (0, bignumber_1.bnOrZero)(feeData.chainSpecific.gasLimit)
@@ -112,7 +112,7 @@ async function cowBuildTrade(deps, input) {
112
112
  throw e;
113
113
  throw new api_1.SwapError('[cowBuildTrade]', {
114
114
  cause: e,
115
- code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED
115
+ code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED,
116
116
  });
117
117
  }
118
118
  }
@@ -18,13 +18,13 @@ async function cowExecuteTrade({ apiUrl, adapter }, { trade, wallet }) {
18
18
  if (sellAssetNamespace !== 'erc20') {
19
19
  throw new api_1.SwapError('[cowExecuteTrade] - Sell asset needs to be ERC-20 to use CowSwap', {
20
20
  code: api_1.SwapErrorTypes.UNSUPPORTED_PAIR,
21
- details: { sellAssetNamespace }
21
+ details: { sellAssetNamespace },
22
22
  });
23
23
  }
24
24
  if (buyAssetChainId !== types_1.KnownChainIds.EthereumMainnet) {
25
25
  throw new api_1.SwapError('[cowExecuteTrade] - Buy asset needs to be on ETH mainnet to use CowSwap', {
26
26
  code: api_1.SwapErrorTypes.UNSUPPORTED_PAIR,
27
- details: { buyAssetChainId }
27
+ details: { buyAssetChainId },
28
28
  });
29
29
  }
30
30
  const buyToken = buyAsset.assetId !== caip_1.ethAssetId ? buyAssetErc20Address : constants_1.COW_SWAP_ETH_MARKER_ADDRESS;
@@ -41,7 +41,7 @@ async function cowExecuteTrade({ apiUrl, adapter }, { trade, wallet }) {
41
41
  partiallyFillable: false,
42
42
  receiver: trade.receiveAddress,
43
43
  sellTokenBalance: constants_1.ERC20_TOKEN_BALANCE,
44
- buyTokenBalance: constants_1.ERC20_TOKEN_BALANCE
44
+ buyTokenBalance: constants_1.ERC20_TOKEN_BALANCE,
45
45
  };
46
46
  // We need to construct orderDigest, sign it and send it to cowSwap API, in order to submit a trade
47
47
  // Some context about this : https://docs.cow.fi/tutorials/how-to-submit-orders-via-the-api/4.-signing-the-order
@@ -51,9 +51,9 @@ async function cowExecuteTrade({ apiUrl, adapter }, { trade, wallet }) {
51
51
  const message = {
52
52
  messageToSign: {
53
53
  addressNList: (0, hdwallet_core_1.bip32ToAddressNList)((0, chain_adapters_1.toRootDerivationPath)(bip44Params)),
54
- message: ethers_1.ethers.utils.arrayify(orderDigest)
54
+ message: ethers_1.ethers.utils.arrayify(orderDigest),
55
55
  },
56
- wallet
56
+ wallet,
57
57
  };
58
58
  const signatureOrderDigest = await adapter.signMessage(message);
59
59
  // Passing the signature through split/join to normalize the `v` byte.
@@ -83,7 +83,7 @@ async function cowExecuteTrade({ apiUrl, adapter }, { trade, wallet }) {
83
83
  ...orderToSign,
84
84
  signingScheme: constants_1.SIGNING_SCHEME,
85
85
  signature,
86
- from: trade.receiveAddress
86
+ from: trade.receiveAddress,
87
87
  });
88
88
  return { tradeId: ordersResponse.data };
89
89
  }
@@ -92,7 +92,7 @@ async function cowExecuteTrade({ apiUrl, adapter }, { trade, wallet }) {
92
92
  throw e;
93
93
  throw new api_1.SwapError('[cowExecuteTrade]', {
94
94
  cause: e,
95
- code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED
95
+ code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED,
96
96
  });
97
97
  }
98
98
  }
@@ -7,16 +7,16 @@ const cowService_1 = require("../utils/cowService");
7
7
  async function cowGetTradeTxs(deps, input) {
8
8
  try {
9
9
  const getOrdersResponse = await cowService_1.cowService.get(`${deps.apiUrl}/v1/orders/${input.tradeId}`);
10
- const { data: { status } } = getOrdersResponse;
10
+ const { data: { status }, } = getOrdersResponse;
11
11
  if (status !== constants_1.ORDER_STATUS_FULFILLED) {
12
12
  return {
13
- sellTxid: ''
13
+ sellTxid: '',
14
14
  };
15
15
  }
16
16
  const getTradesResponse = await cowService_1.cowService.get(`${deps.apiUrl}/v1/trades/?orderUid=${input.tradeId}`);
17
17
  return {
18
18
  sellTxid: input.tradeId,
19
- buyTxid: getTradesResponse.data[0].txHash
19
+ buyTxid: getTradesResponse.data[0].txHash,
20
20
  };
21
21
  }
22
22
  catch (e) {
@@ -24,7 +24,7 @@ async function cowGetTradeTxs(deps, input) {
24
24
  throw e;
25
25
  throw new api_1.SwapError('[cowGetTradeTxs]', {
26
26
  cause: e,
27
- code: api_1.SwapErrorTypes.GET_TRADE_TXS_FAILED
27
+ code: api_1.SwapErrorTypes.GET_TRADE_TXS_FAILED,
28
28
  });
29
29
  }
30
30
  }
@@ -19,7 +19,7 @@ const getCowSwapMinMax = async (deps, sellAsset, buyAsset) => {
19
19
  const maximum = constants_1.MAX_COWSWAP_TRADE; // Arbitrarily large value. 10e+28 here.
20
20
  return {
21
21
  minimum,
22
- maximum
22
+ maximum,
23
23
  };
24
24
  }
25
25
  catch (e) {
@@ -24,13 +24,13 @@ async function getCowSwapTradeQuote(deps, input) {
24
24
  if (sellAssetNamespace !== 'erc20') {
25
25
  throw new api_1.SwapError('[getCowSwapTradeQuote] - Sell asset needs to be ERC-20 to use CowSwap', {
26
26
  code: api_1.SwapErrorTypes.UNSUPPORTED_PAIR,
27
- details: { sellAssetNamespace }
27
+ details: { sellAssetNamespace },
28
28
  });
29
29
  }
30
30
  if (buyAssetChainId !== types_1.KnownChainIds.EthereumMainnet) {
31
31
  throw new api_1.SwapError('[getCowSwapTradeQuote] - Buy asset needs to be on ETH mainnet to use CowSwap', {
32
32
  code: api_1.SwapErrorTypes.UNSUPPORTED_PAIR,
33
- details: { buyAssetChainId }
33
+ details: { buyAssetChainId },
34
34
  });
35
35
  }
36
36
  const buyToken = buyAsset.assetId !== caip_1.ethAssetId ? buyAssetErc20Address : constants_1.COW_SWAP_ETH_MARKER_ADDRESS;
@@ -47,7 +47,7 @@ async function getCowSwapTradeQuote(deps, input) {
47
47
  partiallyFillable: false,
48
48
  from: constants_1.DEFAULT_ADDRESS,
49
49
  kind: constants_1.ORDER_KIND_SELL,
50
- sellAmountBeforeFee: normalizedSellAmount
50
+ sellAmountBeforeFee: normalizedSellAmount,
51
51
  };
52
52
  /**
53
53
  * /v1/quote
@@ -64,7 +64,7 @@ async function getCowSwapTradeQuote(deps, input) {
64
64
  * }
65
65
  */
66
66
  const quoteResponse = await cowService_1.cowService.post(`${deps.apiUrl}/v1/quote/`, apiInput);
67
- const { data: { quote } } = quoteResponse;
67
+ const { data: { quote }, } = quoteResponse;
68
68
  const buyCryptoAmount = (0, bignumber_1.bn)(quote.buyAmount).div((0, bignumber_1.bn)(10).exponentiatedBy(buyAsset.precision));
69
69
  const sellCryptoAmount = (0, bignumber_1.bn)(quote.sellAmount).div((0, bignumber_1.bn)(10).exponentiatedBy(sellAsset.precision));
70
70
  const rate = buyCryptoAmount.div(sellCryptoAmount).toString();
@@ -72,15 +72,15 @@ async function getCowSwapTradeQuote(deps, input) {
72
72
  const data = (0, helpers_1.getApproveContractData)({
73
73
  web3,
74
74
  spenderAddress: constants_1.COW_SWAP_VAULT_RELAYER_ADDRESS,
75
- contractAddress: sellAssetErc20Address
75
+ contractAddress: sellAssetErc20Address,
76
76
  });
77
77
  const [feeDataOptions, sellAssetUsdRate] = await Promise.all([
78
78
  adapter.getFeeData({
79
79
  to: sellAssetErc20Address,
80
80
  value: '0',
81
- chainSpecific: { from: receiveAddress, contractData: data }
81
+ chainSpecific: { from: receiveAddress, contractData: data },
82
82
  }),
83
- (0, helpers_2.getUsdRate)(deps, sellAsset)
83
+ (0, helpers_2.getUsdRate)(deps, sellAsset),
84
84
  ]);
85
85
  const feeData = feeDataOptions['fast'];
86
86
  // calculating trade fee in USD
@@ -104,9 +104,9 @@ async function getCowSwapTradeQuote(deps, input) {
104
104
  gasPrice: feeData.chainSpecific.gasPrice,
105
105
  approvalFee: (0, bignumber_1.bnOrZero)(feeData.chainSpecific.gasLimit)
106
106
  .multipliedBy((0, bignumber_1.bnOrZero)(feeData.chainSpecific.gasPrice))
107
- .toString()
107
+ .toString(),
108
108
  },
109
- tradeFee: tradeFeeFiat
109
+ tradeFee: tradeFeeFiat,
110
110
  },
111
111
  sellAmount: quoteSellAmount,
112
112
  buyAmount: quote.buyAmount,
@@ -114,7 +114,7 @@ async function getCowSwapTradeQuote(deps, input) {
114
114
  allowanceContract: constants_1.COW_SWAP_VAULT_RELAYER_ADDRESS,
115
115
  buyAsset,
116
116
  sellAsset,
117
- sellAssetAccountNumber
117
+ sellAssetAccountNumber,
118
118
  };
119
119
  }
120
120
  catch (e) {
@@ -124,14 +124,14 @@ async function getCowSwapTradeQuote(deps, input) {
124
124
  'SellAmountDoesNotCoverFee') {
125
125
  throw new api_1.SwapError('[getCowSwapTradeQuote]', {
126
126
  cause: e,
127
- code: api_1.SwapErrorTypes.TRADE_QUOTE_INPUT_LOWER_THAN_FEES
127
+ code: api_1.SwapErrorTypes.TRADE_QUOTE_INPUT_LOWER_THAN_FEES,
128
128
  });
129
129
  }
130
130
  if (e instanceof api_1.SwapError)
131
131
  throw e;
132
132
  throw new api_1.SwapError('[getCowSwapTradeQuote]', {
133
133
  cause: e,
134
- code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED
134
+ code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED,
135
135
  });
136
136
  }
137
137
  }
@@ -5,5 +5,5 @@ exports.COWSWAP_UNSUPPORTED_ASSETS = void 0;
5
5
  // We assume all erc20's are supported and remove these explicitely unsupported assets
6
6
  exports.COWSWAP_UNSUPPORTED_ASSETS = Object.freeze([
7
7
  // Foxy token unsupported by cowswap
8
- 'eip155:1/erc20:0xdc49108ce5c57bc3408c3a5e95f3d864ec386ed3'
8
+ 'eip155:1/erc20:0xdc49108ce5c57bc3408c3a5e95f3d864ec386ed3',
9
9
  ]);
@@ -9,7 +9,7 @@ const axiosConfig = {
9
9
  timeout: 10000,
10
10
  headers: {
11
11
  Accept: 'application/json',
12
- 'Content-Type': 'application/json'
13
- }
12
+ 'Content-Type': 'application/json',
13
+ },
14
14
  };
15
15
  exports.cowService = axios_1.default.create(axiosConfig);
@@ -22,7 +22,7 @@ exports.ORDER_TYPE_FIELDS = [
22
22
  { name: 'kind', type: 'string' },
23
23
  { name: 'partiallyFillable', type: 'bool' },
24
24
  { name: 'sellTokenBalance', type: 'string' },
25
- { name: 'buyTokenBalance', type: 'string' }
25
+ { name: 'buyTokenBalance', type: 'string' },
26
26
  ];
27
27
  const getNowPlusThirtyMinutesTimestamp = () => {
28
28
  const ts = new Date();
@@ -37,7 +37,7 @@ const getUsdRate = async ({ apiUrl }, input) => {
37
37
  if (assetNamespace !== 'erc20') {
38
38
  throw new api_1.SwapError('[getUsdRate] - unsupported asset namespace', {
39
39
  code: api_1.SwapErrorTypes.USD_RATE_FAILED,
40
- details: { assetNamespace }
40
+ details: { assetNamespace },
41
41
  });
42
42
  }
43
43
  if (erc20Address === USDC_CONTRACT_ADDRESS) {
@@ -58,7 +58,7 @@ const getUsdRate = async ({ apiUrl }, input) => {
58
58
  partiallyFillable: false,
59
59
  from: constants_1.DEFAULT_ADDRESS,
60
60
  kind: constants_1.ORDER_KIND_BUY,
61
- buyAmountAfterFee: buyAmount
61
+ buyAmountAfterFee: buyAmount,
62
62
  };
63
63
  /**
64
64
  * /v1/quote
@@ -75,11 +75,11 @@ const getUsdRate = async ({ apiUrl }, input) => {
75
75
  * }
76
76
  */
77
77
  const quoteResponse = await cowService_1.cowService.post(`${apiUrl}/v1/quote/`, apiInput);
78
- const { data: { quote } } = quoteResponse;
78
+ const { data: { quote }, } = quoteResponse;
79
79
  const sellCryptoAmount = (0, bignumber_1.bn)(quote.sellAmount).div((0, bignumber_1.bn)(10).exponentiatedBy(asset.precision));
80
80
  if (!sellCryptoAmount.gt(0))
81
81
  throw new api_1.SwapError('[getUsdRate] - Failed to get sell token amount', {
82
- code: api_1.SwapErrorTypes.RESPONSE_ERROR
82
+ code: api_1.SwapErrorTypes.RESPONSE_ERROR,
83
83
  });
84
84
  // dividing $1000 by amount of sell token received
85
85
  return (0, bignumber_1.bn)(buyAmountInDollars).div(sellCryptoAmount).toString();
@@ -89,7 +89,7 @@ const getUsdRate = async ({ apiUrl }, input) => {
89
89
  throw e;
90
90
  throw new api_1.SwapError('[getUsdRate]', {
91
91
  cause: e,
92
- code: api_1.SwapErrorTypes.USD_RATE_FAILED
92
+ code: api_1.SwapErrorTypes.USD_RATE_FAILED,
93
93
  });
94
94
  }
95
95
  };
@@ -118,7 +118,7 @@ const domain = (chainId, verifyingContract) => {
118
118
  name: 'Gnosis Protocol',
119
119
  version: 'v2',
120
120
  chainId,
121
- verifyingContract
121
+ verifyingContract,
122
122
  };
123
123
  };
124
124
  exports.domain = domain;
@@ -18,7 +18,7 @@ class OsmosisSwapper {
18
18
  async getTradeTxs(tradeResult) {
19
19
  return {
20
20
  sellTxid: tradeResult.tradeId,
21
- buyTxid: tradeResult.tradeId
21
+ buyTxid: tradeResult.tradeId,
22
22
  };
23
23
  }
24
24
  async getUsdRate(input) {
@@ -40,7 +40,7 @@ class OsmosisSwapper {
40
40
  const maximum = constants_1.MAX_SWAPPER_SELL;
41
41
  return {
42
42
  minimum,
43
- maximum
43
+ maximum,
44
44
  };
45
45
  }
46
46
  async approvalNeeded() {
@@ -48,12 +48,12 @@ class OsmosisSwapper {
48
48
  }
49
49
  async approveInfinite() {
50
50
  throw new api_1.SwapError('OsmosisSwapper: approveInfinite unimplemented', {
51
- code: api_1.SwapErrorTypes.RESPONSE_ERROR
51
+ code: api_1.SwapErrorTypes.RESPONSE_ERROR,
52
52
  });
53
53
  }
54
54
  async approveAmount() {
55
55
  throw new api_1.SwapError('Osmosis: approveAmount unimplemented', {
56
- code: api_1.SwapErrorTypes.RESPONSE_ERROR
56
+ code: api_1.SwapErrorTypes.RESPONSE_ERROR,
57
57
  });
58
58
  }
59
59
  filterBuyAssetsBySellAssetId(args) {
@@ -69,7 +69,7 @@ class OsmosisSwapper {
69
69
  const { sellAsset, buyAsset, sellAmount, receiveAddress } = args;
70
70
  if (!sellAmount) {
71
71
  throw new api_1.SwapError('sellAmount is required', {
72
- code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED
72
+ code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED,
73
73
  });
74
74
  }
75
75
  const { tradeFee, rate, buyAmount } = await (0, helpers_1.getRateInfo)(sellAsset.symbol, buyAsset.symbol, sellAmount !== '0' ? sellAmount : '1', this.deps.osmoUrl);
@@ -78,7 +78,7 @@ class OsmosisSwapper {
78
78
  const osmosisAdapter = this.deps.adapterManager.get(caip_1.osmosisChainId);
79
79
  if (!osmosisAdapter)
80
80
  throw new api_1.SwapError('Failed to get Osmosis adapter', {
81
- code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED
81
+ code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED,
82
82
  });
83
83
  const feeData = await osmosisAdapter.getFeeData({});
84
84
  const fee = feeData.fast.txFee;
@@ -91,14 +91,14 @@ class OsmosisSwapper {
91
91
  sellAmount: amountBaseSell,
92
92
  sellAsset,
93
93
  sellAssetAccountNumber: 0,
94
- sources: [{ name: 'Osmosis', proportion: '100' }]
94
+ sources: [{ name: 'Osmosis', proportion: '100' }],
95
95
  };
96
96
  }
97
97
  async getTradeQuote(input) {
98
98
  const { sellAsset, buyAsset, sellAmount } = input;
99
99
  if (!sellAmount) {
100
100
  throw new api_1.SwapError('sellAmount is required', {
101
- code: api_1.SwapErrorTypes.RESPONSE_ERROR
101
+ code: api_1.SwapErrorTypes.RESPONSE_ERROR,
102
102
  });
103
103
  }
104
104
  const { tradeFee, rate, buyAmount } = await (0, helpers_1.getRateInfo)(sellAsset.symbol, buyAsset.symbol, sellAmount !== '0' ? sellAmount : '1', this.deps.osmoUrl);
@@ -106,7 +106,7 @@ class OsmosisSwapper {
106
106
  const osmosisAdapter = this.deps.adapterManager.get(caip_1.osmosisChainId);
107
107
  if (!osmosisAdapter)
108
108
  throw new api_1.SwapError('Failed to get Osmosis adapter', {
109
- code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED
109
+ code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED,
110
110
  });
111
111
  const feeData = await osmosisAdapter.getFeeData({});
112
112
  const fee = feeData.fast.txFee;
@@ -121,7 +121,7 @@ class OsmosisSwapper {
121
121
  sellAmount,
122
122
  buyAmount,
123
123
  sources: constants_1.DEFAULT_SOURCE,
124
- allowanceContract: ''
124
+ allowanceContract: '',
125
125
  };
126
126
  }
127
127
  async executeTrade({ trade, wallet }) {
@@ -134,7 +134,7 @@ class OsmosisSwapper {
134
134
  const cosmosAdapter = this.deps.adapterManager.get(caip_1.cosmosChainId);
135
135
  if (!cosmosAdapter || !osmosisAdapter) {
136
136
  throw new api_1.SwapError('Failed to get adapters', {
137
- code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED
137
+ code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED,
138
138
  });
139
139
  }
140
140
  let sellAddress;
@@ -142,17 +142,17 @@ class OsmosisSwapper {
142
142
  const gas = feeData.fast.chainSpecific.gasLimit;
143
143
  if (!isFromOsmo) {
144
144
  const sellBip44Params = cosmosAdapter.buildBIP44Params({
145
- accountNumber: Number(sellAssetAccountNumber)
145
+ accountNumber: Number(sellAssetAccountNumber),
146
146
  });
147
147
  sellAddress = await cosmosAdapter.getAddress({ wallet, bip44Params: sellBip44Params });
148
148
  if (!sellAddress)
149
149
  throw new api_1.SwapError('Failed to get address', {
150
- code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED
150
+ code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED,
151
151
  });
152
152
  const transfer = {
153
153
  sender: sellAddress,
154
154
  receiver: receiveAddress,
155
- amount: sellAmount
155
+ amount: sellAmount,
156
156
  };
157
157
  const responseAccount = await cosmosAdapter.getAccount(sellAddress);
158
158
  const accountNumber = responseAccount.chainSpecific.accountNumber || '0';
@@ -162,7 +162,7 @@ class OsmosisSwapper {
162
162
  const pollResult = await (0, helpers_1.pollForComplete)(tradeId, this.deps.cosmosUrl);
163
163
  if (pollResult !== 'success')
164
164
  throw new api_1.SwapError('ibc transfer failed', {
165
- code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED
165
+ code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED,
166
166
  });
167
167
  ibcSellAmount = await (0, helpers_1.pollForAtomChannelBalance)(receiveAddress, this.deps.osmoUrl);
168
168
  // delay to ensure all nodes we interact with are up to date at this point
@@ -171,12 +171,12 @@ class OsmosisSwapper {
171
171
  }
172
172
  else {
173
173
  const sellBip44Params = osmosisAdapter.buildBIP44Params({
174
- accountNumber: Number(sellAssetAccountNumber)
174
+ accountNumber: Number(sellAssetAccountNumber),
175
175
  });
176
176
  sellAddress = await osmosisAdapter.getAddress({ wallet, bip44Params: sellBip44Params });
177
177
  if (!sellAddress)
178
178
  throw new api_1.SwapError('failed to get osmoAddress', {
179
- code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED
179
+ code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED,
180
180
  });
181
181
  }
182
182
  const osmoAddress = isFromOsmo ? sellAddress : receiveAddress;
@@ -187,7 +187,7 @@ class OsmosisSwapper {
187
187
  sellAssetDenom,
188
188
  sellAmount: ibcSellAmount !== null && ibcSellAmount !== void 0 ? ibcSellAmount : sellAmount,
189
189
  gas,
190
- wallet
190
+ wallet,
191
191
  });
192
192
  const signed = await osmosisAdapter.signTransaction(signTxInput);
193
193
  const tradeId = await osmosisAdapter.broadcastTransaction(signed);
@@ -195,13 +195,13 @@ class OsmosisSwapper {
195
195
  const pollResult = await (0, helpers_1.pollForComplete)(tradeId, this.deps.osmoUrl);
196
196
  if (pollResult !== 'success')
197
197
  throw new api_1.SwapError('osmo swap failed', {
198
- code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED
198
+ code: api_1.SwapErrorTypes.EXECUTE_TRADE_FAILED,
199
199
  });
200
200
  const amount = await (0, helpers_1.pollForAtomChannelBalance)(sellAddress, this.deps.osmoUrl);
201
201
  const transfer = {
202
202
  sender: sellAddress,
203
203
  receiver: receiveAddress,
204
- amount
204
+ amount,
205
205
  };
206
206
  const ibcResponseAccount = await osmosisAdapter.getAccount(sellAddress);
207
207
  const ibcAccountNumber = ibcResponseAccount.chainSpecific.accountNumber || '0';