@shapeshiftoss/swapper 9.15.0 → 9.16.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 (69) hide show
  1. package/dist/manager/SwapperManager.js +3 -3
  2. package/dist/swappercli.js +8 -8
  3. package/dist/swappers/cow/CowSwapper.d.ts +2 -2
  4. package/dist/swappers/cow/CowSwapper.js +4 -6
  5. package/dist/swappers/cow/cowApprovalNeeded/cowApprovalNeeded.js +4 -4
  6. package/dist/swappers/cow/{cowApproveInfinite/cowApproveInfinite.d.ts → cowApprove/cowApprove.d.ts} +2 -1
  7. package/dist/swappers/cow/cowApprove/cowApprove.js +56 -0
  8. package/dist/swappers/cow/cowBuildTrade/cowBuildTrade.js +11 -11
  9. package/dist/swappers/cow/cowExecuteTrade/cowExecuteTrade.js +7 -7
  10. package/dist/swappers/cow/cowGetTradeTxs/cowGetTradeTxs.js +4 -4
  11. package/dist/swappers/cow/getCowSwapMinMax/getCowSwapMinMax.js +1 -1
  12. package/dist/swappers/cow/getCowSwapTradeQuote/getCowSwapTradeQuote.js +12 -12
  13. package/dist/swappers/cow/utils/blacklist.js +1 -1
  14. package/dist/swappers/cow/utils/cowService.js +2 -2
  15. package/dist/swappers/cow/utils/helpers/helpers.js +7 -7
  16. package/dist/swappers/osmosis/OsmosisSwapper.js +20 -20
  17. package/dist/swappers/osmosis/utils/helpers.d.ts +1 -1
  18. package/dist/swappers/osmosis/utils/helpers.js +35 -35
  19. package/dist/swappers/test/TestSwapper.js +2 -2
  20. package/dist/swappers/thorchain/ThorchainSwapper.js +13 -13
  21. package/dist/swappers/thorchain/buildThorTrade/buildThorTrade.d.ts +1 -1
  22. package/dist/swappers/thorchain/buildThorTrade/buildThorTrade.js +14 -14
  23. package/dist/swappers/thorchain/getThorTradeQuote/getTradeQuote.js +14 -14
  24. package/dist/swappers/thorchain/thorTradeApprovalNeeded/thorTradeApprovalNeeded.d.ts +1 -1
  25. package/dist/swappers/thorchain/thorTradeApprovalNeeded/thorTradeApprovalNeeded.js +7 -7
  26. package/dist/swappers/thorchain/thorTradeApproveInfinite/thorTradeApproveInfinite.d.ts +1 -1
  27. package/dist/swappers/thorchain/thorTradeApproveInfinite/thorTradeApproveInfinite.js +7 -7
  28. package/dist/swappers/thorchain/utils/bitcoin/utils/getThorTxData.js +5 -5
  29. package/dist/swappers/thorchain/utils/constants.js +1 -1
  30. package/dist/swappers/thorchain/utils/cosmos/cosmosTxData.js +6 -6
  31. package/dist/swappers/thorchain/utils/estimateTradeFee/estimateTradeFee.js +6 -6
  32. package/dist/swappers/thorchain/utils/ethereum/makeTradeTx.d.ts +1 -1
  33. package/dist/swappers/thorchain/utils/ethereum/makeTradeTx.js +6 -6
  34. package/dist/swappers/thorchain/utils/ethereum/utils/getThorTxData.js +5 -5
  35. package/dist/swappers/thorchain/utils/getLimit/getLimit.d.ts +1 -1
  36. package/dist/swappers/thorchain/utils/getLimit/getLimit.js +2 -2
  37. package/dist/swappers/thorchain/utils/getPriceRatio/getPriceRatio.js +3 -3
  38. package/dist/swappers/thorchain/utils/getTradeRate/getTradeRate.js +5 -5
  39. package/dist/swappers/thorchain/utils/getUsdRate/getUsdRate.d.ts +1 -1
  40. package/dist/swappers/thorchain/utils/getUsdRate/getUsdRate.js +4 -4
  41. package/dist/swappers/thorchain/utils/makeSwapMemo/makeSwapMemo.d.ts +1 -1
  42. package/dist/swappers/thorchain/utils/makeSwapMemo/makeSwapMemo.js +4 -4
  43. package/dist/swappers/thorchain/utils/test-data/midgardResponse.js +11 -11
  44. package/dist/swappers/thorchain/utils/test-data/setupThorswapDeps.js +9 -9
  45. package/dist/swappers/thorchain/utils/thorService.js +2 -2
  46. package/dist/swappers/thorchain/utils/txFeeHelpers/btcTxFees/getBtcTxFees.d.ts +1 -1
  47. package/dist/swappers/thorchain/utils/txFeeHelpers/btcTxFees/getBtcTxFees.js +4 -4
  48. package/dist/swappers/thorchain/utils/txFeeHelpers/ethTxFees/getEthTxFees.d.ts +1 -1
  49. package/dist/swappers/thorchain/utils/txFeeHelpers/ethTxFees/getEthTxFees.js +7 -7
  50. package/dist/swappers/utils/abi/erc20-abi.js +54 -54
  51. package/dist/swappers/utils/abi/erc20Allowance-abi.js +7 -7
  52. package/dist/swappers/utils/helpers/helpers.d.ts +4 -4
  53. package/dist/swappers/utils/helpers/helpers.js +13 -13
  54. package/dist/swappers/utils/test-data/assets.js +8 -8
  55. package/dist/swappers/utils/test-data/setupDeps.js +3 -3
  56. package/dist/swappers/utils/test-data/setupSwapQuote.js +3 -3
  57. package/dist/swappers/zrx/ZrxSwapper.js +2 -2
  58. package/dist/swappers/zrx/getZrxMinMax/getZrxMinMax.js +1 -1
  59. package/dist/swappers/zrx/getZrxTradeQuote/getZrxTradeQuote.js +7 -7
  60. package/dist/swappers/zrx/utils/blacklist.js +1 -1
  61. package/dist/swappers/zrx/utils/helpers/helpers.js +6 -6
  62. package/dist/swappers/zrx/utils/test-data/setupZrxSwapQuote.js +2 -2
  63. package/dist/swappers/zrx/utils/zrxService.js +2 -2
  64. package/dist/swappers/zrx/zrxApprovalNeeded/zrxApprovalNeeded.js +6 -6
  65. package/dist/swappers/zrx/zrxApprove/zrxApprove.js +6 -6
  66. package/dist/swappers/zrx/zrxBuildTrade/zrxBuildTrade.js +13 -11
  67. package/dist/swappers/zrx/zrxExecuteTrade/zrxExecuteTrade.js +6 -6
  68. package/package.json +1 -1
  69. package/dist/swappers/cow/cowApproveInfinite/cowApproveInfinite.js +0 -31
