@shapeshiftoss/swapper 20.4.0 → 20.5.0

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 (169) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.js +6 -0
  3. package/dist/cjs/index.d.ts +1 -0
  4. package/dist/cjs/index.js +1 -0
  5. package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
  6. package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
  7. package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +17 -22
  8. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  9. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  10. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
  11. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  12. package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
  13. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  14. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
  15. package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  16. package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
  17. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  18. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
  19. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  20. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  21. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  22. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +5 -7
  23. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  24. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
  25. package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
  26. package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
  27. package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
  28. package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
  29. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  30. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
  31. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  32. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
  33. package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
  34. package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
  35. package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  36. package/dist/cjs/swappers/KyberSwapper/utils/constants.js +24 -0
  37. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  38. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
  39. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  40. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
  41. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  42. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
  43. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  44. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
  45. package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  46. package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
  47. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  48. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
  49. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  50. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
  51. package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
  52. package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
  53. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  54. package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
  55. package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
  56. package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
  57. package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  58. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
  59. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  60. package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
  61. package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  62. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
  63. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  64. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
  65. package/dist/cjs/types.d.ts +36 -8
  66. package/dist/cjs/types.js +1 -0
  67. package/dist/cjs/utils/aptos/constants.d.ts +2 -0
  68. package/dist/cjs/utils/aptos/constants.js +7 -0
  69. package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  70. package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
  71. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  72. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
  73. package/dist/cjs/utils/aptos/index.d.ts +3 -0
  74. package/dist/cjs/utils/aptos/index.js +19 -0
  75. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  76. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
  77. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  78. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
  79. package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
  80. package/dist/cjs/utils/evm/stateOverride.js +10 -4
  81. package/dist/cjs/utils/helpers.js +1 -0
  82. package/dist/cjs/utils/helpers.test.js +1 -0
  83. package/dist/cjs/utils/index.d.ts +3 -2
  84. package/dist/cjs/utils/index.js +11 -27
  85. package/dist/esm/.tsbuildinfo +1 -1
  86. package/dist/esm/constants.js +6 -0
  87. package/dist/esm/index.d.ts +1 -0
  88. package/dist/esm/index.js +1 -0
  89. package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
  90. package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
  91. package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +18 -23
  92. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  93. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  94. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
  95. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  96. package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
  97. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  98. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
  99. package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  100. package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
  101. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  102. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
  103. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  104. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  105. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  106. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +6 -8
  107. package/dist/esm/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  108. package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
  109. package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
  110. package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
  111. package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
  112. package/dist/esm/swappers/KyberSwapper/index.js +2 -0
  113. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  114. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
  115. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  116. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
  117. package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
  118. package/dist/esm/swappers/KyberSwapper/types.js +1 -0
  119. package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  120. package/dist/esm/swappers/KyberSwapper/utils/constants.js +21 -0
  121. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  122. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
  123. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  124. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
  125. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  126. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
  127. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  128. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
  129. package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  130. package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
  131. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  132. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
  133. package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  134. package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
  135. package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
  136. package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
  137. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  138. package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
  139. package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
  140. package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
  141. package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  142. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +34 -53
  143. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  144. package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
  145. package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  146. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
  147. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  148. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
  149. package/dist/esm/types.d.ts +36 -8
  150. package/dist/esm/types.js +1 -0
  151. package/dist/esm/utils/aptos/constants.d.ts +2 -0
  152. package/dist/esm/utils/aptos/constants.js +4 -0
  153. package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  154. package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
  155. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  156. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
  157. package/dist/esm/utils/aptos/index.d.ts +3 -0
  158. package/dist/esm/utils/aptos/index.js +3 -0
  159. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  160. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
  161. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  162. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
  163. package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
  164. package/dist/esm/utils/evm/stateOverride.js +8 -3
  165. package/dist/esm/utils/helpers.js +2 -1
  166. package/dist/esm/utils/helpers.test.js +1 -0
  167. package/dist/esm/utils/index.d.ts +3 -2
  168. package/dist/esm/utils/index.js +9 -26
  169. package/package.json +10 -11
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const getEvmNetworkFeeCryptoBaseUnit_1 = require("./getEvmNetworkFeeCryptoBaseUnit");
5
+ const stateOverride_1 = require("./stateOverride");
6
+ vitest_1.vi.mock('./stateOverride', async (importActual) => ({
7
+ ...(await importActual()),
8
+ getMinimalStateOverride: vitest_1.vi.fn(),
9
+ estimateGasWithStateOverride: vitest_1.vi.fn(),
10
+ }));
11
+ const gasFees = { gasPrice: '10' };
12
+ const makeTransactionData = () => ({ type: 'evm', to: '0x1', data: '0x', value: '0' });
13
+ const makeArgs = (adapter) => ({
14
+ adapter: adapter,
15
+ supportsEIP1559: false,
16
+ transactionData: makeTransactionData(),
17
+ from: '0x0000000000000000000000000000000000000001',
18
+ stateOverride: { sellAsset: {}, sellAmountCryptoBaseUnit: '1' },
19
+ });
20
+ (0, vitest_1.describe)('getEvmNetworkFeeCryptoBaseUnit state override', () => {
21
+ (0, vitest_1.beforeEach)(() => {
22
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockReset();
23
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockReset();
24
+ });
25
+ (0, vitest_1.it)('buffers the override gas limit onto the tx and prices the buffered limit', async () => {
26
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockResolvedValue([]);
27
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockResolvedValue('200');
28
+ const args = makeArgs({ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }) });
29
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmNetworkFeeCryptoBaseUnit)(args)).resolves.toBe('2400');
30
+ (0, vitest_1.expect)(args.transactionData.gasLimit).toBe('240');
31
+ });
32
+ (0, vitest_1.it)('falls back to plain estimation when the override simulation times out', async () => {
33
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockResolvedValue([]);
34
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockRejectedValue(new stateOverride_1.EstimationTimeoutError());
35
+ const getFeeData = vitest_1.vi.fn().mockResolvedValue({
36
+ average: { chainSpecific: { gasLimit: '100', ...gasFees } },
37
+ });
38
+ const args = makeArgs({
39
+ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }),
40
+ getFeeData,
41
+ });
42
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmNetworkFeeCryptoBaseUnit)(args)).resolves.toBe('1200');
43
+ (0, vitest_1.expect)(args.transactionData.gasLimit).toBe('120');
44
+ });
45
+ (0, vitest_1.it)('estimates over a provider gas limit already set on the tx', async () => {
46
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockResolvedValue([]);
47
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockResolvedValue('200');
48
+ const args = makeArgs({ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }) });
49
+ args.transactionData.gasLimit = '150';
50
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmNetworkFeeCryptoBaseUnit)(args)).resolves.toBe('2400');
51
+ (0, vitest_1.expect)(args.transactionData.gasLimit).toBe('240');
52
+ });
53
+ (0, vitest_1.it)('signs the buffered provider limit when the needed override cannot be built', async () => {
54
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockRejectedValue(new Error('Unable to locate allowance slot'));
55
+ const args = {
56
+ ...makeArgs({ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }) }),
57
+ providerGasLimit: '300',
58
+ };
59
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmNetworkFeeCryptoBaseUnit)(args)).resolves.toBe('3600');
60
+ (0, vitest_1.expect)(args.transactionData.gasLimit).toBe('360');
61
+ (0, vitest_1.expect)(stateOverride_1.estimateGasWithStateOverride).not.toHaveBeenCalled();
62
+ });
63
+ (0, vitest_1.it)('fails rather than trusting the provider limit when the overridden simulation reverts', async () => {
64
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockResolvedValue([]);
65
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockRejectedValue(new Error('execution reverted'));
66
+ const getFeeData = vitest_1.vi.fn();
67
+ const args = {
68
+ ...makeArgs({ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }), getFeeData }),
69
+ providerGasLimit: '300',
70
+ };
71
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmNetworkFeeCryptoBaseUnit)(args)).rejects.toThrow('execution reverted');
72
+ (0, vitest_1.expect)(getFeeData).not.toHaveBeenCalled();
73
+ });
74
+ });
75
+ (0, vitest_1.describe)('getEvmRateNetworkFeeCryptoBaseUnit', () => {
76
+ (0, vitest_1.beforeEach)(() => {
77
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockReset();
78
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockReset();
79
+ });
80
+ (0, vitest_1.it)('prices the provider limit as given without simulating', async () => {
81
+ const { transactionData, from, stateOverride, ...feeArgs } = makeArgs({
82
+ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }),
83
+ });
84
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmRateNetworkFeeCryptoBaseUnit)({
85
+ ...feeArgs,
86
+ providerGasLimit: '300',
87
+ simulation: { transactionData, from, stateOverride },
88
+ })).resolves.toBe('3000');
89
+ (0, vitest_1.expect)(stateOverride_1.getMinimalStateOverride).not.toHaveBeenCalled();
90
+ });
91
+ (0, vitest_1.it)('simulates when the provider has no gas limit', async () => {
92
+ vitest_1.vi.mocked(stateOverride_1.getMinimalStateOverride).mockResolvedValue([]);
93
+ vitest_1.vi.mocked(stateOverride_1.estimateGasWithStateOverride).mockResolvedValue('200');
94
+ const { transactionData, from, stateOverride, ...feeArgs } = makeArgs({
95
+ getGasFeeData: vitest_1.vi.fn().mockResolvedValue({ average: gasFees }),
96
+ });
97
+ await (0, vitest_1.expect)((0, getEvmNetworkFeeCryptoBaseUnit_1.getEvmRateNetworkFeeCryptoBaseUnit)({
98
+ ...feeArgs,
99
+ providerGasLimit: undefined,
100
+ simulation: { transactionData, from, stateOverride },
101
+ })).resolves.toBe('2400');
102
+ });
103
+ });
@@ -1,5 +1,8 @@
1
1
  import type { Asset } from '@shapeshiftoss/types';
