@vultisig/core-chain 1.5.3 → 1.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.
Files changed (28) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/chains/evm/contract/call/info.d.ts +3 -2
  3. package/dist/chains/evm/contract/call/info.d.ts.map +1 -1
  4. package/dist/chains/evm/contract/call/info.js +40 -15
  5. package/dist/chains/evm/contract/call/info.js.map +1 -1
  6. package/dist/chains/evm/contract/commonSelectors.d.ts +33 -0
  7. package/dist/chains/evm/contract/commonSelectors.d.ts.map +1 -0
  8. package/dist/chains/evm/contract/commonSelectors.js +167 -0
  9. package/dist/chains/evm/contract/commonSelectors.js.map +1 -0
  10. package/dist/coin/find/resolvers/cosmos.d.ts.map +1 -1
  11. package/dist/coin/find/resolvers/cosmos.js +5 -7
  12. package/dist/coin/find/resolvers/cosmos.js.map +1 -1
  13. package/dist/swap/quote/findSwapQuote.d.ts.map +1 -1
  14. package/dist/swap/quote/findSwapQuote.js +81 -77
  15. package/dist/swap/quote/findSwapQuote.js.map +1 -1
  16. package/dist/tx/broadcast/resolvers/solana.d.ts.map +1 -1
  17. package/dist/tx/broadcast/resolvers/solana.js +0 -1
  18. package/dist/tx/broadcast/resolvers/solana.js.map +1 -1
  19. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +1 -1
  20. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
  21. package/dist/tx/broadcast/verifyBroadcastByHash.js +3 -2
  22. package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
  23. package/dist/tx/status/resolver.d.ts +1 -0
  24. package/dist/tx/status/resolver.d.ts.map +1 -1
  25. package/dist/tx/status/resolvers/solana.d.ts.map +1 -1
  26. package/dist/tx/status/resolvers/solana.js +14 -4
  27. package/dist/tx/status/resolvers/solana.js.map +1 -1
  28. package/package.json +6 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 1.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#423](https://github.com/vultisig/vultisig-sdk/pull/423) [`613004f`](https://github.com/vultisig/vultisig-sdk/commit/613004f5fbce2658a439296ca249d3e031a58078) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Add a static lookup table of common EVM function selectors (`chains/evm/contract/commonSelectors.ts`) with human-readable action labels, and consult it as an offline fast-path in `getEvmContractCallInfo` before falling back to the 4byte API. Covers ERC-20 approvals/transfers/permit, Uniswap V2 / V3 / Universal Router swaps, ERC-721/1155 approvals and transfers, WETH wrap/unwrap, Synthetix-style staking, multicall, THORChain Router cross-chain swaps, and Aave V3 supply/withdraw. Resolved entries expose an optional `actionLabel` (e.g. "Token Approval", "Token Swap", "Cross-Chain Swap", "Lending Supply", "NFT Transfer") on the returned info.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#427](https://github.com/vultisig/vultisig-sdk/pull/427) [`6b75472`](https://github.com/vultisig/vultisig-sdk/commit/6b7547288f8594fcf8a9c71e46a5163d6b6cd727) Thanks [@realpaaao](https://github.com/realpaaao)! - Preserve known THORChain single-segment denoms such as `tcy` during Cosmos coin discovery, let Solana standard RPC relay retry for its normal validity window, and keep Solana broadcast verification from treating unknown signatures as confirmed pending transactions.