@@ -13,10 +13,10 @@ const getTradeRate_1 = require("../utils/getTradeRate/getTradeRate");
13
13
  const getBtcTxFees_1 = require("../utils/txFeeHelpers/btcTxFees/getBtcTxFees");
14
14
  const getEthTxFees_1 = require("../utils/txFeeHelpers/ethTxFees/getEthTxFees");
15
15
  const getThorTradeQuote = async ({ deps, input }) => {
16
- const { sellAsset, buyAsset, sellAmount, sellAssetAccountNumber, wallet, chainId, receiveAddress } = input;
16
+ const { sellAsset, buyAsset, sellAmount, sellAssetAccountNumber, wallet, chainId, receiveAddress, } = input;
17
17
  if (!wallet)
18
18
  throw new api_1.SwapError('[getThorTradeQuote] - wallet is required', {
19
- code: api_1.SwapErrorTypes.VALIDATION_FAILED
19
+ code: api_1.SwapErrorTypes.VALIDATION_FAILED,
20
20
  });
21
21
  try {
22
22
  const { assetReference: sellAssetErc20Address } = (0, caip_1.fromAssetId)(sellAsset.assetId);
@@ -24,7 +24,7 @@ const getThorTradeQuote = async ({ deps, input }) => {
24
24
  if (!sellAdapter)
25
25
  throw new api_1.SwapError(`[getThorTradeQuote] - No chain adapter found for ${chainId}.`, {
26
26
  code: api_1.SwapErrorTypes.UNSUPPORTED_CHAIN,
27
- details: { chainId }
27
+ details: { chainId },
28
28
  });
29
29
  const rate = await (0, getTradeRate_1.getTradeRate)(sellAsset, buyAsset.assetId, sellAmount, deps);
30
30
  const buyAmount = (0, bignumber_1.toBaseUnit)((0, bignumber_1.bnOrZero)((0, bignumber_1.fromBaseUnit)(sellAmount, sellAsset.precision)).times(rate), buyAsset.precision);
@@ -42,7 +42,7 @@ const getThorTradeQuote = async ({ deps, input }) => {
42
42
  buyAsset,
43
43
  sellAsset,
44
44
  sellAssetAccountNumber,
45
- minimum
45
+ minimum,
46
46
  };
47
47
  const { chainNamespace } = (0, caip_1.fromAssetId)(sellAsset.assetId);
48
48
  switch (chainNamespace) {
@@ -55,17 +55,17 @@ const getThorTradeQuote = async ({ deps, input }) => {
55
55
  sellAmount,
56
56
  slippageTolerance: constants_1.DEFAULT_SLIPPAGE,
57
57
  destinationAddress: receiveAddress,
58
- tradeFee
58
+ tradeFee,
59
59
  });
60
60
  const feeData = await (0, getEthTxFees_1.getEthTxFees)({
61
61
  adapterManager: deps.adapterManager,
62
62
  sellAssetReference: sellAssetErc20Address,
63
- tradeFee
63
+ tradeFee,
64
64
  });
65
65
  return {
66
66
  ...commonQuoteFields,
67
67
  allowanceContract: router,
68
- feeData
68
+ feeData,
69
69
  };
70
70
  })();
71
71
  case caip_1.CHAIN_NAMESPACE.Bitcoin:
@@ -80,7 +80,7 @@ const getThorTradeQuote = async ({ deps, input }) => {
80
80
  wallet,
81
81
  bip44Params: input.bip44Params,
82
82
  accountType: input.accountType,
83
- tradeFee
83
+ tradeFee,
84
84
  });
85
85
  const feeData = await (0, getBtcTxFees_1.getBtcTxFees)({
86
86
  sellAmount,
@@ -88,12 +88,12 @@ const getThorTradeQuote = async ({ deps, input }) => {
88
88
  opReturnData,
89
89
  pubkey,
90
90
  sellAdapter: sellAdapter,
91
- tradeFee
91
+ tradeFee,
92
92
  });
93
93
  return {
94
94
  ...commonQuoteFields,
95
95
  allowanceContract: '0x0',
96
- feeData
96
+ feeData,
97
97
  };
98
98
  })();
99
99
  case caip_1.CHAIN_NAMESPACE.Cosmos:
@@ -105,14 +105,14 @@ const getThorTradeQuote = async ({ deps, input }) => {
105
105
  feeData: {
106
106
  fee: feeData.fast.txFee,
107
107
  tradeFee,
108
- chainSpecific: { estimatedGas: feeData.fast.chainSpecific.gasLimit }
109
- }
108
+ chainSpecific: { estimatedGas: feeData.fast.chainSpecific.gasLimit },
109
+ },
110
110
  };
111
111
  })();
112
112
  default:
