@sodax/sdk 0.0.1-rc.7 → 0.0.1-rc.9
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/README.md +3 -1
- package/dist/index.cjs +11147 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +6831 -0
- package/dist/index.d.ts +6830 -9
- package/dist/index.mjs +10991 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +20 -5
- package/dist/abis/asset-manager.abi.d.ts +0 -418
- package/dist/abis/asset-manager.abi.d.ts.map +0 -1
- package/dist/abis/asset-manager.abi.js +0 -542
- package/dist/abis/asset-manager.abi.js.map +0 -1
- package/dist/abis/connection.abi.d.ts +0 -72
- package/dist/abis/connection.abi.d.ts.map +0 -1
- package/dist/abis/connection.abi.js +0 -92
- package/dist/abis/connection.abi.js.map +0 -1
- package/dist/abis/erc20.abi.d.ts +0 -236
- package/dist/abis/erc20.abi.d.ts.map +0 -1
- package/dist/abis/erc20.abi.js +0 -311
- package/dist/abis/erc20.abi.js.map +0 -1
- package/dist/abis/index.d.ts +0 -10
- package/dist/abis/index.d.ts.map +0 -1
- package/dist/abis/index.js +0 -10
- package/dist/abis/index.js.map +0 -1
- package/dist/abis/intents.abi.d.ts +0 -901
- package/dist/abis/intents.abi.d.ts.map +0 -1
- package/dist/abis/intents.abi.js +0 -1158
- package/dist/abis/intents.abi.js.map +0 -1
- package/dist/abis/pool.abi.d.ts +0 -626
- package/dist/abis/pool.abi.d.ts.map +0 -1
- package/dist/abis/pool.abi.js +0 -812
- package/dist/abis/pool.abi.js.map +0 -1
- package/dist/abis/spokeAssetManager.abi.d.ts +0 -169
- package/dist/abis/spokeAssetManager.abi.d.ts.map +0 -1
- package/dist/abis/spokeAssetManager.abi.js +0 -217
- package/dist/abis/spokeAssetManager.abi.js.map +0 -1
- package/dist/abis/uiPoolData.abi.d.ts +0 -369
- package/dist/abis/uiPoolData.abi.d.ts.map +0 -1
- package/dist/abis/uiPoolData.abi.js +0 -476
- package/dist/abis/uiPoolData.abi.js.map +0 -1
- package/dist/abis/vaultToken.abi.d.ts +0 -816
- package/dist/abis/vaultToken.abi.d.ts.map +0 -1
- package/dist/abis/vaultToken.abi.js +0 -1062
- package/dist/abis/vaultToken.abi.js.map +0 -1
- package/dist/abis/walletFactory.abi.d.ts +0 -20
- package/dist/abis/walletFactory.abi.d.ts.map +0 -1
- package/dist/abis/walletFactory.abi.js +0 -27
- package/dist/abis/walletFactory.abi.js.map +0 -1
- package/dist/constants.d.ts +0 -550
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -1189
- package/dist/constants.js.map +0 -1
- package/dist/constants.test.d.ts +0 -2
- package/dist/constants.test.d.ts.map +0 -1
- package/dist/constants.test.js +0 -129
- package/dist/constants.test.js.map +0 -1
- package/dist/entities/Providers.d.ts +0 -52
- package/dist/entities/Providers.d.ts.map +0 -1
- package/dist/entities/Providers.js +0 -49
- package/dist/entities/Providers.js.map +0 -1
- package/dist/entities/Sodax.d.ts +0 -23
- package/dist/entities/Sodax.d.ts.map +0 -1
- package/dist/entities/Sodax.js +0 -29
- package/dist/entities/Sodax.js.map +0 -1
- package/dist/entities/Sodax.test.d.ts +0 -2
- package/dist/entities/Sodax.test.d.ts.map +0 -1
- package/dist/entities/Sodax.test.js +0 -392
- package/dist/entities/Sodax.test.js.map +0 -1
- package/dist/entities/cosmos/CW20Token.d.ts +0 -39
- package/dist/entities/cosmos/CW20Token.d.ts.map +0 -1
- package/dist/entities/cosmos/CW20Token.js +0 -65
- package/dist/entities/cosmos/CW20Token.js.map +0 -1
- package/dist/entities/cosmos/CWSpokeProvider.d.ts +0 -78
- package/dist/entities/cosmos/CWSpokeProvider.d.ts.map +0 -1
- package/dist/entities/cosmos/CWSpokeProvider.js +0 -127
- package/dist/entities/cosmos/CWSpokeProvider.js.map +0 -1
- package/dist/entities/icon/HanaWalletConnector.d.ts +0 -36
- package/dist/entities/icon/HanaWalletConnector.d.ts.map +0 -1
- package/dist/entities/icon/HanaWalletConnector.js +0 -92
- package/dist/entities/icon/HanaWalletConnector.js.map +0 -1
- package/dist/entities/icon/IconSpokeProvider.d.ts +0 -10
- package/dist/entities/icon/IconSpokeProvider.d.ts.map +0 -1
- package/dist/entities/icon/IconSpokeProvider.js +0 -12
- package/dist/entities/icon/IconSpokeProvider.js.map +0 -1
- package/dist/entities/icon/index.d.ts +0 -4
- package/dist/entities/icon/index.d.ts.map +0 -1
- package/dist/entities/icon/index.js +0 -4
- package/dist/entities/icon/index.js.map +0 -1
- package/dist/entities/icon/utils.d.ts +0 -3
- package/dist/entities/icon/utils.d.ts.map +0 -1
- package/dist/entities/icon/utils.js +0 -4
- package/dist/entities/icon/utils.js.map +0 -1
- package/dist/entities/index.d.ts +0 -7
- package/dist/entities/index.d.ts.map +0 -1
- package/dist/entities/index.js +0 -7
- package/dist/entities/index.js.map +0 -1
- package/dist/entities/solana/Configs.d.ts +0 -10
- package/dist/entities/solana/Configs.d.ts.map +0 -1
- package/dist/entities/solana/Configs.js +0 -50
- package/dist/entities/solana/Configs.js.map +0 -1
- package/dist/entities/solana/SolanaSpokeProvider.d.ts +0 -9
- package/dist/entities/solana/SolanaSpokeProvider.d.ts.map +0 -1
- package/dist/entities/solana/SolanaSpokeProvider.js +0 -9
- package/dist/entities/solana/SolanaSpokeProvider.js.map +0 -1
- package/dist/entities/solana/SolanaWalletProvider.d.ts +0 -20
- package/dist/entities/solana/SolanaWalletProvider.d.ts.map +0 -1
- package/dist/entities/solana/SolanaWalletProvider.js +0 -53
- package/dist/entities/solana/SolanaWalletProvider.js.map +0 -1
- package/dist/entities/solana/index.d.ts +0 -4
- package/dist/entities/solana/index.d.ts.map +0 -1
- package/dist/entities/solana/index.js +0 -4
- package/dist/entities/solana/index.js.map +0 -1
- package/dist/entities/solana/pda/pda.d.ts +0 -45
- package/dist/entities/solana/pda/pda.d.ts.map +0 -1
- package/dist/entities/solana/pda/pda.js +0 -44
- package/dist/entities/solana/pda/pda.js.map +0 -1
- package/dist/entities/solana/types/asset_manager.d.ts +0 -919
- package/dist/entities/solana/types/asset_manager.d.ts.map +0 -1
- package/dist/entities/solana/types/asset_manager.js +0 -2
- package/dist/entities/solana/types/asset_manager.js.map +0 -1
- package/dist/entities/solana/types/connection.d.ts +0 -446
- package/dist/entities/solana/types/connection.d.ts.map +0 -1
- package/dist/entities/solana/types/connection.js +0 -2
- package/dist/entities/solana/types/connection.js.map +0 -1
- package/dist/entities/solana/types/rate_limit_contract.d.ts +0 -348
- package/dist/entities/solana/types/rate_limit_contract.d.ts.map +0 -1
- package/dist/entities/solana/types/rate_limit_contract.js +0 -2
- package/dist/entities/solana/types/rate_limit_contract.js.map +0 -1
- package/dist/entities/solana/utils/utils.d.ts +0 -6
- package/dist/entities/solana/utils/utils.d.ts.map +0 -1
- package/dist/entities/solana/utils/utils.js +0 -18
- package/dist/entities/solana/utils/utils.js.map +0 -1
- package/dist/entities/stellar/StellarSpokeProvider.d.ts +0 -17
- package/dist/entities/stellar/StellarSpokeProvider.d.ts.map +0 -1
- package/dist/entities/stellar/StellarSpokeProvider.js +0 -125
- package/dist/entities/stellar/StellarSpokeProvider.js.map +0 -1
- package/dist/entities/sui/SuiSpokeProvider.d.ts +0 -35
- package/dist/entities/sui/SuiSpokeProvider.d.ts.map +0 -1
- package/dist/entities/sui/SuiSpokeProvider.js +0 -145
- package/dist/entities/sui/SuiSpokeProvider.js.map +0 -1
- package/dist/errors.d.ts +0 -2
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -2
- package/dist/errors.js.map +0 -1
- package/dist/guards.d.ts +0 -25
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -110
- package/dist/guards.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -10
- package/dist/index.js.map +0 -1
- package/dist/services/hub/EvmAssetManagerService.d.ts +0 -61
- package/dist/services/hub/EvmAssetManagerService.d.ts.map +0 -1
- package/dist/services/hub/EvmAssetManagerService.js +0 -103
- package/dist/services/hub/EvmAssetManagerService.js.map +0 -1
- package/dist/services/hub/EvmVaultTokenService.d.ts +0 -81
- package/dist/services/hub/EvmVaultTokenService.d.ts.map +0 -1
- package/dist/services/hub/EvmVaultTokenService.js +0 -161
- package/dist/services/hub/EvmVaultTokenService.js.map +0 -1
- package/dist/services/hub/EvmWalletAbstraction.d.ts +0 -9
- package/dist/services/hub/EvmWalletAbstraction.d.ts.map +0 -1
- package/dist/services/hub/EvmWalletAbstraction.js +0 -14
- package/dist/services/hub/EvmWalletAbstraction.js.map +0 -1
- package/dist/services/hub/index.d.ts +0 -4
- package/dist/services/hub/index.d.ts.map +0 -1
- package/dist/services/hub/index.js +0 -4
- package/dist/services/hub/index.js.map +0 -1
- package/dist/services/index.d.ts +0 -7
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -7
- package/dist/services/index.js.map +0 -1
- package/dist/services/intentRelay/IntentRelayApiService.d.ts +0 -112
- package/dist/services/intentRelay/IntentRelayApiService.d.ts.map +0 -1
- package/dist/services/intentRelay/IntentRelayApiService.js +0 -160
- package/dist/services/intentRelay/IntentRelayApiService.js.map +0 -1
- package/dist/services/intentRelay/IntentRelayApiService.test.d.ts +0 -2
- package/dist/services/intentRelay/IntentRelayApiService.test.d.ts.map +0 -1
- package/dist/services/intentRelay/IntentRelayApiService.test.js +0 -134
- package/dist/services/intentRelay/IntentRelayApiService.test.js.map +0 -1
- package/dist/services/intentRelay/index.d.ts +0 -2
- package/dist/services/intentRelay/index.d.ts.map +0 -1
- package/dist/services/intentRelay/index.js +0 -2
- package/dist/services/intentRelay/index.js.map +0 -1
- package/dist/services/moneyMarket/MoneyMarketService.d.ts +0 -525
- package/dist/services/moneyMarket/MoneyMarketService.d.ts.map +0 -1
- package/dist/services/moneyMarket/MoneyMarketService.js +0 -814
- package/dist/services/moneyMarket/MoneyMarketService.js.map +0 -1
- package/dist/services/moneyMarket/MoneyMarketService.test.d.ts +0 -2
- package/dist/services/moneyMarket/MoneyMarketService.test.d.ts.map +0 -1
- package/dist/services/moneyMarket/MoneyMarketService.test.js +0 -262
- package/dist/services/moneyMarket/MoneyMarketService.test.js.map +0 -1
- package/dist/services/moneyMarket/index.d.ts +0 -2
- package/dist/services/moneyMarket/index.d.ts.map +0 -1
- package/dist/services/moneyMarket/index.js +0 -2
- package/dist/services/moneyMarket/index.js.map +0 -1
- package/dist/services/shared/Erc20Service.d.ts +0 -42
- package/dist/services/shared/Erc20Service.d.ts.map +0 -1
- package/dist/services/shared/Erc20Service.js +0 -108
- package/dist/services/shared/Erc20Service.js.map +0 -1
- package/dist/services/shared/index.d.ts +0 -2
- package/dist/services/shared/index.d.ts.map +0 -1
- package/dist/services/shared/index.js +0 -2
- package/dist/services/shared/index.js.map +0 -1
- package/dist/services/solver/EvmSolverService.d.ts +0 -125
- package/dist/services/solver/EvmSolverService.d.ts.map +0 -1
- package/dist/services/solver/EvmSolverService.js +0 -166
- package/dist/services/solver/EvmSolverService.js.map +0 -1
- package/dist/services/solver/SolverApiService.d.ts +0 -40
- package/dist/services/solver/SolverApiService.d.ts.map +0 -1
- package/dist/services/solver/SolverApiService.js +0 -157
- package/dist/services/solver/SolverApiService.js.map +0 -1
- package/dist/services/solver/SolverApiService.test.d.ts +0 -2
- package/dist/services/solver/SolverApiService.test.d.ts.map +0 -1
- package/dist/services/solver/SolverApiService.test.js +0 -181
- package/dist/services/solver/SolverApiService.test.js.map +0 -1
- package/dist/services/solver/SolverService.d.ts +0 -295
- package/dist/services/solver/SolverService.d.ts.map +0 -1
- package/dist/services/solver/SolverService.js +0 -429
- package/dist/services/solver/SolverService.js.map +0 -1
- package/dist/services/solver/SolverService.test.d.ts +0 -2
- package/dist/services/solver/SolverService.test.d.ts.map +0 -1
- package/dist/services/solver/SolverService.test.js +0 -439
- package/dist/services/solver/SolverService.test.js.map +0 -1
- package/dist/services/solver/index.d.ts +0 -3
- package/dist/services/solver/index.d.ts.map +0 -1
- package/dist/services/solver/index.js +0 -3
- package/dist/services/solver/index.js.map +0 -1
- package/dist/services/spoke/CWSpokeService.d.ts +0 -67
- package/dist/services/spoke/CWSpokeService.d.ts.map +0 -1
- package/dist/services/spoke/CWSpokeService.js +0 -75
- package/dist/services/spoke/CWSpokeService.js.map +0 -1
- package/dist/services/spoke/EvmSpokeService.d.ts +0 -62
- package/dist/services/spoke/EvmSpokeService.d.ts.map +0 -1
- package/dist/services/spoke/EvmSpokeService.js +0 -120
- package/dist/services/spoke/EvmSpokeService.js.map +0 -1
- package/dist/services/spoke/IconSpokeService.d.ts +0 -56
- package/dist/services/spoke/IconSpokeService.d.ts.map +0 -1
- package/dist/services/spoke/IconSpokeService.js +0 -127
- package/dist/services/spoke/IconSpokeService.js.map +0 -1
- package/dist/services/spoke/SolanaSpokeService.d.ts +0 -46
- package/dist/services/spoke/SolanaSpokeService.d.ts.map +0 -1
- package/dist/services/spoke/SolanaSpokeService.js +0 -164
- package/dist/services/spoke/SolanaSpokeService.js.map +0 -1
- package/dist/services/spoke/SpokeService.d.ts +0 -34
- package/dist/services/spoke/SpokeService.d.ts.map +0 -1
- package/dist/services/spoke/SpokeService.js +0 -101
- package/dist/services/spoke/SpokeService.js.map +0 -1
- package/dist/services/spoke/StellarSpokeService.d.ts +0 -35
- package/dist/services/spoke/StellarSpokeService.d.ts.map +0 -1
- package/dist/services/spoke/StellarSpokeService.js +0 -39
- package/dist/services/spoke/StellarSpokeService.js.map +0 -1
- package/dist/services/spoke/SuiSpokeService.d.ts +0 -69
- package/dist/services/spoke/SuiSpokeService.d.ts.map +0 -1
- package/dist/services/spoke/SuiSpokeService.js +0 -73
- package/dist/services/spoke/SuiSpokeService.js.map +0 -1
- package/dist/services/spoke/index.d.ts +0 -3
- package/dist/services/spoke/index.d.ts.map +0 -1
- package/dist/services/spoke/index.js +0 -3
- package/dist/services/spoke/index.js.map +0 -1
- package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts +0 -2
- package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts.map +0 -1
- package/dist/tests/services/hub/EvmAssetManagerService.test.js +0 -138
- package/dist/tests/services/hub/EvmAssetManagerService.test.js.map +0 -1
- package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts +0 -2
- package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts.map +0 -1
- package/dist/tests/services/hub/EvmMoneyMarketService.test.js +0 -121
- package/dist/tests/services/hub/EvmMoneyMarketService.test.js.map +0 -1
- package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts +0 -2
- package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts.map +0 -1
- package/dist/tests/services/hub/EvmVaultTokenService.test.js +0 -98
- package/dist/tests/services/hub/EvmVaultTokenService.test.js.map +0 -1
- package/dist/tests/services/spoke/EvmSpokeService.test.d.ts +0 -2
- package/dist/tests/services/spoke/EvmSpokeService.test.d.ts.map +0 -1
- package/dist/tests/services/spoke/EvmSpokeService.test.js +0 -198
- package/dist/tests/services/spoke/EvmSpokeService.test.js.map +0 -1
- package/dist/types.d.ts +0 -345
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -30
- package/dist/types.js.map +0 -1
- package/dist/utils/evm-utils.d.ts +0 -10
- package/dist/utils/evm-utils.d.ts.map +0 -1
- package/dist/utils/evm-utils.js +0 -15
- package/dist/utils/evm-utils.js.map +0 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -3
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/shared-utils.d.ts +0 -20
- package/dist/utils/shared-utils.d.ts.map +0 -1
- package/dist/utils/shared-utils.js +0 -69
- package/dist/utils/shared-utils.js.map +0 -1
- package/dist/utils/shared-utils.test.d.ts +0 -2
- package/dist/utils/shared-utils.test.d.ts.map +0 -1
- package/dist/utils/shared-utils.test.js +0 -63
- package/dist/utils/shared-utils.test.js.map +0 -1
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import { getHubAssetInfo, IntentErrorCode, } from '../../index.js';
|
|
3
|
-
import { SolverApiService } from './SolverApiService.js';
|
|
4
|
-
import { ARBITRUM_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID } from '@sodax/types';
|
|
5
|
-
// Mock fetch
|
|
6
|
-
const mockFetch = vi.fn();
|
|
7
|
-
global.fetch = mockFetch;
|
|
8
|
-
describe('SolverApiService', () => {
|
|
9
|
-
const mockConfig = {
|
|
10
|
-
solverApiEndpoint: 'https://api.example.com',
|
|
11
|
-
intentsContract: '0x1234567890123456789012345678901234567890',
|
|
12
|
-
};
|
|
13
|
-
const bscEthToken = '0x2170Ed0880ac9A755fd29B2688956BD959F933F8';
|
|
14
|
-
const bscEthHubTokenAsset = getHubAssetInfo(BSC_MAINNET_CHAIN_ID, bscEthToken);
|
|
15
|
-
if (!bscEthHubTokenAsset) {
|
|
16
|
-
throw new Error('BSC ETH token asset not found');
|
|
17
|
-
}
|
|
18
|
-
const arbWbtcToken = '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f';
|
|
19
|
-
const arbWbtcHubTokenAsset = getHubAssetInfo(ARBITRUM_MAINNET_CHAIN_ID, arbWbtcToken);
|
|
20
|
-
if (!arbWbtcHubTokenAsset) {
|
|
21
|
-
throw new Error('BSC WBTC token asset not found');
|
|
22
|
-
}
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
vi.clearAllMocks();
|
|
25
|
-
});
|
|
26
|
-
describe('getQuote', () => {
|
|
27
|
-
const payload = {
|
|
28
|
-
token_src: bscEthToken,
|
|
29
|
-
token_src_blockchain_id: BSC_MAINNET_CHAIN_ID,
|
|
30
|
-
token_dst: arbWbtcToken,
|
|
31
|
-
token_dst_blockchain_id: ARBITRUM_MAINNET_CHAIN_ID,
|
|
32
|
-
amount: 1000000000000000000n,
|
|
33
|
-
quote_type: 'exact_input',
|
|
34
|
-
};
|
|
35
|
-
it('should return a successful quote response', async () => {
|
|
36
|
-
const mockResponse = {
|
|
37
|
-
quoted_amount: 2000000000000000000n,
|
|
38
|
-
};
|
|
39
|
-
mockFetch.mockResolvedValueOnce({
|
|
40
|
-
ok: true,
|
|
41
|
-
json: () => Promise.resolve(mockResponse),
|
|
42
|
-
});
|
|
43
|
-
const result = await SolverApiService.getQuote(payload, mockConfig);
|
|
44
|
-
expect(result.ok).toBe(true);
|
|
45
|
-
if (result.ok) {
|
|
46
|
-
expect(result.value.quoted_amount).toBe(2000000000000000000n);
|
|
47
|
-
}
|
|
48
|
-
expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/quote', expect.objectContaining({
|
|
49
|
-
method: 'POST',
|
|
50
|
-
headers: {
|
|
51
|
-
'Content-Type': 'application/json',
|
|
52
|
-
},
|
|
53
|
-
body: JSON.stringify({
|
|
54
|
-
token_src: getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset ?? '',
|
|
55
|
-
token_dst: getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset ?? '',
|
|
56
|
-
amount: payload.amount.toString(),
|
|
57
|
-
quote_type: payload.quote_type,
|
|
58
|
-
}),
|
|
59
|
-
}));
|
|
60
|
-
});
|
|
61
|
-
it('should handle API error response', async () => {
|
|
62
|
-
const mockError = {
|
|
63
|
-
detail: {
|
|
64
|
-
code: IntentErrorCode.NO_PATH_FOUND,
|
|
65
|
-
message: 'No path found',
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
mockFetch.mockResolvedValueOnce({
|
|
69
|
-
ok: false,
|
|
70
|
-
json: () => Promise.resolve(mockError),
|
|
71
|
-
});
|
|
72
|
-
const result = await SolverApiService.getQuote(payload, mockConfig);
|
|
73
|
-
expect(result.ok).toBe(false);
|
|
74
|
-
if (!result.ok) {
|
|
75
|
-
expect(result.error).toEqual(mockError);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
it('should handle network errors', async () => {
|
|
79
|
-
mockFetch.mockRejectedValueOnce(new Error('Network error'));
|
|
80
|
-
const result = await SolverApiService.getQuote(payload, mockConfig);
|
|
81
|
-
expect(result.ok).toBe(false);
|
|
82
|
-
if (!result.ok) {
|
|
83
|
-
expect(result.error.detail.code).toBe(IntentErrorCode.UNKNOWN);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
describe('postExecution', () => {
|
|
88
|
-
const validRequest = {
|
|
89
|
-
intent_tx_hash: '0x1234567890123456789012345678901234567890123456789012345678901234',
|
|
90
|
-
quote_uuid: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
|
|
91
|
-
};
|
|
92
|
-
it('should successfully execute intent', async () => {
|
|
93
|
-
const mockResponse = {
|
|
94
|
-
output: {
|
|
95
|
-
answer: 'OK',
|
|
96
|
-
task_id: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
mockFetch.mockResolvedValueOnce({
|
|
100
|
-
ok: true,
|
|
101
|
-
json: () => Promise.resolve(mockResponse),
|
|
102
|
-
});
|
|
103
|
-
const result = await SolverApiService.postExecution(validRequest, mockConfig);
|
|
104
|
-
expect(result.ok).toBe(true);
|
|
105
|
-
if (result.ok) {
|
|
106
|
-
expect(result.value).toEqual(mockResponse);
|
|
107
|
-
}
|
|
108
|
-
expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/execute', expect.objectContaining({
|
|
109
|
-
method: 'POST',
|
|
110
|
-
headers: {
|
|
111
|
-
'Content-Type': 'application/json',
|
|
112
|
-
},
|
|
113
|
-
body: JSON.stringify(validRequest),
|
|
114
|
-
}));
|
|
115
|
-
});
|
|
116
|
-
it('should handle API error response', async () => {
|
|
117
|
-
const mockError = {
|
|
118
|
-
detail: {
|
|
119
|
-
code: IntentErrorCode.QUOTE_NOT_FOUND,
|
|
120
|
-
message: 'Quote not found',
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
mockFetch.mockResolvedValueOnce({
|
|
124
|
-
ok: false,
|
|
125
|
-
json: () => Promise.resolve(mockError),
|
|
126
|
-
});
|
|
127
|
-
const result = await SolverApiService.postExecution(validRequest, mockConfig);
|
|
128
|
-
expect(result.ok).toBe(false);
|
|
129
|
-
if (!result.ok) {
|
|
130
|
-
expect(result.error).toEqual(mockError);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
describe('getStatus', () => {
|
|
135
|
-
const validRequest = {
|
|
136
|
-
intent_tx_hash: '0x1234567890123456789012345678901234567890123456789012345678901234',
|
|
137
|
-
};
|
|
138
|
-
it('should successfully get status', async () => {
|
|
139
|
-
const mockResponse = {
|
|
140
|
-
status: 'completed',
|
|
141
|
-
result: {
|
|
142
|
-
transaction_hash: '0x123',
|
|
143
|
-
},
|
|
144
|
-
};
|
|
145
|
-
mockFetch.mockResolvedValueOnce({
|
|
146
|
-
ok: true,
|
|
147
|
-
json: () => Promise.resolve(mockResponse),
|
|
148
|
-
});
|
|
149
|
-
const result = await SolverApiService.getStatus(validRequest, mockConfig);
|
|
150
|
-
expect(result.ok).toBe(true);
|
|
151
|
-
if (result.ok) {
|
|
152
|
-
expect(result.value).toEqual(mockResponse);
|
|
153
|
-
}
|
|
154
|
-
expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/status', expect.objectContaining({
|
|
155
|
-
method: 'POST',
|
|
156
|
-
headers: {
|
|
157
|
-
'Content-Type': 'application/json',
|
|
158
|
-
},
|
|
159
|
-
body: JSON.stringify(validRequest),
|
|
160
|
-
}));
|
|
161
|
-
});
|
|
162
|
-
it('should handle API error response', async () => {
|
|
163
|
-
const mockError = {
|
|
164
|
-
detail: {
|
|
165
|
-
code: IntentErrorCode.QUOTE_NOT_FOUND,
|
|
166
|
-
message: 'Quote not found',
|
|
167
|
-
},
|
|
168
|
-
};
|
|
169
|
-
mockFetch.mockResolvedValueOnce({
|
|
170
|
-
ok: false,
|
|
171
|
-
json: () => Promise.resolve(mockError),
|
|
172
|
-
});
|
|
173
|
-
const result = await SolverApiService.getStatus(validRequest, mockConfig);
|
|
174
|
-
expect(result.ok).toBe(false);
|
|
175
|
-
if (!result.ok) {
|
|
176
|
-
expect(result.error).toEqual(mockError);
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
//# sourceMappingURL=SolverApiService.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolverApiService.test.js","sourceRoot":"","sources":["../../../src/services/solver/SolverApiService.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
import { type EvmHubProvider, type IntentRelayRequest, type PacketData, type RelayErrorCode, type SpokeProvider, type WaitUntilIntentExecutedPayload } from '../../index.js';
|
|
2
|
-
import type { FeeAmount, HttpUrl, IntentErrorResponse, IntentExecutionRequest, IntentExecutionResponse, IntentQuoteRequest, IntentQuoteResponse, IntentRelayChainId, IntentStatusRequest, IntentStatusResponse, PartnerFee, Result, SolverConfigParams, TxReturnType } from '../../types.js';
|
|
3
|
-
import { type SpokeChainId, type Address, type Hex, type EvmRawTransactionReceipt, type Hash } from '@sodax/types';
|
|
4
|
-
export type CreateIntentParams = {
|
|
5
|
-
inputToken: string;
|
|
6
|
-
outputToken: string;
|
|
7
|
-
inputAmount: bigint;
|
|
8
|
-
minOutputAmount: bigint;
|
|
9
|
-
deadline: bigint;
|
|
10
|
-
allowPartialFill: boolean;
|
|
11
|
-
srcChain: SpokeChainId;
|
|
12
|
-
dstChain: SpokeChainId;
|
|
13
|
-
srcAddress: Hex;
|
|
14
|
-
dstAddress: Hex;
|
|
15
|
-
solver: Address;
|
|
16
|
-
data: Hex;
|
|
17
|
-
};
|
|
18
|
-
export type Intent = {
|
|
19
|
-
intentId: bigint;
|
|
20
|
-
creator: Address;
|
|
21
|
-
inputToken: Address;
|
|
22
|
-
outputToken: Address;
|
|
23
|
-
inputAmount: bigint;
|
|
24
|
-
minOutputAmount: bigint;
|
|
25
|
-
deadline: bigint;
|
|
26
|
-
allowPartialFill: boolean;
|
|
27
|
-
srcChain: IntentRelayChainId;
|
|
28
|
-
dstChain: IntentRelayChainId;
|
|
29
|
-
srcAddress: Hex;
|
|
30
|
-
dstAddress: Hex;
|
|
31
|
-
solver: Address;
|
|
32
|
-
data: Hex;
|
|
33
|
-
};
|
|
34
|
-
export declare enum IntentDataType {
|
|
35
|
-
FEE = 1
|
|
36
|
-
}
|
|
37
|
-
export type FeeData = {
|
|
38
|
-
fee: bigint;
|
|
39
|
-
receiver: Address;
|
|
40
|
-
};
|
|
41
|
-
export type IntentData = {
|
|
42
|
-
type: IntentDataType;
|
|
43
|
-
data: Hex;
|
|
44
|
-
};
|
|
45
|
-
export type IntentState = {
|
|
46
|
-
exists: boolean;
|
|
47
|
-
remainingInput: bigint;
|
|
48
|
-
receivedOutput: bigint;
|
|
49
|
-
pendingPayment: boolean;
|
|
50
|
-
};
|
|
51
|
-
export type IntentCreationFailedErrorData = {
|
|
52
|
-
payload: CreateIntentParams;
|
|
53
|
-
error: unknown;
|
|
54
|
-
};
|
|
55
|
-
export type IntentSubmitTxFailedErrorData = {
|
|
56
|
-
payload: IntentRelayRequest<'submit'>;
|
|
57
|
-
apiUrl: HttpUrl;
|
|
58
|
-
};
|
|
59
|
-
export type IntentWaitUntilIntentExecutedFailedErrorData = {
|
|
60
|
-
payload: WaitUntilIntentExecutedPayload;
|
|
61
|
-
error: unknown;
|
|
62
|
-
};
|
|
63
|
-
export type IntentSubmitErrorCode = RelayErrorCode | 'UNKNOWN' | 'CREATION_FAILED';
|
|
64
|
-
export type IntentSubmitErrorData<T extends IntentSubmitErrorCode> = T extends 'TIMEOUT' ? IntentWaitUntilIntentExecutedFailedErrorData : T extends 'CREATION_FAILED' ? IntentCreationFailedErrorData : T extends 'SUBMIT_TX_FAILED' ? IntentSubmitTxFailedErrorData : T extends 'POST_EXECUTION_FAILED' ? IntentErrorResponse : never;
|
|
65
|
-
export type IntentSubmitError<T extends IntentSubmitErrorCode> = {
|
|
66
|
-
code: T;
|
|
67
|
-
data: IntentSubmitErrorData<T>;
|
|
68
|
-
};
|
|
69
|
-
export declare class SolverService {
|
|
70
|
-
private readonly config;
|
|
71
|
-
private readonly hubProvider;
|
|
72
|
-
constructor(config: SolverConfigParams | undefined, hubProvider: EvmHubProvider, relayerApiEndpoint?: HttpUrl);
|
|
73
|
-
/**
|
|
74
|
-
* Request a quote from the solver API
|
|
75
|
-
* @param {IntentQuoteRequest} payload - The intent quote request
|
|
76
|
-
* @returns {Promise<Result<IntentQuoteResponse, IntentErrorResponse>>} The intent quote response
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* const payload = {
|
|
80
|
-
* "token_src":"0x2170Ed0880ac9A755fd29B2688956BD959F933F8", // BSC ETH token address
|
|
81
|
-
* "token_dst":"0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", // ARB WBTC token address
|
|
82
|
-
* "token_src_blockchain_id":"0x38.bsc",
|
|
83
|
-
* "token_dst_blockchain_id":"0xa4b1.arbitrum",
|
|
84
|
-
* "amount":1000000000000000n,
|
|
85
|
-
* "quote_type": "exact_input"
|
|
86
|
-
* } satisfies IntentQuoteRequest
|
|
87
|
-
*
|
|
88
|
-
* const response = await solverService.getQuote(payload);
|
|
89
|
-
*
|
|
90
|
-
* if (response.ok) {
|
|
91
|
-
* const quotedAmount = response.value.quoted_amount;
|
|
92
|
-
* console.log('Quoted amount:', quotedAmount);
|
|
93
|
-
* } else {
|
|
94
|
-
* console.error('Quote failed:', response.error);
|
|
95
|
-
* }
|
|
96
|
-
*/
|
|
97
|
-
getQuote(payload: IntentQuoteRequest): Promise<Result<IntentQuoteResponse, IntentErrorResponse>>;
|
|
98
|
-
/**
|
|
99
|
-
* Get the fee for a given input amount
|
|
100
|
-
* @param {bigint} inputAmount - The amount of input tokens
|
|
101
|
-
* @returns {Promise<bigint>} The fee amount (denominated in input tokens)
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* const fee: bigint = await solverService.getFee(1000000000000000n);
|
|
105
|
-
* console.log('Fee:', fee);
|
|
106
|
-
*/
|
|
107
|
-
getFee(inputAmount: bigint): Promise<bigint>;
|
|
108
|
-
/**
|
|
109
|
-
* Get the status of an intent from Solver API
|
|
110
|
-
* @param {IntentStatusRequest} intentStatusRequest - The intent status request
|
|
111
|
-
* @returns {Promise<Result<IntentStatusResponse, IntentErrorResponse>>} The intent status response
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* const intentStatusRequest = {
|
|
115
|
-
* "intentHash": "a0dd7652-b360-4123-ab2d-78cfbcd20c6b"
|
|
116
|
-
* } satisfies IntentStatusRequest
|
|
117
|
-
*
|
|
118
|
-
* const response = await solverService.getStatus(intentStatusRequest);
|
|
119
|
-
*
|
|
120
|
-
* if (response.ok) {
|
|
121
|
-
* const { status, intent_hash } = response.value;
|
|
122
|
-
* console.log('Status:', status);
|
|
123
|
-
* console.log('Intent hash:', intent_hash);
|
|
124
|
-
* } else {
|
|
125
|
-
* // handle error
|
|
126
|
-
* }
|
|
127
|
-
*/
|
|
128
|
-
getStatus(intentStatusRequest: IntentStatusRequest): Promise<Result<IntentStatusResponse, IntentErrorResponse>>;
|
|
129
|
-
/**
|
|
130
|
-
* Post execution of intent order transaction executed on hub chain to Solver API
|
|
131
|
-
* @param {IntentExecutionRequest} intentExecutionRequest - The intent execution request
|
|
132
|
-
* @returns {Promise<Result<IntentExecutionResponse, IntentErrorResponse>>} The intent execution response
|
|
133
|
-
*
|
|
134
|
-
* @example
|
|
135
|
-
* const intentExecutionRequest = {
|
|
136
|
-
* "intent_tx_hash": "0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af",
|
|
137
|
-
* } satisfies IntentExecutionRequest
|
|
138
|
-
*
|
|
139
|
-
* const response = await solverService.postExecution(intentExecutionRequest);
|
|
140
|
-
*
|
|
141
|
-
* if (response.ok) {
|
|
142
|
-
* const { answer, intent_hash } = response.value;
|
|
143
|
-
* console.log('Answer:', answer);
|
|
144
|
-
* console.log('Intent hash:', intent_hash);
|
|
145
|
-
* } else {
|
|
146
|
-
* // handle error
|
|
147
|
-
* }
|
|
148
|
-
*/
|
|
149
|
-
postExecution(intentExecutionRequest: IntentExecutionRequest): Promise<Result<IntentExecutionResponse, IntentErrorResponse>>;
|
|
150
|
-
/**
|
|
151
|
-
* Creates an intent and submits it to the Solver API and Relayer API
|
|
152
|
-
* @param {CreateIntentParams} payload - The intent to create
|
|
153
|
-
* @param {ISpokeProvider} spokeProvider - The spoke provider
|
|
154
|
-
* @param {number} timeout - The timeout in milliseconds for the transaction. Default is 60 seconds.
|
|
155
|
-
* @returns {Promise<Result<[IntentExecutionResponse, Intent, PacketData], IntentSubmitError<IntentSubmitErrorCode>>>} The intent execution response, intent, and packet data
|
|
156
|
-
*
|
|
157
|
-
* @example
|
|
158
|
-
* const payload = {
|
|
159
|
-
* "inputToken": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", // BSC ETH token address
|
|
160
|
-
* "outputToken": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", // ARB WBTC token address
|
|
161
|
-
* "inputAmount": 1000000000000000n, // The amount of input tokens
|
|
162
|
-
* "minOutputAmount": 900000000000000n, // min amount you are expecting to receive
|
|
163
|
-
* "deadline": 0n, // Optional timestamp after which intent expires (0 = no deadline)
|
|
164
|
-
* "allowPartialFill": false, // Whether the intent can be partially filled
|
|
165
|
-
* "srcChain": "0x38.bsc", // Chain ID where input tokens originate
|
|
166
|
-
* "dstChain": "0xa4b1.arbitrum", // Chain ID where output tokens should be delivered
|
|
167
|
-
* "srcAddress": "0x..", // Source address in bytes (original address on spoke chain)
|
|
168
|
-
* "dstAddress": "0x...", // Destination address in bytes (original address on spoke chain)
|
|
169
|
-
* "solver": "0x..", // Optional specific solver address (address(0) = any solver)
|
|
170
|
-
* "data": "0x..", // Additional arbitrary data
|
|
171
|
-
* } satisfies CreateIntentParams;
|
|
172
|
-
*
|
|
173
|
-
* const createAndSubmitIntentResult = await solverService.createAndSubmitIntent(payload, spokeProvider);
|
|
174
|
-
*
|
|
175
|
-
* if (createAndSubmitIntentResult.ok) {
|
|
176
|
-
* const [intentExecutionResponse, intent, packetData] = createAndSubmitIntentResult.value;
|
|
177
|
-
* console.log('Intent execution response:', intentExecutionResponse);
|
|
178
|
-
* console.log('Intent:', intent);
|
|
179
|
-
* console.log('Packet data:', packetData);
|
|
180
|
-
* } else {
|
|
181
|
-
* // handle error
|
|
182
|
-
* }
|
|
183
|
-
*/
|
|
184
|
-
createAndSubmitIntent<S extends SpokeProvider>(payload: CreateIntentParams, spokeProvider: S, fee?: PartnerFee, timeout?: number): Promise<Result<[IntentExecutionResponse, Intent, PacketData], IntentSubmitError<IntentSubmitErrorCode>>>;
|
|
185
|
-
/**
|
|
186
|
-
* Check whether assetManager contract is allowed to move the given payload amount
|
|
187
|
-
* @param {CreateIntentParams} params - The intent to create
|
|
188
|
-
* @param {SpokeProvider} spokeProvider - The spoke provider
|
|
189
|
-
* @return {Promise<Result<boolean>>} - valid = true, invalid = false
|
|
190
|
-
*
|
|
191
|
-
* @example
|
|
192
|
-
* const payload = {
|
|
193
|
-
* "inputToken": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", // BSC ETH token address
|
|
194
|
-
* "outputToken": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", // ARB WBTC token address
|
|
195
|
-
* "inputAmount": 1000000000000000n, // The amount of input tokens
|
|
196
|
-
* "minOutputAmount": 900000000000000n, // min amount you are expecting to receive
|
|
197
|
-
* "deadline": 0n, // Optional timestamp after which intent expires (0 = no deadline)
|
|
198
|
-
* "allowPartialFill": false, // Whether the intent can be partially filled
|
|
199
|
-
* "srcChain": "0x38.bsc", // Chain ID where input tokens originate
|
|
200
|
-
* "dstChain": "0xa4b1.arbitrum", // Chain ID where output tokens should be delivered
|
|
201
|
-
* "srcAddress": "0x..", // Source address in bytes (original address on spoke chain)
|
|
202
|
-
* "dstAddress": "0x...", // Destination address in bytes (original address on spoke chain)
|
|
203
|
-
* "solver": "0x..", // Optional specific solver address (address(0) = any solver)
|
|
204
|
-
* "data": "0x..", // Additional arbitrary data
|
|
205
|
-
* } satisfies CreateIntentParams;
|
|
206
|
-
*
|
|
207
|
-
* const isAllowanceValid = await solverService.isAllowanceValid(payload, spokeProvider);
|
|
208
|
-
*
|
|
209
|
-
* if (!allowanceValid.ok) {
|
|
210
|
-
* // Handle error
|
|
211
|
-
* }
|
|
212
|
-
*
|
|
213
|
-
* if (!allowanceValid.value) {
|
|
214
|
-
* // Need to approve
|
|
215
|
-
* }
|
|
216
|
-
*/
|
|
217
|
-
isAllowanceValid<S extends SpokeProvider>(params: CreateIntentParams, spokeProvider: S): Promise<Result<boolean>>;
|
|
218
|
-
/**
|
|
219
|
-
* Approve amount spending (currently required for EVM only)
|
|
220
|
-
* @param token - ERC20 token address
|
|
221
|
-
* @param amount - Amount to approve
|
|
222
|
-
* @param spender - Spender address
|
|
223
|
-
* @param spokeProvider - Spoke provider
|
|
224
|
-
* @returns {Promise<Result<EvmRawTransactionReceipt>>} - Returns the transaction receipt
|
|
225
|
-
*
|
|
226
|
-
* @example
|
|
227
|
-
* const approveResult = await approve(
|
|
228
|
-
* '0x...', // ERC20 token address
|
|
229
|
-
* 1000n, // Amount to approve (in token decimals)
|
|
230
|
-
* '0x...', // Spender address (usually the asset manager contract: spokeProvider.chainConfig.addresses.assetManager)
|
|
231
|
-
* spokeProvider
|
|
232
|
-
* );
|
|
233
|
-
*
|
|
234
|
-
* if (!approveResult.ok) {
|
|
235
|
-
* // Handle error
|
|
236
|
-
* }
|
|
237
|
-
*
|
|
238
|
-
* const txReceipt = approveResult.value;
|
|
239
|
-
*/
|
|
240
|
-
approve<S extends SpokeProvider>(token: Address, amount: bigint, address: Address, spokeProvider: S): Promise<Result<EvmRawTransactionReceipt>>;
|
|
241
|
-
/**
|
|
242
|
-
* Creates an intent by handling token approval and intent creation
|
|
243
|
-
* NOTE: This method does not submit the intent to the Solver API
|
|
244
|
-
* @param {CreateIntentParams} params - The intent to create
|
|
245
|
-
* @param {SpokeProvider} spokeProvider - The spoke provider
|
|
246
|
-
* @param {boolean} raw - Whether to return the raw transaction
|
|
247
|
-
* @param {PartnerFee} fee - The fee to apply to the intent
|
|
248
|
-
* @returns {Promise<Result<[TxReturnType<S, R>, Intent & FeeAmount], IntentSubmitError<'CREATION_FAILED'>>>} The encoded contract call
|
|
249
|
-
*
|
|
250
|
-
* @example
|
|
251
|
-
* const payload = {
|
|
252
|
-
* "inputToken": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", // BSC ETH token address
|
|
253
|
-
* "outputToken": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", // ARB WBTC token address
|
|
254
|
-
* "inputAmount": 1000000000000000n, // The amount of input tokens
|
|
255
|
-
* "minOutputAmount": 900000000000000n, // min amount you are expecting to receive
|
|
256
|
-
* "deadline": 0n, // Optional timestamp after which intent expires (0 = no deadline)
|
|
257
|
-
* "allowPartialFill": false, // Whether the intent can be partially filled
|
|
258
|
-
* "srcChain": "0x38.bsc", // Chain ID where input tokens originate
|
|
259
|
-
* "dstChain": "0xa4b1.arbitrum", // Chain ID where output tokens should be delivered
|
|
260
|
-
* "srcAddress": "0x..", // Source address in bytes (original address on spoke chain)
|
|
261
|
-
* "dstAddress": "0x...", // Destination address in bytes (original address on spoke chain)
|
|
262
|
-
* "solver": "0x..", // Optional specific solver address (address(0) = any solver)
|
|
263
|
-
* "data": "0x..", // Additional arbitrary data
|
|
264
|
-
* } satisfies CreateIntentParams;
|
|
265
|
-
*
|
|
266
|
-
* const createIntentResult = await solverService.createIntent(payload, spokeProvider);
|
|
267
|
-
*
|
|
268
|
-
* if (createIntentResult.ok) {
|
|
269
|
-
* const [txResult, intent] = createIntentResult.value;
|
|
270
|
-
* console.log('Intent:', intent);
|
|
271
|
-
*
|
|
272
|
-
*/
|
|
273
|
-
createIntent<S extends SpokeProvider, R extends boolean = false>(params: CreateIntentParams, spokeProvider: S, fee?: PartnerFee, raw?: R): Promise<Result<[TxReturnType<S, R>, Intent & FeeAmount], IntentSubmitError<'CREATION_FAILED'>>>;
|
|
274
|
-
/**
|
|
275
|
-
* Cancels an intent
|
|
276
|
-
* @param {Intent} intent - The intent to cancel
|
|
277
|
-
* @param {ISpokeProvider} spokeProvider - The spoke provider
|
|
278
|
-
* @param {boolean} raw - Whether to return the raw transaction
|
|
279
|
-
* @returns {Promise<TxReturnType<T, R>>} The encoded contract call
|
|
280
|
-
*/
|
|
281
|
-
cancelIntent<T extends SpokeProvider, R extends boolean = false>(intent: Intent, spokeProvider: T, raw?: R): Promise<TxReturnType<T, R>>;
|
|
282
|
-
/**
|
|
283
|
-
* Gets an intent from a transaction hash (on Hub chain)
|
|
284
|
-
* @param {Hash} txHash - The transaction hash on Hub chain
|
|
285
|
-
* @returns {Promise<Intent>} The intent
|
|
286
|
-
*/
|
|
287
|
-
getIntent(txHash: Hash): Promise<Intent>;
|
|
288
|
-
/**
|
|
289
|
-
* Gets the keccak256 hash of an intent. Hash serves as the intent id on Hub chain.
|
|
290
|
-
* @param {Intent} intent - The intent
|
|
291
|
-
* @returns {Hex} The keccak256 hash of the intent
|
|
292
|
-
*/
|
|
293
|
-
getIntentHash(intent: Intent): Hex;
|
|
294
|
-
}
|
|
295
|
-
//# sourceMappingURL=SolverService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolverService.d.ts","sourceRoot":"","sources":["../../../src/services/solver/SolverService.ts"],"names":[],"mappings":"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"}
|