12
+
13
+ - [#418](https://github.com/vultisig/vultisig-sdk/pull/418) [`2e1bfb8`](https://github.com/vultisig/vultisig-sdk/commit/2e1bfb85417787a7cc5d497d35f6e76d2bb5a41a) Thanks [@premiumjibles](https://github.com/premiumjibles)! - Report all attempted swap quote provider failures with short provider-attributed messages.
14
+
3
15
  ## 1.5.3
4
16
 
5
17
  ### Patch Changes
@@ -1,7 +1,8 @@
1
- type EvmContractCallInfo = {
1
+ import { type EvmActionLabel } from '../commonSelectors.js';
2
+ export type EvmContractCallInfo = {
2
3
  functionSignature: string;
3
4
  functionArguments: string;
5
+ actionLabel?: EvmActionLabel;
4
6
  };
5
7
  export declare const getEvmContractCallInfo: (value: string) => Promise<EvmContractCallInfo | null>;
6
- export {};
7
8
  //# sourceMappingURL=info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/evm/contract/call/info.ts"],"names":[],"mappings":"AAMA,KAAK,mBAAmB,GAAG;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,KACZ,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAgDpC,CAAA"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/evm/contract/call/info.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAA2B,MAAM,oBAAoB,CAAA;AAIjF,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,cAAc,CAAA;CAC7B,CAAA;AAkCD,eAAO,MAAM,sBAAsB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CA2C9F,CAAA"}
@@ -1,9 +1,44 @@
1
1
  import { attempt } from '@vultisig/lib-utils/attempt';
2
2
  import { Interface } from 'ethers';
3
+ import { lookupCommonEvmSelector } from '../commonSelectors.js';
3
4
  import { getEvmContractCallHexSignature } from './hexSignature.js';
4
5
  import { getEvmContractCallSignatures } from './signatures.js';
6
+ const decodeFunctionArguments = (textSignature, value) => {
7
+ const result = attempt(() => {
8
+ const abi = new Interface([`function ${textSignature}`]);
9
+ const [fragment] = textSignature.split('(');
10
+ return abi.decodeFunctionData(fragment, value);
11
+ });
12
+ if ('error' in result) {
13
+ return null;
14
+ }
15
+ return JSON.stringify(result.data, (_, v) => {
16
+ if (typeof v === 'bigint') {
17
+ return v.toString();
18
+ }
19
+ if (v && typeof v === 'object') {
20
+ const maybe = v;
21
+ if (maybe._isBigNumber && typeof maybe.toString === 'function') {
22
+ return maybe.toString();
23
+ }
24
+ }
25
+ return v;
26
+ }, 2);
27
+ };
5
28
  export const getEvmContractCallInfo = async (value) => {
6
29
  const hexSignature = getEvmContractCallHexSignature(value);
30
+ // Fast offline path: check the static common-selector table first.
31
+ const known = lookupCommonEvmSelector(hexSignature);
32
+ if (known) {
33
+ const functionArguments = decodeFunctionArguments(known.signature, value);
34
+ if (functionArguments !== null) {
35
+ return {
36
+ functionSignature: known.signature,
37
+ functionArguments,
38
+ actionLabel: known.actionLabel,
39
+ };
40
+ }
41
+ }
7
42
  const { data } = await attempt(getEvmContractCallSignatures(hexSignature));
8
43
  if (!data) {
9
44
  return null;
@@ -17,22 +52,12 @@ export const getEvmContractCallInfo = async (value) => {
17
52
  if (!text_signature) {
18
53
  return null;
19
54
  }
20
- const abi = new Interface([`function ${text_signature}`]);
21
- const [fragment] = text_signature.split('(');
22
- const decodedData = abi.decodeFunctionData(fragment, value);
55
+ const functionArguments = decodeFunctionArguments(text_signature, value);
56
+ if (functionArguments === null) {
57
+ return null;
58
+ }
23
59
  return {
24
- functionArguments: JSON.stringify(decodedData, (_, value) => {
25
- if (typeof value === 'bigint') {
26
- return value.toString();
27
- }
28
- if (value && typeof value === 'object') {
29
- const maybe = value;
30
- if (maybe._isBigNumber && typeof maybe.toString === 'function') {
31
- return maybe.toString();
32
- }
33
- }
34
- return value;
35
- }, 2),
60
+ functionArguments,
36
61
  functionSignature: text_signature,
37
62
  };
38
63
  };
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/evm/contract/call/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAO3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,KAAa,EACwB,EAAE;IACvC,MAAM,YAAY,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAA;IAE1D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC,CAAA;IAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAExB,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAA;IACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;IACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,YAAY,cAAc,EAAE,CAAC,CAAC,CAAA;IACzD,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE5C,MAAM,WAAW,GAAG,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAE3D,OAAO;QACL,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAC/B,WAAW,EACX,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;YACzB,CAAC;YACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,KAGb,CAAA;gBACD,IAAI,KAAK,CAAC,YAAY,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBAC/D,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;gBACzB,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,EACD,CAAC,CACF;QACD,iBAAiB,EAAE,cAAc;KAClC,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/chains/evm/contract/call/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Static lookup table of common EVM function selectors with human-readable
3
+ * action labels.
4
+ *
5
+ * Layering for transaction-intent display:
6
+ *
7
+ * 1. Blockaid simulation (security/blockaid/...) — primary source. Provides
8
+ * semantic asset diffs, approval exposures, and high-level
9
+ * `transaction_actions` (`'swap'`, `'approval'`, `'mint'`, ...). Run by
10
+ * consumers (e.g. the Windows extension UI) before this layer. Note that
11
+ * Blockaid does NOT decode the called function's name/arguments — only
12
+ * its observable effects.
13
+ *
14
+ * 2. This static selector table — offline fast-path used by
15
+ * `getEvmContractCallInfo` when the caller still needs the function
16
+ * name + decoded arguments (e.g. Blockaid is unavailable, the chain is
17
+ * unsupported, or the UI shows the raw call alongside Blockaid's
18
+ * summary). Resolves instantly with no network round-trip.
19
+ *
20
+ * 3. 4byte directory API (`getEvmContractCallSignatures`) — final fallback
21
+ * for selectors not in the static table.
22
+ *
23
+ * Selectors are the first 4 bytes of keccak256 over the canonical function
24
+ * signature (no spaces, no parameter names). Lowercase hex with `0x` prefix.
25
+ */
26
+ export type EvmActionLabel = 'Token Approval' | 'Token Transfer' | 'Token Swap' | 'Cross-Chain Swap' | 'Wrap ETH' | 'Unwrap WETH' | 'Stake' | 'Claim Rewards' | 'Exit Stake' | 'Lending Supply' | 'Lending Withdraw' | 'NFT Transfer' | 'Multicall';
27
+ export type CommonEvmSelector = {
28
+ signature: string;
29
+ actionLabel: EvmActionLabel;
30
+ };
31
+ export declare const commonEvmSelectors: Readonly<Record<string, CommonEvmSelector>>;
32
+ export declare const lookupCommonEvmSelector: (hexSignature: string) => CommonEvmSelector | null;
33
+ //# sourceMappingURL=commonSelectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonSelectors.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/evm/contract/commonSelectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,UAAU,GACV,aAAa,GACb,OAAO,GACP,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,GACd,WAAW,CAAA;AAEf,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,cAAc,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAmJ1E,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,cAAc,MAAM,KAAG,iBAAiB,GAAG,IAElF,CAAA"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Static lookup table of common EVM function selectors with human-readable
3
+ * action labels.
4
+ *
5
+ * Layering for transaction-intent display:
6
+ *
7
+ * 1. Blockaid simulation (security/blockaid/...) — primary source. Provides
8
+ * semantic asset diffs, approval exposures, and high-level
9
+ * `transaction_actions` (`'swap'`, `'approval'`, `'mint'`, ...). Run by
10
+ * consumers (e.g. the Windows extension UI) before this layer. Note that
11
+ * Blockaid does NOT decode the called function's name/arguments — only
12
+ * its observable effects.
13
+ *
14
+ * 2. This static selector table — offline fast-path used by
15
+ * `getEvmContractCallInfo` when the caller still needs the function
16
+ * name + decoded arguments (e.g. Blockaid is unavailable, the chain is
17
+ * unsupported, or the UI shows the raw call alongside Blockaid's
18
+ * summary). Resolves instantly with no network round-trip.
19
+ *
20
+ * 3. 4byte directory API (`getEvmContractCallSignatures`) — final fallback
21
+ * for selectors not in the static table.
22
+ *
23
+ * Selectors are the first 4 bytes of keccak256 over the canonical function
24
+ * signature (no spaces, no parameter names). Lowercase hex with `0x` prefix.
25
+ */
26
+ export const commonEvmSelectors = {
27
+ // ERC-20 approvals
28
+ '0x095ea7b3': {
29
+ signature: 'approve(address,uint256)',
30
+ actionLabel: 'Token Approval',
31
+ },
32
+ '0x39509351': {
33
+ signature: 'increaseAllowance(address,uint256)',
34
+ actionLabel: 'Token Approval',
35
+ },
36
+ '0xa457c2d7': {
37
+ signature: 'decreaseAllowance(address,uint256)',
38
+ actionLabel: 'Token Approval',
39
+ },
40
+ '0xd505accf': {
41
+ signature: 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)',
42
+ actionLabel: 'Token Approval',
43
+ },
44
+ // ERC-721 / ERC-1155 marketplace approval (OpenSea, Blur, Magic Eden)
45
+ '0xa22cb465': {
46
+ signature: 'setApprovalForAll(address,bool)',
47
+ actionLabel: 'Token Approval',
48
+ },
49
+ // ERC-20 transfers
50
+ '0xa9059cbb': {
51
+ signature: 'transfer(address,uint256)',
52
+ actionLabel: 'Token Transfer',
53
+ },
54
+ '0x23b872dd': {
55
+ signature: 'transferFrom(address,address,uint256)',
56
+ actionLabel: 'Token Transfer',
57
+ },
58
+ // Uniswap V2 swaps
59
+ '0x38ed1739': {
60
+ signature: 'swapExactTokensForTokens(uint256,uint256,address[],address,uint256)',
61
+ actionLabel: 'Token Swap',
62
+ },
63
+ '0x7ff36ab5': {
64
+ signature: 'swapExactETHForTokens(uint256,address[],address,uint256)',
65
+ actionLabel: 'Token Swap',
66
+ },
67
+ '0x18cbafe5': {
68
+ signature: 'swapExactTokensForETH(uint256,uint256,address[],address,uint256)',
69
+ actionLabel: 'Token Swap',
70
+ },
71
+ '0xfb3bdb41': {
72
+ signature: 'swapETHForExactTokens(uint256,address[],address,uint256)',
73
+ actionLabel: 'Token Swap',
74
+ },
75
+ '0x8803dbee': {
76
+ signature: 'swapTokensForExactTokens(uint256,uint256,address[],address,uint256)',
77
+ actionLabel: 'Token Swap',
78
+ },
79
+ '0x4a25d94a': {
80
+ signature: 'swapTokensForExactETH(uint256,uint256,address[],address,uint256)',
81
+ actionLabel: 'Token Swap',
82
+ },
83
+ '0x5c11d795': {
84
+ signature: 'swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)',
85
+ actionLabel: 'Token Swap',
86
+ },
87
+ '0xb6f9de95': {
88
+ signature: 'swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)',
89
+ actionLabel: 'Token Swap',
90
+ },
91
+ // Uniswap V3 swaps
92
+ '0x414bf389': {
93
+ signature: 'exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))',
94
+ actionLabel: 'Token Swap',
95
+ },
96
+ '0xc04b8d59': {
97
+ signature: 'exactInput((bytes,address,uint256,uint256,uint256))',
98
+ actionLabel: 'Token Swap',
99
+ },
100
+ // Uniswap Universal Router
101
+ '0x3593564c': {
102
+ signature: 'execute(bytes,bytes[],uint256)',
103
+ actionLabel: 'Token Swap',
104
+ },
105
+ // THORChain Router (cross-chain native swaps)
106
+ '0x44bc937b': {
107
+ signature: 'depositWithExpiry(address,address,uint256,string,uint256)',
108
+ actionLabel: 'Cross-Chain Swap',
109
+ },
110
+ // Aave V3 lending
111
+ '0x617ba037': {
112
+ signature: 'supply(address,uint256,address,uint16)',
113
+ actionLabel: 'Lending Supply',
114
+ },
115
+ '0x69328dec': {
116
+ signature: 'withdraw(address,uint256,address)',
117
+ actionLabel: 'Lending Withdraw',
118
+ },
119
+ // WETH wrap / unwrap
120
+ '0xd0e30db0': {
121
+ signature: 'deposit()',
122
+ actionLabel: 'Wrap ETH',
123
+ },
124
+ '0x2e1a7d4d': {
125
+ signature: 'withdraw(uint256)',
126
+ actionLabel: 'Unwrap WETH',
127
+ },
128
+ // Synthetix-style staking
129
+ '0xa694fc3a': {
130
+ signature: 'stake(uint256)',
131
+ actionLabel: 'Stake',
132
+ },
133
+ '0x3d18b912': {
134
+ signature: 'getReward()',
135
+ actionLabel: 'Claim Rewards',
136
+ },
137
+ '0xe9fad8ee': {
138
+ signature: 'exit()',
139
+ actionLabel: 'Exit Stake',
140
+ },
141
+ // ERC-721 / ERC-1155 transfers
142
+ '0x42842e0e': {
143
+ signature: 'safeTransferFrom(address,address,uint256)',
144
+ actionLabel: 'NFT Transfer',
145
+ },
146
+ '0xb88d4fde': {
147
+ signature: 'safeTransferFrom(address,address,uint256,bytes)',
148
+ actionLabel: 'NFT Transfer',
149
+ },
150
+ '0xf242432a': {
151
+ signature: 'safeTransferFrom(address,address,uint256,uint256,bytes)',
152
+ actionLabel: 'NFT Transfer',
153
+ },
154
+ '0x2eb2c2d6': {
155
+ signature: 'safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)',
156
+ actionLabel: 'NFT Transfer',
157
+ },
158
+ // Aggregator / batched calls
159
+ '0xac9650d8': {
160
+ signature: 'multicall(bytes[])',
161
+ actionLabel: 'Multicall',
162
+ },
163
+ };
164
+ export const lookupCommonEvmSelector = (hexSignature) => {
165
+ return commonEvmSelectors[hexSignature.toLowerCase()] ?? null;
166
+ };
167
+ //# sourceMappingURL=commonSelectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonSelectors.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/evm/contract/commonSelectors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/find/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAKxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAM3E,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,WAAW,CA2C1D,CAAA"}
1
+ {"version":3,"file":"cosmos.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/find/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAKxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAI3E,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,WAAW,CAsC1D,CAAA"}
@@ -5,9 +5,7 @@ import { tcyAutoCompounderConfig } from '@vultisig/core-chain/chains/cosmos/thor
5
5
  import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
6
6
  import { getCosmosTokenMetadata } from '@vultisig/core-chain/coin/token/metadata/resolvers/cosmos';
7
7
  import { without } from '@vultisig/lib-utils/array/without';
8
- import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
9
- import { attempt } from '@vultisig/lib-utils/attempt';
10
- export const findCosmosCoins = async ({ address, chain, }) => {
8
+ export const findCosmosCoins = async ({ address, chain }) => {
11
9
  // While it should work for other cosmos chains, we only support THORChain for now
12
10
  if (chain !== CosmosChain.THORChain)
13
11
  return [];
@@ -17,8 +15,8 @@ export const findCosmosCoins = async ({ address, chain, }) => {
17
15
  .then(({ ticker }) => ({ denom, ticker }))
18
16
  .catch(() => ({ denom, ticker: undefined }))));
19
17
  return without(coins.map(({ denom, ticker }) => {
20
- const tickerAttempt = attempt(() => shouldBePresent(denom.split(/[-./]/)[1]?.toUpperCase()));
21
- if ('error' in tickerAttempt) {
18
+ const coinTicker = ticker || denom.split(/[-./]/)[1]?.toUpperCase();
19
+ if (!coinTicker) {
22
20
  console.error(`Failed to extract ticker from ${denom}`);
23
21
  return;
24
22
  }
@@ -26,8 +24,8 @@ export const findCosmosCoins = async ({ address, chain, }) => {
26
24
  id: denom,
27
25
  chain,
28
26
  decimals: chainFeeCoin[chain].decimals,
29
- ticker: ticker || tickerAttempt.data,
30
- logo: tickerAttempt.data.toLowerCase(),
27
+ ticker: coinTicker,
28
+ logo: coinTicker.toLowerCase(),
31
29
  address,
32
30
  };
33
31
  }), undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/find/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAA;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAA;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAA;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,MAAM,CAAC,MAAM,eAAe,GAAmC,KAAK,EAAE,EACpE,OAAO,EACP,KAAK,GACN,EAAE,EAAE;IACH,kFAAkF;IAClF,IAAI,KAAK,KAAK,WAAW,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IAE9C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CACL,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAClC,kBAAkB,CAAC,KAAK,CAAC,EACzB,uBAAuB,CAAC,UAAU,CACnC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACZ,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SACzC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAC/C,CACF,CAAA;IAED,OAAO,OAAO,CACZ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CACjC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CACxD,CAAA;QAED,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAA;YACvD,OAAM;QACR,CAAC;QAED,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK;YACL,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ;YACtC,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC,IAAI;YACpC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE;YACtC,OAAO;SACR,CAAA;IACH,CAAC,CAAC,EACF,SAAS,CACV,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/find/resolvers/cosmos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAA;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAA;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAA;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAmC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1F,kFAAkF;IAClF,IAAI,KAAK,KAAK,WAAW,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IAE9C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CACL,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAClC,kBAAkB,CAAC,KAAK,CAAC,EACzB,uBAAuB,CAAC,UAAU,CACnC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACZ,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SACzC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAC/C,CACF,CAAA;IAED,OAAO,OAAO,CACZ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;QAEnE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAA;YACvD,OAAM;QACR,CAAC;QAED,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK;YACL,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ;YACtC,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE;YAC9B,OAAO;SACR,CAAA;IACH,CAAC,CAAC,EACF,SAAS,CACV,CAAA;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"findSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAWnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAIzE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAUpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC3C,CAAA;AA0ED,eAAO,MAAM,aAAa,GAAU,mDAMjC,kBAAkB,KAAG,OAAO,CAAC,SAAS,CA4JxC,CAAA"}
1
+ {"version":3,"file":"findSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAWnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAIzE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAOpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC3C,CAAA;AAqED,eAAO,MAAM,aAAa,GAAU,mDAMjC,kBAAkB,KAAG,OAAO,CAAC,SAAS,CA0JxC,CAAA"}
@@ -15,7 +15,7 @@ import { getKyberSwapQuote } from '../general/kyber/api/quote.js';
15
15
  import { kyberSwapEnabledChains } from '../general/kyber/chains.js';
16
16
  import { getNativeSwapQuote } from '../native/api/getNativeSwapQuote.js';
17
17
  import { getNativeSwapDecimals } from '../native/utils/getNativeSwapDecimals.js';
18
- import { nativeSwapChains, nativeSwapEnabledChainsRecord, } from '../native/NativeSwapChain.js';
18
+ import { nativeSwapChains, nativeSwapEnabledChainsRecord } from '../native/NativeSwapChain.js';
19
19
  /** Re-base an integer amount from `fromDecimals` fixed-point to `toDecimals`. */
20
20
  function rebaseDecimals(value, fromDecimals, toDecimals) {
21
21
  if (fromDecimals === toDecimals) {
@@ -58,9 +58,7 @@ function selectBestEligibleQuote(settled) {
58
58
  const { outputAmount, quote } = result.value;
59
59
  // Tie-break: lower index wins. Fetchers are ordered by `shouldPreferGeneralSwap`
60
60
  // (general-first vs native-first), so this preserves that preference when amounts tie.
61
- if (bestAmount === null ||
62
- outputAmount > bestAmount ||
63
- (outputAmount === bestAmount && i < bestIndex)) {
61
+ if (bestAmount === null || outputAmount > bestAmount || (outputAmount === bestAmount && i < bestIndex)) {
64
62
  best = quote;
65
63
  bestAmount = outputAmount;
66
64
  bestIndex = i;
@@ -70,31 +68,30 @@ function selectBestEligibleQuote(settled) {
70
68
  }
71
69
  export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTier, }) => {
72
70
  const affiliateBps = getSwapAffiliateBps(vultDiscountTier ?? null);
73
- const vultDiscount = vultDiscountTier
74
- ? [{ vult: { tier: vultDiscountTier } }]
75
- : [];
71
+ const vultDiscount = vultDiscountTier ? [{ vult: { tier: vultDiscountTier } }] : [];
76
72
  const referralDiscount = referral ? [{ referral: {} }] : [];
77
73
  const involvedChains = [from.chain, to.chain];
78
74
  const matchingSwapChains = nativeSwapChains.filter(swapChain => involvedChains.every(chain => isOneOf(chain, nativeSwapEnabledChainsRecord[swapChain])));
79
- const getNativeFetchers = () => matchingSwapChains.map(swapChain => async () => {
80
- const fromDecimals = from.decimals;
81
- const amountNumber = bigIntToNumber(amount, fromDecimals);
82
- const native = await getNativeSwapQuote({
83
- swapChain,
84
- destination: to.address,
85
- from,
86
- to,
87
- amount: amountNumber,
88
- referral,
89
- affiliateBps,
90
- });
91
- return {
92
- quote: { native },
93
- discounts: swapChain === Chain.THORChain
94
- ? [...vultDiscount, ...referralDiscount]
95
- : vultDiscount,
96
- };
97
- });
75
+ const getNativeFetchers = () => matchingSwapChains.map(swapChain => ({
76
+ providerName: swapChain === Chain.THORChain ? 'THORChain' : 'MayaChain',
77
+ fetch: async () => {
78
+ const fromDecimals = from.decimals;
79
+ const amountNumber = bigIntToNumber(amount, fromDecimals);
80
+ const native = await getNativeSwapQuote({
81
+ swapChain,
82
+ destination: to.address,
83
+ from,
84
+ to,
85
+ amount: amountNumber,
86
+ referral,
87
+ affiliateBps,
88
+ });
89
+ return {
90
+ quote: { native },
91
+ discounts: swapChain === Chain.THORChain ? [...vultDiscount, ...referralDiscount] : vultDiscount,
92
+ };
93
+ },
94
+ }));
98
95
  const getGeneralFetchers = () => {
99
96
  const result = [];
100
97
  const fromChain = from.chain;
@@ -103,57 +100,63 @@ export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTi
103
100
  if (isOneOf(fromChain, kyberSwapEnabledChains) &&
104
101
  isOneOf(toChain, kyberSwapEnabledChains) &&
105
102
  fromChain === toChain) {
106
- result.push(async () => {
107
- const general = await getKyberSwapQuote({
108
- from: {
109
- ...from,
110
- chain: fromChain,
111
- },
112
- to: {
113
- ...to,
114
- chain: toChain,
115
- },
116
- amount: chainAmount,
117
- affiliateBps,
118
- });
119
- return { quote: { general }, discounts: vultDiscount };
103
+ result.push({
104
+ providerName: 'KyberSwap',
105
+ fetch: async () => {
106
+ const general = await getKyberSwapQuote({
107
+ from: {
108
+ ...from,
109
+ chain: fromChain,
110
+ },
111
+ to: {
112
+ ...to,
113
+ chain: toChain,
114
+ },
115
+ amount: chainAmount,
116
+ affiliateBps,
117
+ });
118
+ return { quote: { general }, discounts: vultDiscount };
119
+ },
120
120
  });
121
121
  }
122
- if (isOneOf(from.chain, oneInchSwapEnabledChains) &&
123
- from.chain === to.chain) {
124
- result.push(async () => {
125
- const general = await getOneInchSwapQuote({
126
- account: pick(from, ['address', 'chain']),
127
- fromCoinId: from.id ?? from.ticker,
128
- toCoinId: to.id ?? to.ticker,
129
- amount: chainAmount,
130
- affiliateBps,
131
- });
132
- return { quote: { general }, discounts: vultDiscount };
122
+ if (isOneOf(from.chain, oneInchSwapEnabledChains) && from.chain === to.chain) {
123
+ result.push({
124
+ providerName: '1inch',
125
+ fetch: async () => {
126
+ const general = await getOneInchSwapQuote({
127
+ account: pick(from, ['address', 'chain']),
128
+ fromCoinId: from.id ?? from.ticker,
129
+ toCoinId: to.id ?? to.ticker,
130
+ amount: chainAmount,
131
+ affiliateBps,
132
+ });
133
+ return { quote: { general }, discounts: vultDiscount };
134
+ },
133
135
  });
134
136
  }
135
- if (isOneOf(fromChain, lifiSwapEnabledChains) &&
136
- isOneOf(toChain, lifiSwapEnabledChains)) {
137
- result.push(async () => {
138
- const general = await getLifiSwapQuote({
139
- from: {
140
- ...from,
141
- chain: fromChain,
142
- },
143
- to: {
144
- ...to,
145
- chain: toChain,
146
- },
147
- amount: chainAmount,
148
- affiliateBps,
149
- });
150
- return { quote: { general }, discounts: vultDiscount };
137
+ if (isOneOf(fromChain, lifiSwapEnabledChains) && isOneOf(toChain, lifiSwapEnabledChains)) {
138
+ result.push({
139
+ providerName: 'LiFi',
140
+ fetch: async () => {
141
+ const general = await getLifiSwapQuote({
142
+ from: {
143
+ ...from,
144
+ chain: fromChain,
145
+ },
146
+ to: {
147
+ ...to,
148
+ chain: toChain,
149
+ },
150
+ amount: chainAmount,
151
+ affiliateBps,
152
+ });
153
+ return { quote: { general }, discounts: vultDiscount };
154
+ },
151
155
  });
152
156
  }
153
157
  return result;
154
158
  };
155
- const shouldPreferGeneralSwap = [from.chain, to.chain].every(chain => isChainOfKind(chain, 'evm')) &&
156
- [from.id, to.id].some(v => v);
159
+ const shouldPreferGeneralSwap = [from.chain, to.chain].every(chain => isChainOfKind(chain, 'evm')) && [from.id, to.id].some(v => v);
157
160
  const fetchers = shouldPreferGeneralSwap
158
161
  ? [...getGeneralFetchers(), ...getNativeFetchers()]
159
162
  : [...getNativeFetchers(), ...getGeneralFetchers()];
@@ -161,7 +164,7 @@ export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTi
161
164
  throw new NoSwapRoutesError();
162
165
  }
163
166
  const settled = await Promise.allSettled(fetchers.map(async (fetcher) => {
164
- const quote = await fetcher();
167
+ const quote = await fetcher.fetch();
165
168
  return {
166
169
  quote,
167
170
  outputAmount: getComparableOutputAmount(quote, to),
@@ -176,13 +179,14 @@ export const findSwapQuote = async ({ from, to, amount, referral, vultDiscountTi
176
179
  throw new Error('Swap amount too small. Please increase the amount to proceed.');
177
180
  }
178
181
  }
179
- for (const result of settled) {
180
- if (result.status === 'rejected') {
181
- throw result.reason;
182
+ const failedProviders = settled
183
+ .map((result, index) => {
184
+ if (result.status === 'fulfilled') {
185
+ return null;
182
186
  }
183
- }
184
- // Defensive: when fetchers are non-empty, `best` is null only if every
185
- // fetcher rejected, and the loop above throws the first reason.
186
- throw new Error('No quote');
187
+ return fetchers[index].providerName;
188
+ })
189
+ .filter((providerName) => providerName !== null);
190
+ throw new Error(`No swap route found after trying ${failedProviders.join(', ')}.`);
187
191
  };
188
192
  //# sourceMappingURL=findSwapQuote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,UAAU,CAAC,MAAM,CAuBlB,CAAA"}
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAqBpE,CAAA"}
@@ -18,7 +18,6 @@ export const broadcastSolanaTx = async ({ chain, tx }) => {
18
18
  await client.sendRawTransaction(rawTransaction, {
19
19
  skipPreflight: false,
20
20
  preflightCommitment: 'confirmed',
21
- maxRetries: 3,
22
21
  });
23
22
  }
24
23
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,MAAM,MAAM,MAAM,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAE1B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAEhD,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qEAAqE,EAAE,GAAG,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE;YAC9C,aAAa,EAAE,KAAK;YACpB,mBAAmB,EAAE,WAAW;YAChC,UAAU,EAAE,CAAC;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/solana.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,MAAM,MAAM,MAAM,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAA2C,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IAC/F,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAEhD,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qEAAqE,EAAE,GAAG,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE;YAC9C,aAAa,EAAE,KAAK;YACpB,mBAAmB,EAAE,WAAW;SACjC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA"}
@@ -24,6 +24,6 @@ type VerifyInput<T extends Chain> = {
24
24
  * yet, network error) falls through to re-throwing the original error —
25
25
  * verification is a safety net, never a new failure mode.
26
26
  */
27
- export declare const verifyBroadcastByHash: <T extends Chain>({ chain, tx, error, }: VerifyInput<T>) => Promise<void>;
27
+ export declare const verifyBroadcastByHash: <T extends Chain>({ chain, tx, error }: VerifyInput<T>) => Promise<void>;
28
28
  export {};
29
29
  //# sourceMappingURL=verifyBroadcastByHash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBroadcastByHash.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI;IAClC,KAAK,EAAE,CAAC,CAAA;IACR,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,KAAK,EAAE,uBAI1D,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAW/B,CAAA"}
1
+ {"version":3,"file":"verifyBroadcastByHash.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI;IAClC,KAAK,EAAE,CAAC,CAAA;IACR,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,KAAK,EAAE,sBAAsB,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAa/G,CAAA"}
@@ -19,11 +19,12 @@ import { getTxStatus } from '../status/index.js';
19
19
  * yet, network error) falls through to re-throwing the original error —
20
20
  * verification is a safety net, never a new failure mode.
21
21
  */
22
- export const verifyBroadcastByHash = async ({ chain, tx, error, }) => {
22
+ export const verifyBroadcastByHash = async ({ chain, tx, error }) => {
23
23
  try {
24
24
  const hash = await getTxHash({ chain, tx });
25
25
  const result = await getTxStatus({ chain, hash });
26
- if (result.status === 'pending' || result.status === 'success') {
26
+ const isKnownPending = result.status === 'pending' && result.isKnown !== false;
27
+ if (result.status === 'success' || isKnownPending) {
27
28
  return;
28
29
  }
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBroadcastByHash.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAQvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAmB,EAC3D,KAAK,EACL,EAAE,EACF,KAAK,GACU,EAAiB,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/D,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,MAAM,KAAK,CAAA;AACb,CAAC,CAAA"}
1
+ {"version":3,"file":"verifyBroadcastByHash.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAQvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAkB,EAAiB,EAAE;IAClH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;QAE9E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,MAAM,KAAK,CAAA;AACb,CAAC,CAAA"}
@@ -8,6 +8,7 @@ export type TxReceiptInfo = {
8
8
  };
9
9
  export type TxStatusResult = {
10
10
  status: TxStatus;
11
+ isKnown?: boolean;
11
12
  receipt?: TxReceiptInfo;
12
13
  };
13
14
  export type TxStatusResolver<T extends Chain = Chain> = Resolver<{
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,CAC9D;IACE,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;CACb,EACD,OAAO,CAAC,cAAc,CAAC,CACxB,CAAA"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,CAC9D;IACE,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;CACb,EACD,OAAO,CAAC,cAAc,CAAC,CACxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAgCjE,CAAA"}
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CA6CjE,CAAA"}
@@ -2,20 +2,30 @@ import { Chain } from '@vultisig/core-chain/Chain';
2
2
  import { getSolanaClient } from '@vultisig/core-chain/chains/solana/client';
3
3
  import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
4
4
  import { attempt } from '@vultisig/lib-utils/attempt';
5
- export const getSolanaTxStatus = async ({ hash, }) => {
5
+ export const getSolanaTxStatus = async ({ hash }) => {
6
6
  const client = getSolanaClient();
7
+ const { data: signatureStatuses, error: signatureStatusError } = await attempt(client.getSignatureStatuses([hash], {
8
+ searchTransactionHistory: true,
9
+ }));
10
+ const signatureStatus = signatureStatuses?.value[0];
11
+ if (signatureStatusError || !signatureStatus) {
12
+ return { status: 'pending', isKnown: false };
13
+ }
14
+ if (signatureStatus.err) {
15
+ return { status: 'error', isKnown: true };
16
+ }
7
17
  const { data: tx, error } = await attempt(client.getTransaction(hash, {
8
18
  maxSupportedTransactionVersion: 0,
9
19
  }));
10
20
  if (error || !tx) {
11
- return { status: 'pending' };
21
+ return { status: 'pending', isKnown: true };
12
22
  }
13
23
  const meta = tx.meta;
14
24
  if (!meta) {
15
- return { status: 'pending' };
25
+ return { status: 'pending', isKnown: true };
16
26
  }
17
27
  if (meta.err) {
18
- return { status: 'error' };
28
+ return { status: 'error', isKnown: true };
19
29
  }
20
30
  const feeCoin = chainFeeCoin[Chain.Solana];
21
31
  const receipt = {
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,iBAAiB,GAAwC,KAAK,EAAE,EAC3E,IAAI,GACL,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAEhC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,8BAA8B,EAAE,CAAC;KAClC,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC,QAAQ;QAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;KAC1B,CAAA;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AACvC,CAAC,CAAA"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,iBAAiB,GAAwC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAEhC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,MAAM,OAAO,CAC5E,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE;QAClC,wBAAwB,EAAE,IAAI;KAC/B,CAAC,CACH,CAAA;IACD,MAAM,eAAe,GAAG,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAEnD,IAAI,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,8BAA8B,EAAE,CAAC;KAClC,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC,QAAQ;QAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;KAC1B,CAAA;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AACvC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "1.5.3",
3
+ "version": "1.6.0",
4
4
  "description": "Blockchain chain logic shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -469,6 +469,11 @@
469
469
  "import": "./dist/chains/evm/contract/call/signatures.js",
470
470
  "default": "./dist/chains/evm/contract/call/signatures.js"
471
471
  },
472
+ "./chains/evm/contract/commonSelectors": {
473
+ "types": "./dist/chains/evm/contract/commonSelectors.d.ts",
474
+ "import": "./dist/chains/evm/contract/commonSelectors.js",
475
+ "default": "./dist/chains/evm/contract/commonSelectors.js"
476
+ },
472
477
  "./chains/evm/contract/universalRouter/decode": {
473
478
  "types": "./dist/chains/evm/contract/universalRouter/decode.d.ts",
474
479
  "import": "./dist/chains/evm/contract/universalRouter/decode.js",