113
113
  throw new api_1.SwapError('[getThorTradeQuote] - Asset chainId is not supported.', {
114
114
  code: api_1.SwapErrorTypes.UNSUPPORTED_CHAIN,
115
- details: { chainId }
115
+ details: { chainId },
116
116
  });
117
117
  }
118
118
  }
@@ -121,7 +121,7 @@ const getThorTradeQuote = async ({ deps, input }) => {
121
121
  throw e;
122
122
  throw new api_1.SwapError('[getThorTradeQuote]', {
123
123
  cause: e,
124
- code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED
124
+ code: api_1.SwapErrorTypes.TRADE_QUOTE_FAILED,
125
125
  });
126
126
  }
127
127
  };
@@ -1,7 +1,7 @@
1
1
  import { KnownChainIds } from '@shapeshiftoss/types';
2
2
  import { ApprovalNeededInput, ApprovalNeededOutput } from '../../../api';
3
3
  import { ThorchainSwapperDeps } from '../types';
4
- export declare const thorTradeApprovalNeeded: ({ deps, input }: {
4
+ export declare const thorTradeApprovalNeeded: ({ deps, input, }: {
5
5
  deps: ThorchainSwapperDeps;
6
6
  input: ApprovalNeededInput<KnownChainIds.EthereumMainnet>;
7
7
  }) => Promise<ApprovalNeededOutput>;
@@ -6,7 +6,7 @@ const api_1 = require("../../../api");
6
6
  const erc20Allowance_abi_1 = require("../../utils/abi/erc20Allowance-abi");
7
7
  const bignumber_1 = require("../../utils/bignumber");
8
8
  const helpers_1 = require("../../utils/helpers/helpers");
9
- const thorTradeApprovalNeeded = async ({ deps, input }) => {
9
+ const thorTradeApprovalNeeded = async ({ deps, input, }) => {
10
10
  var _a;
11
11
  try {
12
12
  const { quote, wallet } = input;
@@ -21,7 +21,7 @@ const thorTradeApprovalNeeded = async ({ deps, input }) => {
21
21
  if (!adapter)
22
22
  throw new api_1.SwapError(`[thorTradeApprovalNeeded] - no chain adapter found for chain Id: ${sellAsset.chainId}`, {
23
23
  code: api_1.SwapErrorTypes.UNSUPPORTED_CHAIN,
24
- details: { chainId: sellAsset.chainId }
24
+ details: { chainId: sellAsset.chainId },
25
25
  });
26
26
  // No approval needed for selling a fee asset
27
27
  if (sellAsset.assetId === adapter.getFeeAssetId()) {
@@ -32,7 +32,7 @@ const thorTradeApprovalNeeded = async ({ deps, input }) => {
32
32
  if (!quote.allowanceContract) {
33
33
  throw new api_1.SwapError('[thorTradeApprovalNeeded] - allowanceTarget is required', {
34
34
  code: api_1.SwapErrorTypes.VALIDATION_FAILED,
35
- details: { chainId: sellAsset.chainId }
35
+ details: { chainId: sellAsset.chainId },
36
36
  });
37
37
  }
38
38
  const allowanceResult = await (0, helpers_1.getERC20Allowance)({
@@ -40,16 +40,16 @@ const thorTradeApprovalNeeded = async ({ deps, input }) => {
40
40
  erc20AllowanceAbi: erc20Allowance_abi_1.erc20AllowanceAbi,
41
41
  sellAssetErc20Address,
42
42
  spenderAddress: quote.allowanceContract,
43
- ownerAddress: receiveAddress
43
+ ownerAddress: receiveAddress,
44
44
  });
45
45
  const allowanceOnChain = (0, bignumber_1.bnOrZero)(allowanceResult);
46
46
  if (!((_a = quote.feeData.chainSpecific) === null || _a === void 0 ? void 0 : _a.gasPrice))
47
47
  throw new api_1.SwapError('[thorTradeApprovalNeeded] - no gas price with quote', {
48
48
  code: api_1.SwapErrorTypes.RESPONSE_ERROR,
49
- details: { feeData: quote.feeData }
49
+ details: { feeData: quote.feeData },
50
50
  });
51
51
  return {
52
- approvalNeeded: allowanceOnChain.lte((0, bignumber_1.bnOrZero)(quote.sellAmount))
52
+ approvalNeeded: allowanceOnChain.lte((0, bignumber_1.bnOrZero)(quote.sellAmount)),
53
53
  };
54
54
  }
55
55
  catch (e) {
@@ -57,7 +57,7 @@ const thorTradeApprovalNeeded = async ({ deps, input }) => {
57
57
  throw e;
58
58
  throw new api_1.SwapError('[thorTradeApprovalNeeded]', {
59
59
  cause: e,
60
- code: api_1.SwapErrorTypes.CHECK_APPROVAL_FAILED
60
+ code: api_1.SwapErrorTypes.CHECK_APPROVAL_FAILED,
61
61
  });
62
62
  }
63
63
  };
@@ -1,7 +1,7 @@
1
1
  import { KnownChainIds } from '@shapeshiftoss/types';
2
2
  import { ApproveInfiniteInput } from '../../../api';
3
3
  import { ThorchainSwapperDeps } from '../types';
4
- export declare const thorTradeApproveInfinite: ({ deps, input }: {
4
+ export declare const thorTradeApproveInfinite: ({ deps, input, }: {
5
5
  deps: ThorchainSwapperDeps;
6
6
  input: ApproveInfiniteInput<KnownChainIds.EthereumMainnet>;
7
7
  }) => Promise<string>;
@@ -7,7 +7,7 @@ const erc20_abi_1 = require("../../utils/abi/erc20-abi");
7
7
  const constants_1 = require("../../utils/constants");
8
8
  const helpers_1 = require("../../utils/helpers/helpers");
9
9
  const constants_2 = require("../utils/constants");
10
- const thorTradeApproveInfinite = async ({ deps, input }) => {
10
+ const thorTradeApproveInfinite = async ({ deps, input, }) => {
11
11
  try {
12
12
  const { adapterManager, web3 } = deps;
13
13
  const { quote, wallet } = input;
@@ -20,23 +20,23 @@ const thorTradeApproveInfinite = async ({ deps, input }) => {
20
20
  ...quote.feeData.chainSpecific,
21
21
  // Thor approvals are cheaper than trades, but we don't have dynamic quote data for them.
22
22
  // Instead, we use a hardcoded gasLimit estimate in place of the estimatedGas in the Thor quote response.
23
- estimatedGas: constants_1.APPROVAL_GAS_LIMIT
24
- }
25
- }
23
+ estimatedGas: constants_1.APPROVAL_GAS_LIMIT,
24
+ },
25
+ },
26
26
  };
27
27
  const sellAssetChainId = approvalQuote.sellAsset.chainId;
28
28
  const adapter = adapterManager.get(types_1.KnownChainIds.EthereumMainnet);
29
29
  if (!adapter)
30
30
  throw new api_1.SwapError(`[thorTradeApproveInfinite] - No chain adapter found for ${sellAssetChainId}.`, {
31
31
  code: api_1.SwapErrorTypes.UNSUPPORTED_CHAIN,
32
- details: { sellAssetChainId }
32
+ details: { sellAssetChainId },
33
33
  });
34
34
  const allowanceGrantRequired = await (0, helpers_1.grantAllowance)({
35
35
  quote: approvalQuote,
36
36
  wallet,
37
37
  adapter,
38
38
  erc20Abi: erc20_abi_1.erc20Abi,
39
- web3
39
+ web3,
40
40
  });
41
41
  return allowanceGrantRequired;
42
42
  }
@@ -45,7 +45,7 @@ const thorTradeApproveInfinite = async ({ deps, input }) => {
45
45
  throw e;
46
46
  throw new api_1.SwapError('[zrxApproveInfinite]', {
47
47
  cause: e,
48
- code: api_1.SwapErrorTypes.APPROVE_INFINITE_FAILED
48
+ code: api_1.SwapErrorTypes.APPROVE_INFINITE_FAILED,
49
49
  });
50
50
  }
51
51
  };
@@ -5,7 +5,7 @@ const api_1 = require("../../../../../api");
5
5
  const getLimit_1 = require("../../getLimit/getLimit");
6
6
  const makeSwapMemo_1 = require("../../makeSwapMemo/makeSwapMemo");
7
7
  const thorService_1 = require("../../thorService");
8
- const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTolerance, destinationAddress, wallet, bip44Params, accountType, tradeFee }) => {
8
+ const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTolerance, destinationAddress, wallet, bip44Params, accountType, tradeFee, }) => {
9
9
  try {
10
10
  const { data: inboundAddresses } = await thorService_1.thorService.get(`${deps.midgardUrl}/thorchain/inbound_addresses`);
11
11
  const sellAssetInboundAddresses = inboundAddresses.find((inbound) => inbound.chain === sellAsset.symbol.toUpperCase());
@@ -13,7 +13,7 @@ const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTo
13
13
  if (!vault)
14
14
  throw new api_1.SwapError(`[getThorTxInfo]: vault not found for asset`, {
15
15
  code: api_1.SwapErrorTypes.RESPONSE_ERROR,
16
- details: { inboundAddresses, sellAsset }
16
+ details: { inboundAddresses, sellAsset },
17
17
  });
18
18
  const limit = await (0, getLimit_1.getLimit)({
19
19
  buyAssetId: buyAsset.assetId,
@@ -23,19 +23,19 @@ const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTo
23
23
  buyAsset,
24
24
  slippageTolerance,
25
25
  deps,
26
- tradeFee
26
+ tradeFee,
27
27
  });
28
28
  const memo = (0, makeSwapMemo_1.makeSwapMemo)({
29
29
  buyAssetId: buyAsset.assetId,
30
30
  destinationAddress,
31
- limit
31
+ limit,
32
32
  });
33
33
  const adapter = deps.adapterManager.get(sellAsset.chainId);
34
34
  const pubkey = await adapter.getPublicKey(wallet, bip44Params, accountType);
35
35
  return {
36
36
  opReturnData: memo,
37
37
  vault,
38
- pubkey: pubkey.xpub
38
+ pubkey: pubkey.xpub,
39
39
  };
40
40
  }
41
41
  catch (e) {
@@ -22,5 +22,5 @@ exports.THOR_TRADE_FEE_MULTIPLIERS = {
22
22
  [types_1.KnownChainIds.LitecoinMainnet]: (0, bignumber_1.bn)(0.000005),
23
23
  [types_1.KnownChainIds.BitcoinCashMainnet]: (0, bignumber_1.bn)(0.00003),
24
24
  [types_1.KnownChainIds.CosmosMainnet]: (0, bignumber_1.bn)(0.00000002),
25
- [types_1.KnownChainIds.EthereumMainnet]: (0, bignumber_1.bn)(0.00024) // A value that "works". Discord recommended value (80,000 gas * 2 or 160k) is often too low
25
+ [types_1.KnownChainIds.EthereumMainnet]: (0, bignumber_1.bn)(0.00024), // A value that "works". Discord recommended value (80,000 gas * 2 or 160k) is often too low
26
26
  };
@@ -6,7 +6,7 @@ const getLimit_1 = require("../getLimit/getLimit");
6
6
  const makeSwapMemo_1 = require("../makeSwapMemo/makeSwapMemo");
7
7
  const thorService_1 = require("../thorService");
8
8
  const cosmosTxData = async (input) => {
9
- const { deps, destinationAddress, sellAmount, sellAsset, buyAsset, slippageTolerance, quote, wallet, sellAdapter } = input;
9
+ const { deps, destinationAddress, sellAmount, sellAsset, buyAsset, slippageTolerance, quote, wallet, sellAdapter, } = input;
10
10
  const { data: inboundAddresses } = await thorService_1.thorService.get(`${deps.midgardUrl}/thorchain/inbound_addresses`);
11
11
  const atomInboundAddresses = inboundAddresses.find((inbound) => inbound.chain === 'GAIA');
12
12
  const vault = atomInboundAddresses === null || atomInboundAddresses === void 0 ? void 0 : atomInboundAddresses.address;
@@ -14,7 +14,7 @@ const cosmosTxData = async (input) => {
14
14
  throw new api_1.SwapError('[buildTrade]: no vault for chain', {
15
15
  code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED,
16
16
  fn: 'buildTrade',
17
- details: { chainId: input.chainId }
17
+ details: { chainId: input.chainId },
18
18
  });
19
19
  const limit = await (0, getLimit_1.getLimit)({
20
20
  buyAssetId: buyAsset.assetId,
@@ -24,12 +24,12 @@ const cosmosTxData = async (input) => {
24
24
  buyAsset,
25
25
  slippageTolerance,
26
26
  deps,
27
- tradeFee: quote.feeData.tradeFee
27
+ tradeFee: quote.feeData.tradeFee,
28
28
  });
29
29
  const memo = (0, makeSwapMemo_1.makeSwapMemo)({
30
30
  buyAssetId: buyAsset.assetId,
31
31
  destinationAddress,
32
- limit
32
+ limit,
33
33
  });
34
34
  const buildTxResponse = await sellAdapter.buildSendTransaction({
35
35
  value: sellAmount,
@@ -38,8 +38,8 @@ const cosmosTxData = async (input) => {
38
38
  memo,
39
39
  chainSpecific: {
40
40
  gas: quote.feeData.chainSpecific.estimatedGas,
41
- fee: quote.feeData.fee
42
- }
41
+ fee: quote.feeData.fee,
42
+ },
43
43
  });
44
44
  return buildTxResponse.txToSign;
45
45
  };
@@ -11,7 +11,7 @@ const estimateTradeFee = async (deps, buyAsset) => {
11
11
  if (!thorId)
12
12
  throw new api_1.SwapError('[estimateTradeFee] - undefined thorId for given buyAssetId', {
13
13
  code: api_1.SwapErrorTypes.VALIDATION_FAILED,
14
- details: { buyAssetId: buyAsset.assetId }
14
+ details: { buyAssetId: buyAsset.assetId },
15
15
  });
16
16
  const thorPoolChainId = thorId.slice(0, thorId.indexOf('.'));
17
17
  const { data: inboundAddresses } = await thorService_1.thorService.get(`${deps.midgardUrl}/thorchain/inbound_addresses`);
@@ -19,7 +19,7 @@ const estimateTradeFee = async (deps, buyAsset) => {
19
19
  if (!inboundInfo)
20
20
  throw new api_1.SwapError('[estimateTradeFee] - unable to locate inbound pool info', {
21
21
  code: api_1.SwapErrorTypes.VALIDATION_FAILED,
22
- details: { thorPoolChainId }
22
+ details: { thorPoolChainId },
23
23
  });
24
24
  const gasRate = inboundInfo.gas_rate;
25
25
  const { chainId: buyChainId } = (0, caip_1.fromAssetId)(buyAsset.assetId);
@@ -27,24 +27,24 @@ const estimateTradeFee = async (deps, buyAsset) => {
27
27
  if (!buyAdapter)
28
28
  throw new api_1.SwapError('[estimateTradeFee] - unable to get buy asset adapter', {
29
29
  code: api_1.SwapErrorTypes.VALIDATION_FAILED,
30
- details: { buyChainId }
30
+ details: { buyChainId },
31
31
  });
32
32
  const buyFeeAssetId = buyAdapter.getFeeAssetId();
33
33
  if (!buyFeeAssetId)
34
34
  throw new api_1.SwapError('[estimateTradeFee] - no fee assetId', {
35
35
  code: api_1.SwapErrorTypes.VALIDATION_FAILED,
36
- details: { buyAssetId: buyAsset.assetId }
36
+ details: { buyAssetId: buyAsset.assetId },
37
37
  });
38
38
  const buyFeeAssetRatio = buyAsset.assetId !== buyFeeAssetId
39
39
  ? await (0, getPriceRatio_1.getPriceRatio)(deps, {
40
40
  sellAssetId: buyAsset.assetId,
41
- buyAssetId: buyFeeAssetId
41
+ buyAssetId: buyFeeAssetId,
42
42
  })
43
43
  : '1';
44
44
  if (!constants_1.THOR_TRADE_FEE_MULTIPLIERS[buyChainId])
45
45
  throw new api_1.SwapError('[estimateTradeFee] - no trade fee multiplier', {
46
46
  code: api_1.SwapErrorTypes.VALIDATION_FAILED,
47
- details: { buyChainId }
47
+ details: { buyChainId },
48
48
  });
49
49
  return constants_1.THOR_TRADE_FEE_MULTIPLIERS[buyChainId].times(buyFeeAssetRatio).times(gasRate).toString();
50
50
  };
@@ -3,7 +3,7 @@ import { ethereum } from '@shapeshiftoss/chain-adapters';
3
3
  import { ETHSignTx, HDWallet } from '@shapeshiftoss/hdwallet-core';
4
4
  import { BIP44Params } from '@shapeshiftoss/types';
5
5
  import { ThorchainSwapperDeps } from '../../types';
6
- export declare const makeTradeTx: ({ wallet, bip44Params, sellAmount, buyAsset, sellAsset, destinationAddress, adapter, maxFeePerGas, maxPriorityFeePerGas, gasPrice, slippageTolerance, deps, gasLimit, tradeFee }: {
6
+ export declare const makeTradeTx: ({ wallet, bip44Params, sellAmount, buyAsset, sellAsset, destinationAddress, adapter, maxFeePerGas, maxPriorityFeePerGas, gasPrice, slippageTolerance, deps, gasLimit, tradeFee, }: {
7
7
  wallet: HDWallet;
8
8
  bip44Params: BIP44Params;
9
9
  sellAmount: string;
@@ -5,7 +5,7 @@ const caip_1 = require("@shapeshiftoss/caip");
5
5
  const web3_utils_1 = require("web3-utils");
6
6
  const api_1 = require("../../../../api");
7
7
  const getThorTxData_1 = require("../ethereum/utils/getThorTxData");
8
- const makeTradeTx = async ({ wallet, bip44Params, sellAmount, buyAsset, sellAsset, destinationAddress, adapter, maxFeePerGas, maxPriorityFeePerGas, gasPrice, slippageTolerance, deps, gasLimit, tradeFee }) => {
8
+ const makeTradeTx = async ({ wallet, bip44Params, sellAmount, buyAsset, sellAsset, destinationAddress, adapter, maxFeePerGas, maxPriorityFeePerGas, gasPrice, slippageTolerance, deps, gasLimit, tradeFee, }) => {
9
9
  try {
10
10
  const { assetNamespace } = (0, caip_1.fromAssetId)(sellAsset.assetId);
11
11
  const isErc20Trade = assetNamespace === 'erc20';
@@ -16,7 +16,7 @@ const makeTradeTx = async ({ wallet, bip44Params, sellAmount, buyAsset, sellAsse
16
16
  sellAmount,
17
17
  slippageTolerance,
18
18
  destinationAddress,
19
- tradeFee
19
+ tradeFee,
20
20
  });
21
21
  return adapter.buildCustomTx({
22
22
  wallet,
@@ -25,14 +25,14 @@ const makeTradeTx = async ({ wallet, bip44Params, sellAmount, buyAsset, sellAsse
25
25
  gasLimit,
26
26
  ...(gasPrice !== undefined
27
27
  ? {
28
- gasPrice
28
+ gasPrice,
29
29
  }
30
30
  : {
31
31
  maxFeePerGas,
32
- maxPriorityFeePerGas
32
+ maxPriorityFeePerGas,
33
33
  }),
34
34
  value: isErc20Trade ? '0x0' : (0, web3_utils_1.numberToHex)(sellAmount),
35
- data
35
+ data,
36
36
  });
37
37
  }
38
38
  catch (e) {
@@ -40,7 +40,7 @@ const makeTradeTx = async ({ wallet, bip44Params, sellAmount, buyAsset, sellAsse
40
40
  throw e;
41
41
  throw new api_1.SwapError('[makeTradeTx]: error making trade tx', {
42
42
  code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED,
43
- cause: e
43
+ cause: e,
44
44
  });
45
45
  }
46
46
  };
@@ -7,7 +7,7 @@ const getLimit_1 = require("../../getLimit/getLimit");
7
7
  const makeSwapMemo_1 = require("../../makeSwapMemo/makeSwapMemo");
8
8
  const thorService_1 = require("../../thorService");
9
9
  const routerCalldata_1 = require("../routerCalldata");
10
- const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTolerance, destinationAddress, tradeFee }) => {
10
+ const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTolerance, destinationAddress, tradeFee, }) => {
11
11
  try {
12
12
  const { assetReference, assetNamespace } = (0, caip_1.fromAssetId)(sellAsset.assetId);
13
13
  const isErc20Trade = assetNamespace === 'erc20';
@@ -18,7 +18,7 @@ const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTo
18
18
  if (!vault || !router)
19
19
  throw new api_1.SwapError(`[getPriceRatio]: router or vault found for ETH`, {
20
20
  code: api_1.SwapErrorTypes.RESPONSE_ERROR,
21
- details: { inboundAddresses }
21
+ details: { inboundAddresses },
22
22
  });
23
23
  const limit = await (0, getLimit_1.getLimit)({
24
24
  buyAssetId: buyAsset.assetId,
@@ -28,18 +28,18 @@ const getThorTxInfo = async ({ deps, sellAsset, buyAsset, sellAmount, slippageTo
28
28
  buyAsset,
29
29
  slippageTolerance,
30
30
  deps,
31
- tradeFee
31
+ tradeFee,
32
32
  });
33
33
  const memo = (0, makeSwapMemo_1.makeSwapMemo)({
34
34
  buyAssetId: buyAsset.assetId,
35
35
  destinationAddress,
36
- limit
36
+ limit,
37
37
  });
38
38
  const data = await (0, routerCalldata_1.deposit)(router, vault, isErc20Trade ? assetReference : '0x0000000000000000000000000000000000000000', sellAmount, memo);
39
39
  return {
40
40
  data,
41
41
  memo,
42
- router
42
+ router,
43
43
  };
44
44
  }
45
45
  catch (e) {
@@ -1,6 +1,6 @@
1
1
  import { Asset } from '@shapeshiftoss/asset-service';
2
2
  import { ThorchainSwapperDeps } from '../../types';
3
- export declare const getLimit: ({ sellAsset, buyAsset, sellAmount, deps, slippageTolerance, tradeFee }: {
3
+ export declare const getLimit: ({ sellAsset, buyAsset, sellAmount, deps, slippageTolerance, tradeFee, }: {
4
4
  buyAssetId: string;
5
5
  destinationAddress: string;
6
6
  sellAsset: Asset;
@@ -5,14 +5,14 @@ const api_1 = require("../../../../api");
5
5
  const bignumber_1 = require("../../../utils/bignumber");
6
6
  const constants_1 = require("../constants");
7
7
  const getTradeRate_1 = require("../getTradeRate/getTradeRate");
8
- const getLimit = async ({ sellAsset, buyAsset, sellAmount, deps, slippageTolerance, tradeFee }) => {
8
+ const getLimit = async ({ sellAsset, buyAsset, sellAmount, deps, slippageTolerance, tradeFee, }) => {
9
9
  const tradeRate = await (0, getTradeRate_1.getTradeRate)(sellAsset, buyAsset.assetId, sellAmount, deps);
10
10
  const expectedBuyAmountPrecision8 = (0, bignumber_1.toBaseUnit)((0, bignumber_1.fromBaseUnit)((0, bignumber_1.bnOrZero)(sellAmount).times(tradeRate), sellAsset.precision), constants_1.THORCHAIN_FIXED_PRECISION);
11
11
  const isValidSlippageRange = (0, bignumber_1.bnOrZero)(slippageTolerance).gte(0) && (0, bignumber_1.bnOrZero)(slippageTolerance).lte(1);
12
12
  if ((0, bignumber_1.bnOrZero)(expectedBuyAmountPrecision8).lt(0) || !isValidSlippageRange)
13
13
  throw new api_1.SwapError('[getThorTxInfo]: bad expected buy amount or bad slippage tolerance', {
14
14
  code: api_1.SwapErrorTypes.BUILD_TRADE_FAILED,
15
- details: { expectedBuyAmountPrecision8, slippageTolerance }
15
+ details: { expectedBuyAmountPrecision8, slippageTolerance },
16
16
  });
17
17
  const tradeFeePrecision8 = (0, bignumber_1.toBaseUnit)((0, bignumber_1.bnOrZero)(tradeFee), constants_1.THORCHAIN_FIXED_PRECISION);
18
18
  return (0, bignumber_1.bnOrZero)(expectedBuyAmountPrecision8)
@@ -14,7 +14,7 @@ const getPriceRatio = async (deps, input) => {
14
14
  if (!buyPoolId || !sellPoolId)
15
15
  throw new api_1.SwapError(`[getPriceRatio]: No thorchain pool found`, {
16
16
  code: api_1.SwapErrorTypes.RESPONSE_ERROR,
17
- details: { buyPoolId, sellPoolId }
17
+ details: { buyPoolId, sellPoolId },
18
18
  });
19
19
  const { data: responseData } = await thorService_1.thorService.get(`${deps.midgardUrl}/pools`);
20
20
  const buyUsdPrice = (_a = responseData.find((response) => response.asset === buyPoolId)) === null || _a === void 0 ? void 0 : _a.assetPrice;
@@ -22,7 +22,7 @@ const getPriceRatio = async (deps, input) => {
22
22
  if (!buyUsdPrice || !sellUsdPrice)
23
23
  throw new api_1.SwapError(`[getPriceRatio]: No rate found for pools`, {
24
24
  code: api_1.SwapErrorTypes.RESPONSE_ERROR,
25
- details: { buyPoolId, sellPoolId }
25
+ details: { buyPoolId, sellPoolId },
26
26
  });
27
27
  return (0, bignumber_1.bnOrZero)(sellUsdPrice).dividedBy(buyUsdPrice).toString();
28
28
  }
@@ -31,7 +31,7 @@ const getPriceRatio = async (deps, input) => {
31
31
  throw e;
32
32
  throw new api_1.SwapError('[getPriceRatio]: Thorchain getPriceRatio failed', {
33
33
  code: api_1.SwapErrorTypes.PRICE_RATIO_FAILED,
34
- cause: e
34
+ cause: e,
35
35
  });
36
36
  }
37
37
  };
@@ -28,7 +28,7 @@ const getTradeRate = async (sellAsset, buyAssetId, sellAmount, deps) => {
28
28
  if ((0, bignumber_1.bnOrZero)(sellAmount).eq(0)) {
29
29
  return (0, getPriceRatio_1.getPriceRatio)(deps, {
30
30
  sellAssetId: sellAsset.assetId,
31
- buyAssetId
31
+ buyAssetId,
32
32
  });
33
33
  }
34
34
  const buyPoolId = caip_1.adapters.assetIdToPoolAssetId({ assetId: buyAssetId });
@@ -37,7 +37,7 @@ const getTradeRate = async (sellAsset, buyAssetId, sellAmount, deps) => {
37
37
  throw new api_1.SwapError(`[getPriceRatio]: No thorchain pool found`, {
38
38
  code: api_1.SwapErrorTypes.POOL_NOT_FOUND,
39
39
  fn: 'getPriceRatio',
40
- details: { buyPoolId, sellPoolId }
40
+ details: { buyPoolId, sellPoolId },
41
41
  });
42
42
  const { data: responseData } = await thorService_1.thorService.get(`${deps.midgardUrl}/pools`);
43
43
  const buyPool = responseData.find((response) => response.asset === buyPoolId);
@@ -46,17 +46,17 @@ const getTradeRate = async (sellAsset, buyAssetId, sellAmount, deps) => {
46
46
  throw new api_1.SwapError(`[getPriceRatio]: no pools found for`, {
47
47
  code: api_1.SwapErrorTypes.POOL_NOT_FOUND,
48
48
  fn: 'getPriceRatio',
49
- details: { buyPoolId, sellPoolId }
49
+ details: { buyPoolId, sellPoolId },
50
50
  });
51
51
  // All thorchain pool amounts are base 8 regardless of token precision
52
52
  const sellBaseAmount = (0, bignumber_1.bn)((0, bignumber_2.toBaseUnit)((0, bignumber_2.fromBaseUnit)(sellAmount, sellAsset.precision), THOR_PRECISION));
53
53
  const sellAssetPoolData = {
54
54
  assetBalance: (0, bignumber_1.bn)(sellPool.assetDepth),
55
- runeBalance: (0, bignumber_1.bn)(sellPool.runeDepth)
55
+ runeBalance: (0, bignumber_1.bn)(sellPool.runeDepth),
56
56
  };
57
57
  const buyAssetPoolData = {
58
58
  assetBalance: (0, bignumber_1.bn)(buyPool.assetDepth),
59
- runeBalance: (0, bignumber_1.bn)(buyPool.runeDepth)
59
+ runeBalance: (0, bignumber_1.bn)(buyPool.runeDepth),
60
60
  };
61
61
  const outputAmountBase8 = getDoubleSwapOutput(sellBaseAmount, sellAssetPoolData, buyAssetPoolData);
62
62
  const outputAmount = (0, bignumber_2.fromBaseUnit)(outputAmountBase8, THOR_PRECISION);
@@ -1,6 +1,6 @@
1
1
  import { Asset } from '@shapeshiftoss/asset-service';
2
2
  import { ThorchainSwapperDeps } from '../../types';
3
- export declare const getUsdRate: ({ deps, input }: {
3
+ export declare const getUsdRate: ({ deps, input, }: {
4
4
  deps: ThorchainSwapperDeps;
5
5
  input: Pick<Asset, 'assetId'>;
6
6
  }) => Promise<string>;
@@ -4,19 +4,19 @@ exports.getUsdRate = void 0;
4
4
  const caip_1 = require("@shapeshiftoss/caip");
5
5
  const api_1 = require("../../../../api");
6
6
  const thorService_1 = require("../thorService");
7
- const getUsdRate = async ({ deps, input }) => {
7
+ const getUsdRate = async ({ deps, input, }) => {
8
8
  const { assetId } = input;
9
9
  try {
10
10
  const thorchainPoolId = caip_1.adapters.assetIdToPoolAssetId({ assetId });
11
11
  if (!thorchainPoolId)
12
12
  throw new api_1.SwapError(`[getUsdRate]: No thorchainPoolId found for assetId: ${assetId}`, {
13
- code: api_1.SwapErrorTypes.USD_RATE_FAILED
13
+ code: api_1.SwapErrorTypes.USD_RATE_FAILED,
14
14
  });
15
15
  const { data: responseData } = await thorService_1.thorService.get(`${deps.midgardUrl}/pool/${thorchainPoolId}`);
16
16
  const rate = responseData === null || responseData === void 0 ? void 0 : responseData.assetPriceUSD;
17
17
  if (!rate)
18
18
  throw new api_1.SwapError(`[getUsdRate]: No rate found`, {
19
- code: api_1.SwapErrorTypes.USD_RATE_FAILED
19
+ code: api_1.SwapErrorTypes.USD_RATE_FAILED,
20
20
  });
21
21
  return rate;
22
22
  }
@@ -25,7 +25,7 @@ const getUsdRate = async ({ deps, input }) => {
25
25
  throw e;
26
26
  throw new api_1.SwapError('[getUsdRate]: Thorchain getUsdRate failed', {
27
27
  code: api_1.SwapErrorTypes.USD_RATE_FAILED,
28
- cause: e
28
+ cause: e,
29
29
  });
30
30
  }
31
31
  };
@@ -2,7 +2,7 @@
2
2
  * @returns thorchain memo shortened to a max of 80 characters as described:
3
3
  * https://dev.thorchain.org/thorchain-dev/memos#mechanism-for-transaction-intent
4
4
  */
5
- export declare const makeSwapMemo: ({ buyAssetId, destinationAddress, limit }: {
5
+ export declare const makeSwapMemo: ({ buyAssetId, destinationAddress, limit, }: {
6
6
  buyAssetId: string;
7
7
  destinationAddress: string;
8
8
  limit: string;
@@ -10,12 +10,12 @@ const MAX_LENGTH = 80;
10
10
  * @returns thorchain memo shortened to a max of 80 characters as described:
11
11
  * https://dev.thorchain.org/thorchain-dev/memos#mechanism-for-transaction-intent
12
12
  */
13
- const makeSwapMemo = ({ buyAssetId, destinationAddress, limit }) => {
13
+ const makeSwapMemo = ({ buyAssetId, destinationAddress, limit, }) => {
14
14
  const thorId = caip_1.adapters.assetIdToPoolAssetId({ assetId: buyAssetId });
15
15
  if (!thorId)
16
16
  throw new api_1.SwapError('[makeSwapMemo] - undefined thorId for given buyAssetId', {
17
17
  code: api_1.SwapErrorTypes.MAKE_MEMO_FAILED,
18
- details: { buyAssetId }
18
+ details: { buyAssetId },
19
19
  });
20
20
  // bch hack
21
21
  // Our bitcoin cash addresses are prefixed with `bitcoincash:`
@@ -30,13 +30,13 @@ const makeSwapMemo = ({ buyAssetId, destinationAddress, limit }) => {
30
30
  const abbreviationAmount = memo.length - MAX_LENGTH;
31
31
  if (abbreviationAmount > 39)
32
32
  throw new api_1.SwapError('[makeSwapMemo] - too much abbreviation for accurate matching', {
33
- code: api_1.SwapErrorTypes.MAKE_MEMO_FAILED
33
+ code: api_1.SwapErrorTypes.MAKE_MEMO_FAILED,
34
34
  });
35
35
  // delimeter between ticker and id allowing us to abbreviate the id: https://dev.thorchain.org/thorchain-dev/memos#asset-notation
36
36
  const delimeterIndex = memo.indexOf('-') + 1;
37
37
  if (!delimeterIndex) {
38
38
  throw new api_1.SwapError('[makeSwapMemo] - unable to abbreviate asset, no delimeter found', {
39
- code: api_1.SwapErrorTypes.MAKE_MEMO_FAILED
39
+ code: api_1.SwapErrorTypes.MAKE_MEMO_FAILED,
40
40
  });
41
41
  }
42
42
  return memo.replace(memo.slice(delimeterIndex, delimeterIndex + abbreviationAmount), '');