@shapeshiftoss/swapper 20.4.0 → 20.6.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 +22 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.js +25 -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/constant.js +1 -0
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +5 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- 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/types.d.ts +1 -1
- package/dist/cjs/swappers/ZrxSwapper/types.js +1 -0
- package/dist/cjs/swappers/ZrxSwapper/utils/constants.js +1 -0
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
- package/dist/cjs/swappers/ZrxSwapper/utils/helpers.d.ts +1 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/helpers.js +5 -0
- 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 +2 -0
- package/dist/cjs/utils/helpers.test.js +2 -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 +22 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.js +22 -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/constant.js +2 -1
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +5 -0
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- 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/types.d.ts +1 -1
- package/dist/esm/swappers/ZrxSwapper/types.js +1 -0
- package/dist/esm/swappers/ZrxSwapper/utils/constants.js +1 -0
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
- package/dist/esm/swappers/ZrxSwapper/utils/helpers.d.ts +1 -1
- package/dist/esm/swappers/ZrxSwapper/utils/helpers.js +5 -0
- 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 +3 -1
- package/dist/esm/utils/helpers.test.js +2 -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,101 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from './getEvmNetworkFeeCryptoBaseUnit.js';
|
|
3
|
+
import { estimateGasWithStateOverride, EstimationTimeoutError, getMinimalStateOverride, } from './stateOverride.js';
|
|
4
|
+
vi.mock('./stateOverride', async (importActual) => ({
|
|
5
|
+
...(await importActual()),
|
|
6
|
+
getMinimalStateOverride: vi.fn(),
|
|
7
|
+
estimateGasWithStateOverride: vi.fn(),
|
|
8
|
+
}));
|
|
9
|
+
const gasFees = { gasPrice: '10' };
|
|
10
|
+
const makeTransactionData = () => ({ type: 'evm', to: '0x1', data: '0x', value: '0' });
|
|
11
|
+
const makeArgs = (adapter) => ({
|
|
12
|
+
adapter: adapter,
|
|
13
|
+
supportsEIP1559: false,
|
|
14
|
+
transactionData: makeTransactionData(),
|
|
15
|
+
from: '0x0000000000000000000000000000000000000001',
|
|
16
|
+
stateOverride: { sellAsset: {}, sellAmountCryptoBaseUnit: '1' },
|
|
17
|
+
});
|
|
18
|
+
describe('getEvmNetworkFeeCryptoBaseUnit state override', () => {
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
vi.mocked(getMinimalStateOverride).mockReset();
|
|
21
|
+
vi.mocked(estimateGasWithStateOverride).mockReset();
|
|
22
|
+
});
|
|
23
|
+
it('buffers the override gas limit onto the tx and prices the buffered limit', async () => {
|
|
24
|
+
vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
|
|
25
|
+
vi.mocked(estimateGasWithStateOverride).mockResolvedValue('200');
|
|
26
|
+
const args = makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }) });
|
|
27
|
+
await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('2400');
|
|
28
|
+
expect(args.transactionData.gasLimit).toBe('240');
|
|
29
|
+
});
|
|
30
|
+
it('falls back to plain estimation when the override simulation times out', async () => {
|
|
31
|
+
vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
|
|
32
|
+
vi.mocked(estimateGasWithStateOverride).mockRejectedValue(new EstimationTimeoutError());
|
|
33
|
+
const getFeeData = vi.fn().mockResolvedValue({
|
|
34
|
+
average: { chainSpecific: { gasLimit: '100', ...gasFees } },
|
|
35
|
+
});
|
|
36
|
+
const args = makeArgs({
|
|
37
|
+
getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }),
|
|
38
|
+
getFeeData,
|
|
39
|
+
});
|
|
40
|
+
await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('1200');
|
|
41
|
+
expect(args.transactionData.gasLimit).toBe('120');
|
|
42
|
+
});
|
|
43
|
+
it('estimates over a provider gas limit already set on the tx', async () => {
|
|
44
|
+
vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
|
|
45
|
+
vi.mocked(estimateGasWithStateOverride).mockResolvedValue('200');
|
|
46
|
+
const args = makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }) });
|
|
47
|
+
args.transactionData.gasLimit = '150';
|
|
48
|
+
await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('2400');
|
|
49
|
+
expect(args.transactionData.gasLimit).toBe('240');
|
|
50
|
+
});
|
|
51
|
+
it('signs the buffered provider limit when the needed override cannot be built', async () => {
|
|
52
|
+
vi.mocked(getMinimalStateOverride).mockRejectedValue(new Error('Unable to locate allowance slot'));
|
|
53
|
+
const args = {
|
|
54
|
+
...makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }) }),
|
|
55
|
+
providerGasLimit: '300',
|
|
56
|
+
};
|
|
57
|
+
await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('3600');
|
|
58
|
+
expect(args.transactionData.gasLimit).toBe('360');
|
|
59
|
+
expect(estimateGasWithStateOverride).not.toHaveBeenCalled();
|
|
60
|
+
});
|
|
61
|
+
it('fails rather than trusting the provider limit when the overridden simulation reverts', async () => {
|
|
62
|
+
vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
|
|
63
|
+
vi.mocked(estimateGasWithStateOverride).mockRejectedValue(new Error('execution reverted'));
|
|
64
|
+
const getFeeData = vi.fn();
|
|
65
|
+
const args = {
|
|
66
|
+
...makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }), getFeeData }),
|
|
67
|
+
providerGasLimit: '300',
|
|
68
|
+
};
|
|
69
|
+
await expect(getEvmNetworkFeeCryptoBaseUnit(args)).rejects.toThrow('execution reverted');
|
|
70
|
+
expect(getFeeData).not.toHaveBeenCalled();
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('getEvmRateNetworkFeeCryptoBaseUnit', () => {
|
|
74
|
+
beforeEach(() => {
|
|
75
|
+
vi.mocked(getMinimalStateOverride).mockReset();
|
|
76
|
+
vi.mocked(estimateGasWithStateOverride).mockReset();
|
|
77
|
+
});
|
|
78
|
+
it('prices the provider limit as given without simulating', async () => {
|
|
79
|
+
const { transactionData, from, stateOverride, ...feeArgs } = makeArgs({
|
|
80
|
+
getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }),
|
|
81
|
+
});
|
|
82
|
+
await expect(getEvmRateNetworkFeeCryptoBaseUnit({
|
|
83
|
+
...feeArgs,
|
|
84
|
+
providerGasLimit: '300',
|
|
85
|
+
simulation: { transactionData, from, stateOverride },
|
|
86
|
+
})).resolves.toBe('3000');
|
|
87
|
+
expect(getMinimalStateOverride).not.toHaveBeenCalled();
|
|
88
|
+
});
|
|
89
|
+
it('simulates when the provider has no gas limit', async () => {
|
|
90
|
+
vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
|
|
91
|
+
vi.mocked(estimateGasWithStateOverride).mockResolvedValue('200');
|
|
92
|
+
const { transactionData, from, stateOverride, ...feeArgs } = makeArgs({
|
|
93
|
+
getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }),
|
|
94
|
+
});
|
|
95
|
+
await expect(getEvmRateNetworkFeeCryptoBaseUnit({
|
|
96
|
+
...feeArgs,
|
|
97
|
+
providerGasLimit: undefined,
|
|
98
|
+
simulation: { transactionData, from, stateOverride },
|
|
99
|
+
})).resolves.toBe('2400');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
@@ -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;
|
|
@@ -26,13 +26,18 @@ const discoveredSlots = new Map();
|
|
|
26
26
|
const rawDiscoveredSlots = new Map();
|
|
27
27
|
const failedSlotDiscoveries = new Map();
|
|
28
28
|
const FAILED_DISCOVERY_TTL_MS = 60_000;
|
|
29
|
+
export class EstimationTimeoutError extends Error {
|
|
30
|
+
constructor() {
|
|
31
|
+
super('State override estimation timed out');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
29
34
|
export const withTimeout = async (promise) => {
|
|
30
35
|
let timer;
|
|
31
36
|
try {
|
|
32
37
|
return await Promise.race([
|
|
33
38
|
promise,
|
|
34
39
|
new Promise((_, reject) => {
|
|
35
|
-
timer = setTimeout(() => reject(new
|
|
40
|
+
timer = setTimeout(() => reject(new EstimationTimeoutError()), ESTIMATION_TIMEOUT_MS);
|
|
36
41
|
}),
|
|
37
42
|
]);
|
|
38
43
|
}
|
|
@@ -288,7 +293,7 @@ export const getMinimalStateOverride = async ({ sellAsset, sellAmountCryptoBaseU
|
|
|
288
293
|
// only the missing state. Estimation runs on our own RPCs - the node applies the same engine over
|
|
289
294
|
// the patched pre-state, so the only systematic delta is the unrealized allowance-decrement refund
|
|
290
295
|
// (a few k gas high, conservative).
|
|
291
|
-
export const estimateGasWithStateOverride = ({ to, data, stateOverride: prebuiltStateOverride, ...overrideArgs }) =>
|
|
296
|
+
export const estimateGasWithStateOverride = async ({ to, data, stateOverride: prebuiltStateOverride, ...overrideArgs }) => {
|
|
292
297
|
const client = assertGetViemClient(overrideArgs.sellAsset.chainId);
|
|
293
298
|
const stateOverride = prebuiltStateOverride ?? (await getMinimalStateOverride(overrideArgs));
|
|
294
299
|
const gasLimit = await client.estimateGas({
|
|
@@ -299,4 +304,4 @@ export const estimateGasWithStateOverride = ({ to, data, stateOverride: prebuilt
|
|
|
299
304
|
...(stateOverride ? { stateOverride } : {}),
|
|
300
305
|
});
|
|
301
306
|
return gasLimit.toString();
|
|
302
|
-
}
|
|
307
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CHAIN_NAMESPACE, fromAssetId } from '@shapeshiftoss/caip';
|
|
2
2
|
import { KnownChainIds } from '@shapeshiftoss/types';
|
|
3
|
-
import { chainIdToFeeAssetId, DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BOB, DAO_TREASURY_BSC, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_HYPEREVM, DAO_TREASURY_MEGAETH, DAO_TREASURY_MONAD, DAO_TREASURY_OPTIMISM, DAO_TREASURY_PLASMA, DAO_TREASURY_POLYGON, DAO_TREASURY_ROBINHOOD, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, DAO_TREASURY_TON, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
3
|
+
import { chainIdToFeeAssetId, DAO_TREASURY_ARBITRUM, DAO_TREASURY_AVALANCHE, DAO_TREASURY_BASE, DAO_TREASURY_BITCOIN, DAO_TREASURY_BOB, DAO_TREASURY_BSC, DAO_TREASURY_ELYSIUM, DAO_TREASURY_ETHEREUM_MAINNET, DAO_TREASURY_GNOSIS, DAO_TREASURY_HYPEREVM, DAO_TREASURY_MEGAETH, DAO_TREASURY_MONAD, DAO_TREASURY_OPTIMISM, DAO_TREASURY_PLASMA, DAO_TREASURY_POLYGON, DAO_TREASURY_ROBINHOOD, DAO_TREASURY_SOLANA, DAO_TREASURY_STARKNET, DAO_TREASURY_TON, DAO_TREASURY_UNICHAIN, isTreasuryChainId, } from '@shapeshiftoss/utils';
|
|
4
4
|
import { SwapperName } from '../types.js';
|
|
5
5
|
export const getTradeAmount = (input) => 'buyAmountCryptoBaseUnit' in input
|
|
6
6
|
? { direction: 'exactOut', cryptoBaseUnit: input.buyAmountCryptoBaseUnit }
|
|
@@ -38,6 +38,8 @@ const DAO_TREASURY_BY_CHAIN_ID = {
|
|
|
38
38
|
[KnownChainIds.RobinhoodMainnet]: DAO_TREASURY_ROBINHOOD,
|
|
39
39
|
[KnownChainIds.PlasmaMainnet]: DAO_TREASURY_PLASMA,
|
|
40
40
|
[KnownChainIds.MegaEthMainnet]: DAO_TREASURY_MEGAETH,
|
|
41
|
+
[KnownChainIds.UnichainMainnet]: DAO_TREASURY_UNICHAIN,
|
|
42
|
+
[KnownChainIds.ElysiumMainnet]: DAO_TREASURY_ELYSIUM,
|
|
41
43
|
};
|
|
42
44
|
export const getTreasuryAddressFromChainId = (chainId) => {
|
|
43
45
|
const maybeTreasuryChainId = isTreasuryChainId(chainId) ? chainId : undefined;
|
|
@@ -23,6 +23,8 @@ describe('getTreasuryAddressFromChainId', () => {
|
|
|
23
23
|
[KnownChainIds.RobinhoodMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
|
|
24
24
|
[KnownChainIds.PlasmaMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
|
|
25
25
|
[KnownChainIds.MegaEthMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
|
|
26
|
+
[KnownChainIds.UnichainMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
|
|
27
|
+
[KnownChainIds.ElysiumMainnet]: '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC',
|
|
26
28
|
[KnownChainIds.BitcoinMainnet]: 'bc1q9xrjfet2a05r3jvsxx66rru7pysevk5dvqasdw9eeea3rfqlk33qr4hghh',
|
|
27
29
|
[KnownChainIds.SolanaMainnet]: 'FxXyPB5RH4uHLPPJR5H89zGwZp19juBetmRwrxfsLj2j',
|
|
28
30
|
[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.js';
|
|
10
|
+
import type { AptosTransactionExecutionProps, CommonSwapMetadata, EvmTransactionExecutionProps, NearTransactionExecutionProps, SolanaTransactionExecutionProps, StarknetTransactionExecutionProps, SuiTransactionExecutionProps, SupportedTradeQuoteStepIndex, SwapErrorRight, SwapMetadata, SwapperMetadata, TonTransactionExecutionProps, TradeQuote, TradeQuoteStep, TradeRate, TradeRateStep, TradeStatus, TronTransactionExecutionProps } from '../types.js';
|
|
11
11
|
import { TradeQuoteError } from '../types.js';
|
|
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/esm/utils/index.js
CHANGED
|
@@ -129,6 +129,9 @@ export const executeStarknetTransaction = (txToSign, callbacks) => {
|
|
|
129
129
|
export const executeTonTransaction = (txToSign, callbacks) => {
|
|
130
130
|
return callbacks.signAndBroadcastTransaction(txToSign);
|
|
131
131
|
};
|
|
132
|
+
export const executeAptosTransaction = (txToSign, callbacks) => {
|
|
133
|
+
return callbacks.signAndBroadcastTransaction(txToSign);
|
|
134
|
+
};
|
|
132
135
|
export const createDefaultStatusResponse = (buyTxHash) => ({
|
|
133
136
|
status: TxStatus.Unknown,
|
|
134
137
|
buyTxHash,
|
|
@@ -246,34 +249,14 @@ export const checkSuiSwapStatus = async ({ txHash, address, assertGetSuiChainAda
|
|
|
246
249
|
throw new Error('Missing address');
|
|
247
250
|
const adapter = assertGetSuiChainAdapter(suiChainId);
|
|
248
251
|
const client = adapter.getSuiClient();
|
|
249
|
-
const txResponse = await client.
|
|
252
|
+
const txResponse = await client.getTransaction({
|
|
250
253
|
digest: txHash,
|
|
251
|
-
|
|
252
|
-
showEffects: true,
|
|
253
|
-
showBalanceChanges: true,
|
|
254
|
-
},
|
|
254
|
+
include: { balanceChanges: true },
|
|
255
255
|
});
|
|
256
|
-
const status = txResponse.
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
// Balance changes show the net effect on the user's balances
|
|
261
|
-
// Positive amounts are received, negative are sent
|
|
262
|
-
const receivedChanges = txResponse.balanceChanges.filter(change => {
|
|
263
|
-
// The owner field is a discriminated union - check for AddressOwner variant
|
|
264
|
-
// Handle both object and string cases
|
|
265
|
-
const ownerAddress = change.owner && typeof change.owner === 'object' && 'AddressOwner' in change.owner
|
|
266
|
-
? change.owner.AddressOwner
|
|
267
|
-
: change.owner && typeof change.owner === 'object' && 'ObjectOwner' in change.owner
|
|
268
|
-
? change.owner.ObjectOwner
|
|
269
|
-
: null;
|
|
270
|
-
return ownerAddress === address && Number(change.amount) > 0;
|
|
271
|
-
});
|
|
272
|
-
if (receivedChanges.length > 0) {
|
|
273
|
-
// For swaps, we expect exactly one positive balance change (the buy asset)
|
|
274
|
-
actualBuyAmountCryptoBaseUnit = receivedChanges[0].amount;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
256
|
+
const status = txResponse.Transaction ? TxStatus.Confirmed : TxStatus.Failed;
|
|
257
|
+
// For swaps, we expect exactly one positive balance change for the receiver (the buy asset)
|
|
258
|
+
const actualBuyAmountCryptoBaseUnit = (txResponse.Transaction ?? txResponse.FailedTransaction).balanceChanges.find(change => change.address === address && BigInt(change.amount) > 0n)
|
|
259
|
+
?.amount;
|
|
277
260
|
return {
|
|
278
261
|
status,
|
|
279
262
|
buyTxHash: txHash,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapeshiftoss/swapper",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.6.0",
|
|
4
4
|
"repository": "https://github.com/shapeshift/web",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -23,14 +23,13 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@arbitrum/sdk": "^4.0.1",
|
|
25
25
|
"@avnu/avnu-sdk": "^4.0.1",
|
|
26
|
-
"@cetusprotocol/aggregator-sdk": "
|
|
27
|
-
"@cetusprotocol/cetus-sui-clmm-sdk": "5.4.0",
|
|
26
|
+
"@cetusprotocol/aggregator-sdk": "1.7.5",
|
|
28
27
|
"@coral-xyz/anchor": "0.29.0",
|
|
29
28
|
"@cowprotocol/app-data": "^2.3.0",
|
|
30
29
|
"@defuse-protocol/one-click-sdk-typescript": "^0.1.1-0.2",
|
|
31
30
|
"@gobob/bob-sdk": "6.0.1",
|
|
32
|
-
"@mysten/sui": "
|
|
33
|
-
"@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.
|
|
31
|
+
"@mysten/sui": "2.31.2",
|
|
32
|
+
"@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.3",
|
|
34
33
|
"@sniptt/monads": "^0.5.10",
|
|
35
34
|
"@solana/web3.js": "1.98.0",
|
|
36
35
|
"@ston-fi/omniston-sdk": "^0.7.8",
|
|
@@ -50,13 +49,13 @@
|
|
|
50
49
|
"retry-axios": "^2.6.0",
|
|
51
50
|
"uuid": "^9.0.0",
|
|
52
51
|
"viem": "2.55.11",
|
|
53
|
-
"@shapeshiftoss/
|
|
54
|
-
"@shapeshiftoss/caip": "^8.17.2",
|
|
55
|
-
"@shapeshiftoss/types": "^9.1.0",
|
|
56
|
-
"@shapeshiftoss/contracts": "^1.1.0",
|
|
57
|
-
"@shapeshiftoss/utils": "^1.4.0",
|
|
52
|
+
"@shapeshiftoss/caip": "^8.19.0",
|
|
58
53
|
"@shapeshiftoss/hdwallet-core": "^1.62.41",
|
|
59
|
-
"@shapeshiftoss/
|
|
54
|
+
"@shapeshiftoss/chain-adapters": "^11.9.0",
|
|
55
|
+
"@shapeshiftoss/types": "^9.3.0",
|
|
56
|
+
"@shapeshiftoss/unchained-client": "^10.17.0",
|
|
57
|
+
"@shapeshiftoss/utils": "^2.1.0",
|
|
58
|
+
"@shapeshiftoss/contracts": "^2.1.0"
|
|
60
59
|
},
|
|
61
60
|
"devDependencies": {
|
|
62
61
|
"@types/lodash": "^4.14.178",
|