2
2
  import type { StateOverride } from 'viem';
3
+ export declare class EstimationTimeoutError extends Error {
4
+ constructor();
5
+ }
3
6
  export declare const withTimeout: <T>(promise: Promise<T>) => Promise<T>;
4
7
  export type GetMinimalStateOverrideArgs = {
5
8
  sellAsset: Asset;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.estimateGasWithStateOverride = exports.getMinimalStateOverride = exports.withTimeout = void 0;
3
+ exports.estimateGasWithStateOverride = exports.getMinimalStateOverride = exports.withTimeout = exports.EstimationTimeoutError = void 0;
4
4
  const contracts_1 = require("@shapeshiftoss/contracts");
5
5
  const utils_1 = require("@shapeshiftoss/utils");
6
6
  const viem_1 = require("viem");
@@ -29,13 +29,19 @@ const discoveredSlots = new Map();
29
29
  const rawDiscoveredSlots = new Map();
30
30
  const failedSlotDiscoveries = new Map();
31
31
  const FAILED_DISCOVERY_TTL_MS = 60_000;
32
+ class EstimationTimeoutError extends Error {
33
+ constructor() {
34
+ super('State override estimation timed out');
35
+ }
36
+ }
37
+ exports.EstimationTimeoutError = EstimationTimeoutError;
32
38
  const withTimeout = async (promise) => {
33
39
  let timer;
34
40
  try {
35
41
  return await Promise.race([
36
42
  promise,
37
43
  new Promise((_, reject) => {
38
- timer = setTimeout(() => reject(new Error('State override estimation timed out')), ESTIMATION_TIMEOUT_MS);
44
+ timer = setTimeout(() => reject(new EstimationTimeoutError()), ESTIMATION_TIMEOUT_MS);
39
45
  }),
40
46
  ]);
41
47
  }
@@ -293,7 +299,7 @@ exports.getMinimalStateOverride = getMinimalStateOverride;
293
299
  // only the missing state. Estimation runs on our own RPCs - the node applies the same engine over
294
300
  // the patched pre-state, so the only systematic delta is the unrealized allowance-decrement refund
295
301
  // (a few k gas high, conservative).
296
- const estimateGasWithStateOverride = ({ to, data, stateOverride: prebuiltStateOverride, ...overrideArgs }) => (0, exports.withTimeout)((async () => {
302
+ const estimateGasWithStateOverride = async ({ to, data, stateOverride: prebuiltStateOverride, ...overrideArgs }) => {
297
303
  const client = (0, contracts_1.assertGetViemClient)(overrideArgs.sellAsset.chainId);
298
304
  const stateOverride = prebuiltStateOverride ?? (await (0, exports.getMinimalStateOverride)(overrideArgs));
299
305
  const gasLimit = await client.estimateGas({
@@ -304,5 +310,5 @@ const estimateGasWithStateOverride = ({ to, data, stateOverride: prebuiltStateOv
304
310
  ...(stateOverride ? { stateOverride } : {}),
305
311
  });
306
312
  return gasLimit.toString();
307
- })());
313
+ };
308
314
  exports.estimateGasWithStateOverride = estimateGasWithStateOverride;
@@ -44,6 +44,7 @@ const DAO_TREASURY_BY_CHAIN_ID = {
44
44
  [types_1.KnownChainIds.RobinhoodMainnet]: utils_1.DAO_TREASURY_ROBINHOOD,
45
45
  [types_1.KnownChainIds.PlasmaMainnet]: utils_1.DAO_TREASURY_PLASMA,
46
46
  [types_1.KnownChainIds.MegaEthMainnet]: utils_1.DAO_TREASURY_MEGAETH,
47
+ [types_1.KnownChainIds.UnichainMainnet]: utils_1.DAO_TREASURY_UNICHAIN,
47
48
  };
48
49
  const getTreasuryAddressFromChainId = (chainId) => {
49
50
  const maybeTreasuryChainId = (0, utils_1.isTreasuryChainId)(chainId) ? chainId : undefined;
@@ -25,6 +25,7 @@ const helpers_1 = require("./helpers");
25
25
  [types_1.KnownChainIds.RobinhoodMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
26
26
  [types_1.KnownChainIds.PlasmaMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
27
27
  [types_1.KnownChainIds.MegaEthMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
28
+ [types_1.KnownChainIds.UnichainMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
28
29
  [types_1.KnownChainIds.BitcoinMainnet]: 'bc1q9xrjfet2a05r3jvsxx66rru7pysevk5dvqasdw9eeea3rfqlk33qr4hghh',
29
30
  [types_1.KnownChainIds.SolanaMainnet]: 'FxXyPB5RH4uHLPPJR5H89zGwZp19juBetmRwrxfsLj2j',
30
31
  [types_1.KnownChainIds.StarknetMainnet]: '0x07ac2252f2da7cbf085e7a5ddc1318243aa818607cdd430dd2e17dd5d487606a',
@@ -1,13 +1,13 @@
1
1
  import type { AssetId, ChainId } from '@shapeshiftoss/caip';
2
2
  import type { EvmChainAdapter, near, SignTx, solana, starknet, sui, ton } from '@shapeshiftoss/chain-adapters';
3
3
  import type { TronSignTx } from '@shapeshiftoss/chain-adapters/src/tron/types';
4
- import type { SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
4
+ import type { AptosSignTx, SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
5
5
  import type { Asset, EvmChainId } from '@shapeshiftoss/types';
6
6
  import { TxStatus } from '@shapeshiftoss/unchained-client';
7
7
  import type { Result } from '@sniptt/monads';
8
8
  import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
9
9
  import type { TypedData } from 'eip-712';
10
- import type { CommonSwapMetadata, EvmTransactionExecutionProps, NearTransactionExecutionProps, SolanaTransactionExecutionProps, StarknetTransactionExecutionProps, SuiTransactionExecutionProps, SupportedTradeQuoteStepIndex, SwapErrorRight, SwapMetadata, SwapperMetadata, TonTransactionExecutionProps, TradeQuote, TradeQuoteStep, TradeRate, TradeRateStep, TradeStatus, TronTransactionExecutionProps } from '../types';
10
+ import type { AptosTransactionExecutionProps, CommonSwapMetadata, EvmTransactionExecutionProps, NearTransactionExecutionProps, SolanaTransactionExecutionProps, StarknetTransactionExecutionProps, SuiTransactionExecutionProps, SupportedTradeQuoteStepIndex, SwapErrorRight, SwapMetadata, SwapperMetadata, TonTransactionExecutionProps, TradeQuote, TradeQuoteStep, TradeRate, TradeRateStep, TradeStatus, TronTransactionExecutionProps } from '../types';
11
11
  import { TradeQuoteError } from '../types';
12
12
  export declare const getPermit2Eip712: (step: TradeQuoteStep | TradeRateStep | undefined) => TypedData | undefined;
13
13
  export declare const makeSwapErrorRight: ({ details, cause, code, message, }: {
@@ -43,6 +43,7 @@ export declare const executeSuiTransaction: (txToSign: SuiSignTx, callbacks: Sui
43
43
  export declare const executeNearTransaction: (txToSign: near.NearSignTx, callbacks: NearTransactionExecutionProps) => Promise<string>;
44
44
  export declare const executeStarknetTransaction: (txToSign: StarknetSignTx, callbacks: StarknetTransactionExecutionProps) => Promise<string>;
45
45
  export declare const executeTonTransaction: (txToSign: ton.TonSignTx, callbacks: TonTransactionExecutionProps) => Promise<string>;
46
+ export declare const executeAptosTransaction: (txToSign: AptosSignTx, callbacks: AptosTransactionExecutionProps) => Promise<string>;
46
47
  export declare const createDefaultStatusResponse: (buyTxHash?: string) => {
47
48
  status: TxStatus;
48
49
  buyTxHash: string | undefined;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getSwapMetadata = exports.buildSwapMetadata = exports.SolanaLogsError = exports.checkStarknetSwapStatus = exports.checkSuiSwapStatus = exports.checkSolanaSwapStatus = exports.getExecutableTradeStep = exports.isExecutableTradeQuote = exports.getInputOutputRate = exports.checkEvmSwapStatus = exports.checkSafeTransactionStatus = exports.createDefaultStatusResponse = exports.executeTonTransaction = exports.executeStarknetTransaction = exports.executeNearTransaction = exports.executeSuiTransaction = exports.executeTronTransaction = exports.executeSolanaTransaction = exports.executeEvmTransaction = exports.getHopByIndex = exports.makeSwapperAxiosServiceMonadic = exports.createCache = exports.makeTradeStepBuildFailedErr = exports.makeNetworkFeeEstimationFailedErr = exports.createTradeAmountTooSmallErr = exports.assertQuoteAddresses = exports.makeSwapErrorRight = exports.getPermit2Eip712 = void 0;
6
+ exports.getSwapMetadata = exports.buildSwapMetadata = exports.SolanaLogsError = exports.checkStarknetSwapStatus = exports.checkSuiSwapStatus = exports.checkSolanaSwapStatus = exports.getExecutableTradeStep = exports.isExecutableTradeQuote = exports.getInputOutputRate = exports.checkEvmSwapStatus = exports.checkSafeTransactionStatus = exports.createDefaultStatusResponse = exports.executeAptosTransaction = exports.executeTonTransaction = exports.executeStarknetTransaction = exports.executeNearTransaction = exports.executeSuiTransaction = exports.executeTronTransaction = exports.executeSolanaTransaction = exports.executeEvmTransaction = exports.getHopByIndex = exports.makeSwapperAxiosServiceMonadic = exports.createCache = exports.makeTradeStepBuildFailedErr = exports.makeNetworkFeeEstimationFailedErr = exports.createTradeAmountTooSmallErr = exports.assertQuoteAddresses = exports.makeSwapErrorRight = exports.getPermit2Eip712 = void 0;
7
7
  const caip_1 = require("@shapeshiftoss/caip");
8
8
  const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
9
9
  const unchained_client_1 = require("@shapeshiftoss/unchained-client");
@@ -151,6 +151,10 @@ const executeTonTransaction = (txToSign, callbacks) => {
151
151
  return callbacks.signAndBroadcastTransaction(txToSign);
152
152
  };
153
153
  exports.executeTonTransaction = executeTonTransaction;
154
+ const executeAptosTransaction = (txToSign, callbacks) => {
155
+ return callbacks.signAndBroadcastTransaction(txToSign);
156
+ };
157
+ exports.executeAptosTransaction = executeAptosTransaction;
154
158
  const createDefaultStatusResponse = (buyTxHash) => ({
155
159
  status: unchained_client_1.TxStatus.Unknown,
156
160
  buyTxHash,
@@ -275,34 +279,14 @@ const checkSuiSwapStatus = async ({ txHash, address, assertGetSuiChainAdapter, }
275
279
  throw new Error('Missing address');
276
280
  const adapter = assertGetSuiChainAdapter(caip_1.suiChainId);
277
281
  const client = adapter.getSuiClient();
278
- const txResponse = await client.getTransactionBlock({
282
+ const txResponse = await client.getTransaction({
279
283
  digest: txHash,
280
- options: {
281
- showEffects: true,
282
- showBalanceChanges: true,
283
- },
284
+ include: { balanceChanges: true },
284
285
  });
285
- const status = txResponse.effects?.status?.status === 'success' ? unchained_client_1.TxStatus.Confirmed : unchained_client_1.TxStatus.Failed;
286
- // Extract actual buy amount from balance changes
287
- let actualBuyAmountCryptoBaseUnit;
288
- if (txResponse.balanceChanges) {
289
- // Balance changes show the net effect on the user's balances
290
- // Positive amounts are received, negative are sent
291
- const receivedChanges = txResponse.balanceChanges.filter(change => {
292
- // The owner field is a discriminated union - check for AddressOwner variant
293
- // Handle both object and string cases
294
- const ownerAddress = change.owner && typeof change.owner === 'object' && 'AddressOwner' in change.owner
295
- ? change.owner.AddressOwner
296
- : change.owner && typeof change.owner === 'object' && 'ObjectOwner' in change.owner
297
- ? change.owner.ObjectOwner
298
- : null;
299
- return ownerAddress === address && Number(change.amount) > 0;
300
- });
301
- if (receivedChanges.length > 0) {
302
- // For swaps, we expect exactly one positive balance change (the buy asset)
303
- actualBuyAmountCryptoBaseUnit = receivedChanges[0].amount;
304
- }
305
- }
286
+ const status = txResponse.Transaction ? unchained_client_1.TxStatus.Confirmed : unchained_client_1.TxStatus.Failed;
287
+ // For swaps, we expect exactly one positive balance change for the receiver (the buy asset)
288
+ const actualBuyAmountCryptoBaseUnit = (txResponse.Transaction ?? txResponse.FailedTransaction).balanceChanges.find(change => change.address === address && BigInt(change.amount) > 0n)
289
+ ?.amount;
306
290
  return {
307
291
  status,
308
292
  buyTxHash: txHash,