@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.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
- package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +17 -22
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
- package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
- package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
- package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +5 -7
- package/dist/cjs/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
- package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
- package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
- package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
- package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +21 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.js +24 -0
- package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
- package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
- package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
- package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
- package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
- package/dist/cjs/types.d.ts +36 -8
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/utils/aptos/constants.d.ts +2 -0
- package/dist/cjs/utils/aptos/constants.js +7 -0
- package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
- package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
- package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
- package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
- package/dist/cjs/utils/aptos/index.d.ts +3 -0
- package/dist/cjs/utils/aptos/index.js +19 -0
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
- package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
- package/dist/cjs/utils/evm/stateOverride.js +10 -4
- package/dist/cjs/utils/helpers.js +1 -0
- package/dist/cjs/utils/helpers.test.js +1 -0
- package/dist/cjs/utils/index.d.ts +3 -2
- package/dist/cjs/utils/index.js +11 -27
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
- package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
- package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +18 -23
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
- package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
- package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
- package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
- package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
- package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
- package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
- package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
- package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +6 -8
- package/dist/esm/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
- package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
- package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/index.js +2 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
- package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
- package/dist/esm/swappers/KyberSwapper/types.js +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +21 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.js +21 -0
- package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
- package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
- package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
- package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
- package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
- package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +34 -53
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
- package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
- package/dist/esm/types.d.ts +36 -8
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/aptos/constants.d.ts +2 -0
- package/dist/esm/utils/aptos/constants.js +4 -0
- package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
- package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
- package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
- package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
- package/dist/esm/utils/aptos/index.d.ts +3 -0
- package/dist/esm/utils/aptos/index.js +3 -0
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
- package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
- package/dist/esm/utils/evm/stateOverride.js +8 -3
- package/dist/esm/utils/helpers.js +2 -1
- package/dist/esm/utils/helpers.test.js +1 -0
- package/dist/esm/utils/index.d.ts +3 -2
- package/dist/esm/utils/index.js +9 -26
- 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
|
|
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 }) =>
|
|
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;
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -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.
|
|
282
|
+
const txResponse = await client.getTransaction({
|
|
279
283
|
digest: txHash,
|
|
280
|
-
|
|
281
|
-
showEffects: true,
|
|
282
|
-
showBalanceChanges: true,
|
|
283
|
-
},
|
|
284
|
+
include: { balanceChanges: true },
|
|
284
285
|
});
|
|
285
|
-
const status = txResponse.
|
|
286
|
-
//
|
|
287
|
-
|
|
288
|
-
|
|
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,
|