@vultisig/core-chain 4.1.1 → 5.1.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 (157) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/Chain.d.ts +0 -4
  3. package/dist/Chain.d.ts.map +1 -1
  4. package/dist/Chain.js +0 -1
  5. package/dist/Chain.js.map +1 -1
  6. package/dist/ChainKind.d.ts +0 -1
  7. package/dist/ChainKind.d.ts.map +1 -1
  8. package/dist/ChainKind.js +0 -1
  9. package/dist/ChainKind.js.map +1 -1
  10. package/dist/chainRegistry.d.ts +0 -1
  11. package/dist/chainRegistry.d.ts.map +1 -1
  12. package/dist/chainRegistry.js +0 -1
  13. package/dist/chainRegistry.js.map +1 -1
  14. package/dist/chains/cosmos/account/getCosmosAccountInfo.d.ts.map +1 -1
  15. package/dist/chains/cosmos/account/getCosmosAccountInfo.js +0 -5
  16. package/dist/chains/cosmos/account/getCosmosAccountInfo.js.map +1 -1
  17. package/dist/chains/cosmos/chainInfo.d.ts.map +1 -1
  18. package/dist/chains/cosmos/chainInfo.js +0 -1
  19. package/dist/chains/cosmos/chainInfo.js.map +1 -1
  20. package/dist/chains/cosmos/cosmosFeeCoinDenom.d.ts.map +1 -1
  21. package/dist/chains/cosmos/cosmosFeeCoinDenom.js +0 -1
  22. package/dist/chains/cosmos/cosmosFeeCoinDenom.js.map +1 -1
  23. package/dist/chains/cosmos/cosmosGasLimitRecord.d.ts.map +1 -1
  24. package/dist/chains/cosmos/cosmosGasLimitRecord.js +0 -2
  25. package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
  26. package/dist/chains/cosmos/cosmosMemoCap.d.ts.map +1 -1
  27. package/dist/chains/cosmos/cosmosMemoCap.js +0 -1
  28. package/dist/chains/cosmos/cosmosMemoCap.js.map +1 -1
  29. package/dist/chains/cosmos/cosmosRpcUrl.d.ts.map +1 -1
  30. package/dist/chains/cosmos/cosmosRpcUrl.js +0 -3
  31. package/dist/chains/cosmos/cosmosRpcUrl.js.map +1 -1
  32. package/dist/chains/cosmos/gas.d.ts.map +1 -1
  33. package/dist/chains/cosmos/gas.js +0 -1
  34. package/dist/chains/cosmos/gas.js.map +1 -1
  35. package/dist/chains/cosmos/tendermintRpcUrl.d.ts.map +1 -1
  36. package/dist/chains/cosmos/tendermintRpcUrl.js +0 -1
  37. package/dist/chains/cosmos/tendermintRpcUrl.js.map +1 -1
  38. package/dist/chains/cosmos/thor/thorchainLp.d.ts.map +1 -1
  39. package/dist/chains/cosmos/thor/thorchainLp.js +0 -1
  40. package/dist/chains/cosmos/thor/thorchainLp.js.map +1 -1
  41. package/dist/chains/ripple/issuedCurrency.d.ts +13 -3
  42. package/dist/chains/ripple/issuedCurrency.d.ts.map +1 -1
  43. package/dist/chains/ripple/issuedCurrency.js +65 -6
  44. package/dist/chains/ripple/issuedCurrency.js.map +1 -1
  45. package/dist/chains/ripple/trustLine.d.ts +22 -0
  46. package/dist/chains/ripple/trustLine.d.ts.map +1 -0
  47. package/dist/chains/ripple/trustLine.js +14 -0
  48. package/dist/chains/ripple/trustLine.js.map +1 -0
  49. package/dist/chains/ton/address.d.ts +32 -0
  50. package/dist/chains/ton/address.d.ts.map +1 -1
  51. package/dist/chains/ton/address.js +45 -0
  52. package/dist/chains/ton/address.js.map +1 -1
  53. package/dist/chains/ton/api.d.ts +49 -0
  54. package/dist/chains/ton/api.d.ts.map +1 -1
  55. package/dist/chains/ton/api.js +131 -24
  56. package/dist/chains/ton/api.js.map +1 -1
  57. package/dist/chains/ton/comment.d.ts +51 -0
  58. package/dist/chains/ton/comment.d.ts.map +1 -0
  59. package/dist/chains/ton/comment.js +75 -0
  60. package/dist/chains/ton/comment.js.map +1 -0
  61. package/dist/chains/ton/jetton/symbol.d.ts +9 -0
  62. package/dist/chains/ton/jetton/symbol.d.ts.map +1 -0
  63. package/dist/chains/ton/jetton/symbol.js +61 -0
  64. package/dist/chains/ton/jetton/symbol.js.map +1 -0
  65. package/dist/chains/ton/jetton/verification.d.ts +35 -0
  66. package/dist/chains/ton/jetton/verification.d.ts.map +1 -0
  67. package/dist/chains/ton/jetton/verification.js +45 -0
  68. package/dist/chains/ton/jetton/verification.js.map +1 -0
  69. package/dist/chains/ton/jetton/verifiedRegistry.d.ts +43 -0
  70. package/dist/chains/ton/jetton/verifiedRegistry.d.ts.map +1 -0
  71. package/dist/chains/ton/jetton/verifiedRegistry.js +94 -0
  72. package/dist/chains/ton/jetton/verifiedRegistry.js.map +1 -0
  73. package/dist/chains/ton/messageBounce.d.ts +17 -0
  74. package/dist/chains/ton/messageBounce.d.ts.map +1 -0
  75. package/dist/chains/ton/messageBounce.js +41 -0
  76. package/dist/chains/ton/messageBounce.js.map +1 -0
  77. package/dist/chains/tron/getTronBlockInfo.d.ts.map +1 -1
  78. package/dist/chains/tron/getTronBlockInfo.js +4 -5
  79. package/dist/chains/tron/getTronBlockInfo.js.map +1 -1
  80. package/dist/coin/balance/resolvers/ripple.d.ts.map +1 -1
  81. package/dist/coin/balance/resolvers/ripple.js +3 -2
  82. package/dist/coin/balance/resolvers/ripple.js.map +1 -1
  83. package/dist/coin/chainFeeCoin.d.ts.map +1 -1
  84. package/dist/coin/chainFeeCoin.js +0 -5
  85. package/dist/coin/chainFeeCoin.js.map +1 -1
  86. package/dist/coin/coinType.d.ts.map +1 -1
  87. package/dist/coin/coinType.js +0 -1
  88. package/dist/coin/coinType.js.map +1 -1
  89. package/dist/coin/find/CoinFinderChainKind.d.ts +1 -1
  90. package/dist/coin/find/CoinFinderChainKind.d.ts.map +1 -1
  91. package/dist/coin/find/CoinFinderChainKind.js +1 -1
  92. package/dist/coin/find/CoinFinderChainKind.js.map +1 -1
  93. package/dist/coin/find/index.d.ts.map +1 -1
  94. package/dist/coin/find/index.js +2 -0
  95. package/dist/coin/find/index.js.map +1 -1
  96. package/dist/coin/find/resolvers/ton.d.ts +15 -0
  97. package/dist/coin/find/resolvers/ton.d.ts.map +1 -0
  98. package/dist/coin/find/resolvers/ton.js +61 -0
  99. package/dist/coin/find/resolvers/ton.js.map +1 -0
  100. package/dist/coin/knownTokens/cosmos.d.ts.map +1 -1
  101. package/dist/coin/knownTokens/cosmos.js +0 -64
  102. package/dist/coin/knownTokens/cosmos.js.map +1 -1
  103. package/dist/coin/knownTokens/index.d.ts +1 -1
  104. package/dist/coin/knownTokens/index.d.ts.map +1 -1
  105. package/dist/coin/token/metadata/chains.d.ts +1 -1
  106. package/dist/coin/token/metadata/chains.d.ts.map +1 -1
  107. package/dist/coin/tokenVerification.d.ts +13 -0
  108. package/dist/coin/tokenVerification.d.ts.map +1 -0
  109. package/dist/coin/tokenVerification.js +12 -0
  110. package/dist/coin/tokenVerification.js.map +1 -0
  111. package/dist/swap/general/swapkit/SwapKitEnabledChains.d.ts +14 -3
  112. package/dist/swap/general/swapkit/SwapKitEnabledChains.d.ts.map +1 -1
  113. package/dist/swap/general/swapkit/SwapKitEnabledChains.js +14 -1
  114. package/dist/swap/general/swapkit/SwapKitEnabledChains.js.map +1 -1
  115. package/dist/swap/general/swapkit/SwapKitProviders.d.ts +19 -3
  116. package/dist/swap/general/swapkit/SwapKitProviders.d.ts.map +1 -1
  117. package/dist/swap/general/swapkit/SwapKitProviders.js +161 -8
  118. package/dist/swap/general/swapkit/SwapKitProviders.js.map +1 -1
  119. package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts +1 -3
  120. package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts.map +1 -1
  121. package/dist/swap/general/swapkit/api/getSwapKitQuote.js +148 -78
  122. package/dist/swap/general/swapkit/api/getSwapKitQuote.js.map +1 -1
  123. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.d.ts +2 -1
  124. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.d.ts.map +1 -1
  125. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.js +2 -1
  126. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.js.map +1 -1
  127. package/dist/swap/native/NativeSwapChain.d.ts +1 -2
  128. package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
  129. package/dist/swap/native/NativeSwapChain.js +0 -2
  130. package/dist/swap/native/NativeSwapChain.js.map +1 -1
  131. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
  132. package/dist/swap/native/limitSwapMemo.js +18 -5
  133. package/dist/swap/native/limitSwapMemo.js.map +1 -1
  134. package/dist/swap/native/thorchainMemoAsset.d.ts +1 -1
  135. package/dist/swap/native/thorchainMemoAsset.js +1 -1
  136. package/dist/swap/quote/findSwapQuote.d.ts.map +1 -1
  137. package/dist/swap/quote/findSwapQuote.js +2 -2
  138. package/dist/swap/quote/findSwapQuote.js.map +1 -1
  139. package/dist/swap/skip/skipRouting.d.ts.map +1 -1
  140. package/dist/swap/skip/skipRouting.js +0 -1
  141. package/dist/swap/skip/skipRouting.js.map +1 -1
  142. package/dist/swap/swapEnabledChains.d.ts +1 -1
  143. package/dist/swap/swapEnabledChains.d.ts.map +1 -1
  144. package/dist/tx/broadcast/resolvers/tron.d.ts.map +1 -1
  145. package/dist/tx/broadcast/resolvers/tron.js +6 -1
  146. package/dist/tx/broadcast/resolvers/tron.js.map +1 -1
  147. package/dist/tx/broadcast/verifyBroadcastByHash.js +1 -1
  148. package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
  149. package/dist/tx/status/resolver.d.ts +9 -1
  150. package/dist/tx/status/resolver.d.ts.map +1 -1
  151. package/dist/tx/status/resolvers/ripple.d.ts.map +1 -1
  152. package/dist/tx/status/resolvers/ripple.js +62 -0
  153. package/dist/tx/status/resolvers/ripple.js.map +1 -1
  154. package/dist/tx/status/resolvers/tron.d.ts.map +1 -1
  155. package/dist/tx/status/resolvers/tron.js +18 -2
  156. package/dist/tx/status/resolvers/tron.js.map +1 -1
  157. package/package.json +41 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/ton/comment.ts"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAiD,CAAA;AAEtF,MAAM,MAAM,uBAAuB,GAAG;IACpC,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,GAAI,iCAAiC,uBAAuB,KAAG,MAUtG,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAG,MACX,CAAA;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,kBAAkB,eAAe,KAAG,IAatE,CAAA"}
@@ -0,0 +1,75 @@
1
+ import { beginCell } from '@ton/core';
2
+ /** Every TON comment body opens with a 32-bit zero opcode, then the UTF-8 text. */
3
+ const commentOpcodeBits = 32;
4
+ /** A TON cell holds 1023 bits of data. */
5
+ const cellBits = 1023;
6
+ /** TEP-74 `transfer#0f8a7ea5`. */
7
+ const jettonTransferOpcode = 0xf8a7ea5;
8
+ /**
9
+ * `addr_std$10` is fixed width whatever account it names: 2 tag + 1 anycast +
10
+ * 8 workchain + 256 hash.
11
+ */
12
+ const addressBits = 267;
13
+ /**
14
+ * What the jetton transfer body spends on fields the comment has to share its
15
+ * cell with but whose width never moves: both addresses, the `custom_payload`
16
+ * Maybe bit, and the Either tag that selects the inline `forward_payload`.
17
+ */
18
+ const jettonFixedFieldBits = addressBits * 2 + 1 + 1;
19
+ /**
20
+ * The longest UTF-8 comment a native TON transfer can carry.
21
+ *
22
+ * The comment is the message body's own cell, so everything after the opcode is
23
+ * available: (1023 - 32) / 8.
24
+ */
25
+ export const tonNativeCommentMaxBytes = Math.floor((cellBits - commentOpcodeBits) / 8);
26
+ /**
27
+ * The longest UTF-8 comment a jetton transfer can carry *for this amount*.
28
+ *
29
+ * A jetton comment is not a body of its own: it rides inline in the transfer
30
+ * body's `forward_payload`, sharing one 1023-bit cell with the opcode, query id,
31
+ * amount, both addresses and the forward amount. WalletCore emits only that
32
+ * inline form — it never spills the payload into a referenced cell — so the cap
33
+ * is whatever those fields leave behind, roughly 34–39 bytes. It SHRINKS as the
34
+ * amount grows, because `VarUInteger 16` widens a byte at a time. A fixed byte
35
+ * count is therefore always wrong for jettons.
36
+ *
37
+ * The amount-dependent widths are measured by encoding them rather than
38
+ * predicted, so the answer cannot drift from the encoder it describes.
39
+ */
40
+ export const getTonJettonCommentMaxBytes = ({ amount, isActiveDestination }) => {
41
+ const variableFields = beginCell()
42
+ .storeUint(jettonTransferOpcode, 32)
43
+ .storeUint(0, 64) // query_id
44
+ .storeCoins(amount)
45
+ .storeCoins(isActiveDestination ? 1n : 0n); // forward_ton_amount
46
+ const available = variableFields.availableBits - jettonFixedFieldBits - commentOpcodeBits;
47
+ return Math.max(0, Math.floor(available / 8));
48
+ };
49
+ /**
50
+ * The longest UTF-8 comment this transfer can carry, in bytes — a native cell's
51
+ * 123, or the amount-dependent inline capacity of a jetton transfer.
52
+ *
53
+ * Exposed so a send form can cap or count down against the real limit instead
54
+ * of discovering it at keysign.
55
+ */
56
+ export const getTonCommentMaxBytes = ({ jetton }) => jetton ? getTonJettonCommentMaxBytes(jetton) : tonNativeCommentMaxBytes;
57
+ /**
58
+ * Rejects a TON comment that will not fit the cell it is destined for.
59
+ *
60
+ * Memos are load-bearing on TON — an exchange deposit without the right one
61
+ * loses the funds — so this is the single place that decides whether a comment
62
+ * is sendable. Run it before the user commits, not at keysign, where an
63
+ * oversized jetton comment surfaces as a bare WalletCore "Internal error".
64
+ */
65
+ export const validateTonComment = ({ memo, jetton }) => {
66
+ const byteLength = new TextEncoder().encode(memo).length;
67
+ const maxBytes = getTonCommentMaxBytes({ jetton });
68
+ if (byteLength <= maxBytes) {
69
+ return;
70
+ }
71
+ throw new Error(jetton
72
+ ? `TON memo must be at most ${maxBytes} bytes for this jetton amount (got ${byteLength}); the limit shrinks as the amount grows.`
73
+ : `TON memo must be at most ${maxBytes} bytes (got ${byteLength}).`);
74
+ };
75
+ //# sourceMappingURL=comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/ton/comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAE5B,0CAA0C;AAC1C,MAAM,QAAQ,GAAG,IAAI,CAAA;AAErB,kCAAkC;AAClC,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAEtC;;;GAGG;AACH,MAAM,WAAW,GAAG,GAAG,CAAA;AAEvB;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;AAStF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAA2B,EAAU,EAAE;IAC9G,MAAM,cAAc,GAAG,SAAS,EAAE;SAC/B,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;SACnC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW;SAC5B,UAAU,CAAC,MAAM,CAAC;SAClB,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,CAAC,qBAAqB;IAElE,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,GAAG,oBAAoB,GAAG,iBAAiB,CAAA;IAEzF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA;AAQD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAAmC,EAAU,EAAE,CAC3F,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAA;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB,EAAQ,EAAE;IAC5E,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;IACxD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAElD,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,IAAI,KAAK,CACb,MAAM;QACJ,CAAC,CAAC,4BAA4B,QAAQ,sCAAsC,UAAU,2CAA2C;QACjI,CAAC,CAAC,4BAA4B,QAAQ,eAAe,UAAU,IAAI,CACtE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Collapses a jetton symbol or name to the Latin skeleton a user perceives, so
3
+ * `USD₮`, `UЅDT` (Cyrillic Ѕ), `$USĐ₮` and `usdt` all compare equal to `USDT`.
4
+ * Compatibility decomposition folds full-width and mathematical letter forms,
5
+ * diacritics are dropped, known homoglyphs are mapped, and everything that is
6
+ * not `A–Z`/`0–9` is removed. Returns an empty string when nothing survives.
7
+ */
8
+ export declare const normalizeJettonSymbol: (value: string) => string;
9
+ //# sourceMappingURL=symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/ton/jetton/symbol.ts"],"names":[],"mappings":"AAmDA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MAIxB,CAAA"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Homoglyphs scammers substitute into a jetton symbol so it *reads* like a
3
+ * verified one while differing byte-for-byte: Cyrillic/Greek capitals that look
4
+ * like Latin ones, the tugrik sign standing in for `T`, and stroked `D`s. Keys
5
+ * are already upper-cased because the map is applied after `toUpperCase()`.
6
+ */
7
+ const confusables = {
8
+ // Cyrillic
9
+ А: 'A',
10
+ В: 'B',
11
+ Е: 'E',
12
+ Ё: 'E',
13
+ Ѕ: 'S',
14
+ І: 'I',
15
+ Ј: 'J',
16
+ К: 'K',
17
+ М: 'M',
18
+ Н: 'H',
19
+ О: 'O',
20
+ Р: 'P',
21
+ С: 'C',
22
+ Т: 'T',
23
+ У: 'Y',
24
+ Х: 'X',
25
+ Ԛ: 'Q',
26
+ Ԝ: 'W',
27
+ // Greek
28
+ Α: 'A',
29
+ Β: 'B',
30
+ Ε: 'E',
31
+ Ζ: 'Z',
32
+ Η: 'H',
33
+ Ι: 'I',
34
+ Κ: 'K',
35
+ Μ: 'M',
36
+ Ν: 'N',
37
+ Ο: 'O',
38
+ Ρ: 'P',
39
+ Τ: 'T',
40
+ Υ: 'Y',
41
+ Χ: 'X',
42
+ // Currency and stroked letters
43
+ '₮': 'T',
44
+ Đ: 'D',
45
+ Ð: 'D',
46
+ Ɖ: 'D',
47
+ Ŧ: 'T',
48
+ };
49
+ const combiningMarks = /[̀-ͯ]/g;
50
+ /**
51
+ * Collapses a jetton symbol or name to the Latin skeleton a user perceives, so
52
+ * `USD₮`, `UЅDT` (Cyrillic Ѕ), `$USĐ₮` and `usdt` all compare equal to `USDT`.
53
+ * Compatibility decomposition folds full-width and mathematical letter forms,
54
+ * diacritics are dropped, known homoglyphs are mapped, and everything that is
55
+ * not `A–Z`/`0–9` is removed. Returns an empty string when nothing survives.
56
+ */
57
+ export const normalizeJettonSymbol = (value) => Array.from(value.normalize('NFKD').replace(combiningMarks, '').toUpperCase())
58
+ .map(char => confusables[char] ?? char)
59
+ .join('')
60
+ .replace(/[^A-Z0-9]/g, '');
61
+ //# sourceMappingURL=symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/ton/jetton/symbol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,GAA2B;IAC1C,WAAW;IACX,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,QAAQ;IACR,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,+BAA+B;IAC/B,GAAG,EAAE,GAAG;IACR,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACP,CAAA;AAED,MAAM,cAAc,GAAG,QAAQ,CAAA;AAE/B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC7D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;KAC1E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;KACtC,IAAI,CAAC,EAAE,CAAC;KACR,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { TokenVerification } from '@vultisig/core-chain/coin/tokenVerification';
2
+ import { TonVerifiedJettonRegistry } from './verifiedRegistry.js';
3
+ type ResolveTonJettonVerificationInput = {
4
+ /** Jetton master address, raw or user-friendly. */
5
+ address: string;
6
+ symbol?: string;
7
+ name?: string;
8
+ /** Toncenter's own scam flag for the master, when known. */
9
+ isFlaggedScam?: boolean;
10
+ registry: TonVerifiedJettonRegistry;
11
+ };
12
+ /**
13
+ * Classifies a jetton against the verified registry. A listed address is
14
+ * `verified` whatever it calls itself. An unlisted jetton is `scam` when the
15
+ * indexer flags it or when its symbol or name collapses (see
16
+ * `normalizeJettonSymbol`) onto a verified jetton's symbol or name — the
17
+ * fake-USDT pattern, where the counterfeit is only distinguishable by address.
18
+ * Anything else is `unverified`.
19
+ */
20
+ export declare const resolveTonJettonVerification: ({ address, symbol, name, isFlaggedScam, registry, }: ResolveTonJettonVerificationInput) => TokenVerification;
21
+ type GetTonJettonVerificationInput = {
22
+ /** Jetton master address, raw or user-friendly. */
23
+ id: string;
24
+ /** Ticker already known locally, used when Toncenter has no symbol for the master. */
25
+ ticker?: string;
26
+ };
27
+ /**
28
+ * Verification tier for one jetton, for token rows and approval cards. Reads the
29
+ * master's on-chain symbol and name from Toncenter so a counterfeit is judged by
30
+ * what it actually claims to be, not by the ticker stored locally; falls back to
31
+ * that ticker when the lookup fails, so the label still renders offline.
32
+ */
33
+ export declare const getTonJettonVerification: ({ id, ticker, }: GetTonJettonVerificationInput) => Promise<TokenVerification>;
34
+ export {};
35
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/ton/jetton/verification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAI/E,OAAO,EAAgC,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAE5F,KAAK,iCAAiC,GAAG;IACvC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,yBAAyB,CAAA;CACpC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GAAI,qDAM1C,iCAAiC,KAAG,iBAYtC,CAAA;AAED,KAAK,6BAA6B,GAAG;IACnC,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAA;IACV,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAU,iBAG5C,6BAA6B,KAAG,OAAO,CAAC,iBAAiB,CAe3D,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { tonAddressToRawKey } from '@vultisig/core-chain/chains/ton/address';
2
+ import { getJettonMastersMetadata } from '@vultisig/core-chain/chains/ton/api';
3
+ import { attempt } from '@vultisig/lib-utils/attempt';
4
+ import { normalizeJettonSymbol } from './symbol.js';
5
+ import { getTonVerifiedJettonRegistry } from './verifiedRegistry.js';
6
+ /**
7
+ * Classifies a jetton against the verified registry. A listed address is
8
+ * `verified` whatever it calls itself. An unlisted jetton is `scam` when the
9
+ * indexer flags it or when its symbol or name collapses (see
10
+ * `normalizeJettonSymbol`) onto a verified jetton's symbol or name — the
11
+ * fake-USDT pattern, where the counterfeit is only distinguishable by address.
12
+ * Anything else is `unverified`.
13
+ */
14
+ export const resolveTonJettonVerification = ({ address, symbol, name, isFlaggedScam, registry, }) => {
15
+ if (registry.byAddress[tonAddressToRawKey(address)])
16
+ return 'verified';
17
+ if (isFlaggedScam)
18
+ return 'scam';
19
+ const impersonates = [symbol, name].some(label => {
20
+ const skeleton = label ? normalizeJettonSymbol(label) : '';
21
+ return !!skeleton && (registry.symbols.has(skeleton) || registry.names.has(skeleton));
22
+ });
23
+ return impersonates ? 'scam' : 'unverified';
24
+ };
25
+ /**
26
+ * Verification tier for one jetton, for token rows and approval cards. Reads the
27
+ * master's on-chain symbol and name from Toncenter so a counterfeit is judged by
28
+ * what it actually claims to be, not by the ticker stored locally; falls back to
29
+ * that ticker when the lookup fails, so the label still renders offline.
30
+ */
31
+ export const getTonJettonVerification = async ({ id, ticker, }) => {
32
+ const [registry, metadata] = await Promise.all([
33
+ getTonVerifiedJettonRegistry(),
34
+ attempt(getJettonMastersMetadata([id])),
35
+ ]);
36
+ const master = 'data' in metadata ? metadata.data?.[tonAddressToRawKey(id)] : undefined;
37
+ return resolveTonJettonVerification({
38
+ address: id,
39
+ symbol: master?.symbol ?? ticker,
40
+ name: master?.name,
41
+ isFlaggedScam: master?.isFlaggedScam,
42
+ registry,
43
+ });
44
+ };
45
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/ton/jetton/verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,4BAA4B,EAA6B,MAAM,oBAAoB,CAAA;AAY5F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,OAAO,EACP,MAAM,EACN,IAAI,EACJ,aAAa,EACb,QAAQ,GAC0B,EAAqB,EAAE;IACzD,IAAI,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,UAAU,CAAA;IAEtE,IAAI,aAAa;QAAE,OAAO,MAAM,CAAA;IAEhC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1D,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvF,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAA;AAC7C,CAAC,CAAA;AASD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAC7C,EAAE,EACF,MAAM,GACwB,EAA8B,EAAE;IAC9D,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,4BAA4B,EAAE;QAC9B,OAAO,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACxC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEvF,OAAO,4BAA4B,CAAC;QAClC,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM;QAChC,IAAI,EAAE,MAAM,EAAE,IAAI;QAClB,aAAa,EAAE,MAAM,EAAE,aAAa;QACpC,QAAQ;KACT,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Tonkeeper's community-reviewed jetton whitelist, the list every major TON
3
+ * wallet uses as its "verified" tier. Compiled from the repo's YAML sources on
4
+ * every merge; served with `Access-Control-Allow-Origin: *`.
5
+ */
6
+ export declare const tonAssetsJettonsUrl = "https://raw.githubusercontent.com/tonkeeper/ton-assets/main/jettons.json";
7
+ /** A jetton we treat as legitimate, keyed by its lower-cased raw master address. */
8
+ export type VerifiedJetton = {
9
+ address: string;
10
+ symbol: string;
11
+ name?: string;
12
+ decimals?: number;
13
+ logo?: string;
14
+ priceProviderId?: string;
15
+ };
16
+ /**
17
+ * Verified jettons indexed for the two questions verification asks: "is this
18
+ * address listed?" and "does this symbol or name belong to a listed jetton?".
19
+ * `symbols` and `names` hold `normalizeJettonSymbol` skeletons.
20
+ */
21
+ export type TonVerifiedJettonRegistry = {
22
+ byAddress: Record<string, VerifiedJetton>;
23
+ symbols: Set<string>;
24
+ names: Set<string>;
25
+ };
26
+ /**
27
+ * Builds a registry from a list of verified jettons. On an address collision the
28
+ * earlier entry's metadata is kept in `byAddress`, but every entry's symbol and
29
+ * name are indexed: two entries for one address describe the same verified
30
+ * contract, and a counterfeit may copy either spelling. Our curated USDT carries
31
+ * the ticker `USDT` and no name; only the ton-assets duplicate contributes
32
+ * `USD₮` and `Tether USD`, so dropping it would let a "Tether USD" impostor
33
+ * through as merely unverified.
34
+ */
35
+ export declare const makeTonVerifiedJettonRegistry: (jettons: VerifiedJetton[]) => TonVerifiedJettonRegistry;
36
+ /**
37
+ * The jettons we consider verified: our own curated TON tokens (which win, so
38
+ * their tickers and price ids are kept) merged with the ton-assets whitelist.
39
+ * Degrades to the curated list alone when the whitelist cannot be fetched, so
40
+ * discovery and labels keep working offline — with fewer jettons recognised.
41
+ */
42
+ export declare const getTonVerifiedJettonRegistry: () => Promise<TonVerifiedJettonRegistry>;
43
+ //# sourceMappingURL=verifiedRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifiedRegistry.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/ton/jetton/verifiedRegistry.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,6EAA6E,CAAA;AAW7G,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACnB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,GAAI,SAAS,cAAc,EAAE,KAAG,yBAezE,CAAA;AA4DD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAa,OAAO,CAAC,yBAAyB,CAOtF,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { tonAddressToRawKey } from '@vultisig/core-chain/chains/ton/address';
3
+ import { knownTokens } from '@vultisig/core-chain/coin/knownTokens';
4
+ import { attempt } from '@vultisig/lib-utils/attempt';
5
+ import { memoizeAsync } from '@vultisig/lib-utils/memoizeAsync';
6
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
7
+ import { convertDuration } from '@vultisig/lib-utils/time/convertDuration';
8
+ import { normalizeJettonSymbol } from './symbol.js';
9
+ /**
10
+ * Tonkeeper's community-reviewed jetton whitelist, the list every major TON
11
+ * wallet uses as its "verified" tier. Compiled from the repo's YAML sources on
12
+ * every merge; served with `Access-Control-Allow-Origin: *`.
13
+ */
14
+ export const tonAssetsJettonsUrl = 'https://raw.githubusercontent.com/tonkeeper/ton-assets/main/jettons.json';
15
+ /**
16
+ * Builds a registry from a list of verified jettons. On an address collision the
17
+ * earlier entry's metadata is kept in `byAddress`, but every entry's symbol and
18
+ * name are indexed: two entries for one address describe the same verified
19
+ * contract, and a counterfeit may copy either spelling. Our curated USDT carries
20
+ * the ticker `USDT` and no name; only the ton-assets duplicate contributes
21
+ * `USD₮` and `Tether USD`, so dropping it would let a "Tether USD" impostor
22
+ * through as merely unverified.
23
+ */
24
+ export const makeTonVerifiedJettonRegistry = (jettons) => {
25
+ const registry = { byAddress: {}, symbols: new Set(), names: new Set() };
26
+ for (const jetton of jettons) {
27
+ const address = tonAddressToRawKey(jetton.address);
28
+ registry.byAddress[address] ??= { ...jetton, address };
29
+ const symbol = normalizeJettonSymbol(jetton.symbol);
30
+ if (symbol)
31
+ registry.symbols.add(symbol);
32
+ const name = jetton.name ? normalizeJettonSymbol(jetton.name) : '';
33
+ if (name)
34
+ registry.names.add(name);
35
+ }
36
+ return registry;
37
+ };
38
+ const getCuratedJettons = () => knownTokens[Chain.Ton].flatMap(({ id, ticker, decimals, logo, priceProviderId }) => id
39
+ ? [
40
+ {
41
+ address: tonAddressToRawKey(id),
42
+ symbol: ticker,
43
+ decimals,
44
+ logo,
45
+ ...(priceProviderId === undefined ? {} : { priceProviderId }),
46
+ },
47
+ ]
48
+ : []);
49
+ const isTonAssetsJetton = (value) => typeof value === 'object' && value !== null && typeof value.address === 'string';
50
+ const fetchTonAssetsJettons = async () => {
51
+ const response = await queryUrl(tonAssetsJettonsUrl);
52
+ if (!Array.isArray(response)) {
53
+ throw new Error('ton-assets jettons.json is not a list');
54
+ }
55
+ return response.filter(isTonAssetsJetton).flatMap(({ address, name, symbol, decimals, image, coingecko }) => {
56
+ const ticker = symbol?.trim();
57
+ if (!ticker)
58
+ return [];
59
+ return [
60
+ {
61
+ address: tonAddressToRawKey(address),
62
+ symbol: ticker,
63
+ ...(name ? { name } : {}),
64
+ ...(typeof decimals === 'number' ? { decimals } : {}),
65
+ ...(image ? { logo: image } : {}),
66
+ ...(coingecko ? { priceProviderId: coingecko } : {}),
67
+ },
68
+ ];
69
+ });
70
+ };
71
+ // Only a successful fetch is cached: a rejected promise is never stored, so an
72
+ // outage is retried on the next call instead of pinning the degraded registry.
73
+ const getFullRegistry = memoizeAsync(async () => makeTonVerifiedJettonRegistry([...getCuratedJettons(), ...(await fetchTonAssetsJettons())]), { cacheTime: convertDuration(1, 'h', 'ms') });
74
+ let curatedRegistry;
75
+ const getCuratedRegistry = () => {
76
+ if (!curatedRegistry) {
77
+ curatedRegistry = makeTonVerifiedJettonRegistry(getCuratedJettons());
78
+ }
79
+ return curatedRegistry;
80
+ };
81
+ /**
82
+ * The jettons we consider verified: our own curated TON tokens (which win, so
83
+ * their tickers and price ids are kept) merged with the ton-assets whitelist.
84
+ * Degrades to the curated list alone when the whitelist cannot be fetched, so
85
+ * discovery and labels keep working offline — with fewer jettons recognised.
86
+ */
87
+ export const getTonVerifiedJettonRegistry = async () => {
88
+ const result = await attempt(getFullRegistry());
89
+ if ('data' in result && result.data)
90
+ return result.data;
91
+ console.warn('[ton] verified jetton list unavailable; using the curated list only', result.error);
92
+ return getCuratedRegistry();
93
+ };
94
+ //# sourceMappingURL=verifiedRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifiedRegistry.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/ton/jetton/verifiedRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The bounce flag a dApp (TonConnect) message destination declares. A user-friendly
3
+ * address carries it in its tag byte — `EQ…`/`kQ…` bounceable, `UQ…`/`0Q…` not. Raw
4
+ * `workchain:hex` addresses carry no tag, so callers have to disambiguate the two cases
5
+ * the raw form can mean:
6
+ * - a deployment message with `stateInit`, whose destination has no code yet to bounce
7
+ * from and therefore must stay non-bounceable
8
+ * - an already-deployed contract/router address, which must default bounceable so a
9
+ * rejection refunds instead of absorbing the transfer
10
+ *
11
+ * Input that is neither shape is reported non-bounceable, and the signer refuses such a
12
+ * destination anyway. The flag is part of the signed body, so every co-signer has to
13
+ * derive it from the same place: the message's own address plus whether the message
14
+ * carries `stateInit`, never a wallet-level default.
15
+ */
16
+ export declare const getTonMessageBounceable: (address: string, hasStateInit?: boolean) => boolean;
17
+ //# sourceMappingURL=messageBounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBounce.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/ton/messageBounce.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,sBAAoB,KAAG,OAW/E,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { Address } from '@ton/core';
2
+ import { attempt } from '@vultisig/lib-utils/attempt';
3
+ /**
4
+ * A raw `workchain:hash` destination in any spelling the signer accepts. Leading zeros,
5
+ * an explicit sign and a `0x`-prefixed hash all name the same account: `0:…`, `00:…`,
6
+ * `+0:…` and `-0:…` compile to one and the same pre-image, as do `-1:…` and `-01:…`.
7
+ *
8
+ * Matching the shape beats demanding one canonical spelling. The error that costs money
9
+ * is calling a deployed contract non-bounceable, so every destination WalletCore will
10
+ * sign has to reach the `!hasStateInit` rule below — `00:<hash>` used to fall through it
11
+ * and get signed non-bounceable while `0:<hash>` did not, losing the refund on a
12
+ * rejection purely because of how the dApp spelled the address. Being wider here than
13
+ * the signer costs nothing: a shape WalletCore refuses never reaches a signed message.
14
+ */
15
+ const rawAddressPattern = /^[+-]?\d+:(?:0x)?[0-9a-fA-F]{64}$/;
16
+ /**
17
+ * The bounce flag a dApp (TonConnect) message destination declares. A user-friendly
18
+ * address carries it in its tag byte — `EQ…`/`kQ…` bounceable, `UQ…`/`0Q…` not. Raw
19
+ * `workchain:hex` addresses carry no tag, so callers have to disambiguate the two cases
20
+ * the raw form can mean:
21
+ * - a deployment message with `stateInit`, whose destination has no code yet to bounce
22
+ * from and therefore must stay non-bounceable
23
+ * - an already-deployed contract/router address, which must default bounceable so a
24
+ * rejection refunds instead of absorbing the transfer
25
+ *
26
+ * Input that is neither shape is reported non-bounceable, and the signer refuses such a
27
+ * destination anyway. The flag is part of the signed body, so every co-signer has to
28
+ * derive it from the same place: the message's own address plus whether the message
29
+ * carries `stateInit`, never a wallet-level default.
30
+ */
31
+ export const getTonMessageBounceable = (address, hasStateInit = false) => {
32
+ if (!Address.isFriendly(address)) {
33
+ return rawAddressPattern.test(address) && !hasStateInit;
34
+ }
35
+ const parsed = attempt(() => Address.parseFriendly(address));
36
+ if ('error' in parsed) {
37
+ return false;
38
+ }
39
+ return parsed.data.isBounceable;
40
+ };
41
+ //# sourceMappingURL=messageBounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBounce.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/ton/messageBounce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,iBAAiB,GAAG,mCAAmC,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,YAAY,GAAG,KAAK,EAAW,EAAE;IACxF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAA;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5D,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAA;AACjC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTronBlockInfo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/tron/getTronBlockInfo.ts"],"names":[],"mappings":"AAqBA,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,yBAAyB,EAAE,MAAM,CAAA;CAClC,CAAA;AAQD,KAAK,qBAAqB,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AA+BD,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,GAChB,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA4BzD"}
1
+ {"version":3,"file":"getTronBlockInfo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/tron/getTronBlockInfo.ts"],"names":[],"mappings":"AAqBA,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,yBAAyB,EAAE,MAAM,CAAA;CAClC,CAAA;AAQD,KAAK,qBAAqB,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AA+BD,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,GAChB,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA2BzD"}
@@ -39,14 +39,13 @@ export async function getTronBlockInfo({ expiration, timestamp, refBlockBytesHex
39
39
  refBlockHashHex,
40
40
  });
41
41
  }
42
- const currentTimestampMillis = Math.floor(Date.now());
43
- const nowMillis = Math.floor(Date.now());
42
+ const blockHeaderTimestamp = shouldBePresent(currentBlock.block_header?.raw_data?.timestamp);
44
43
  const oneHourMillis = 60 * 60 * 1000;
45
- expiration = expiration ?? nowMillis + oneHourMillis;
44
+ expiration = expiration ?? blockHeaderTimestamp + oneHourMillis;
46
45
  return {
47
- timestamp: timestamp ?? currentTimestampMillis,
46
+ timestamp: timestamp ?? blockHeaderTimestamp,
48
47
  expiration,
49
- blockHeaderTimestamp: currentBlock.block_header?.raw_data?.timestamp ?? 0,
48
+ blockHeaderTimestamp,
50
49
  blockHeaderNumber: currentBlock.block_header?.raw_data?.number ?? 0,
51
50
  blockHeaderVersion: currentBlock.block_header?.raw_data?.version ?? 0,
52
51
  blockHeaderTxTrieRoot: currentBlock.block_header?.raw_data?.txTrieRoot ?? '',
@@ -1 +1 @@
1
- {"version":3,"file":"getTronBlockInfo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/tron/getTronBlockInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getTronBlockInfo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/tron/getTronBlockInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA0CrC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC1C,OAAO,MAAM,QAAQ,CAAY,GAAG,UAAU,uBAAuB,EAAE;QACrE,IAAI,EAAE,EAAE,GAAG,EAAE;KACd,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,6BAA6B,GAAG,CAAC,OAAe,EAAU,EAAE;IAChE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACnD,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAwB,EAAE,EAAE;IACpG,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;IAC5C,mEAAmE;IACnE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAA;IAC1D,IAAI,SAAS,GAAG,MAAM;QAAE,SAAS,IAAI,KAAK,CAAA;IAE1C,6DAA6D;IAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,CAAA;QACjC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1D,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5D,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,GACO;IACtB,MAAM,GAAG,GAAG,GAAG,UAAU,qBAAqB,CAAA;IAE9C,IAAI,YAAY,GAAG,MAAM,QAAQ,CAAY,GAAG,EAAE;QAChD,IAAI,EAAE,EAAE;KACT,CAAC,CAAA;IACF,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAAC;QACxC,YAAY,GAAG,MAAM,eAAe,CAAC;YACnC,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC;YACpE,gBAAgB;YAChB,eAAe;SAChB,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,oBAAoB,GAAG,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC5F,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IACpC,UAAU,GAAG,UAAU,IAAI,oBAAoB,GAAG,aAAa,CAAA;IAE/D,OAAO;QACL,SAAS,EAAE,SAAS,IAAI,oBAAoB;QAC5C,UAAU;QACV,oBAAoB;QACpB,iBAAiB,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;QACnE,kBAAkB,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC;QACrE,qBAAqB,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,IAAI,EAAE;QAC5E,qBAAqB,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,IAAI,EAAE;QAC5E,yBAAyB,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,IAAI,EAAE;KACtF,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/balance/resolvers/ripple.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAsCjD;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,4BAA4B,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,yBAAyB,CAsCrG,CAAA;AAQD,eAAO,MAAM,oBAAoB,EAAE,mBAM3B,CAAA"}
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/balance/resolvers/ripple.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAmCjD;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,4BAA4B,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,yBAAyB,CAsCrG,CAAA;AAQD,eAAO,MAAM,oBAAoB,EAAE,mBAM3B,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { getRippleAccountInfo } from '@vultisig/core-chain/chains/ripple/account/info';
2
2
  import { getRippleAccountLines } from '@vultisig/core-chain/chains/ripple/account/lines';
3
- import { parseIssuedCurrencyValue, parseRippleTokenId, toXrplCurrencyCode, } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
3
+ import { parseIssuedCurrencyValue, parseRippleTokenId } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
4
4
  import { getRippleNetworkInfo } from '@vultisig/core-chain/chains/ripple/network/info';
5
+ import { findRippleTrustLine } from '@vultisig/core-chain/chains/ripple/trustLine';
5
6
  import { isFeeCoin } from '@vultisig/core-chain/coin/utils/isFeeCoin';
6
7
  import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
7
8
  import { attempt } from '@vultisig/lib-utils/attempt';
@@ -24,7 +25,7 @@ const getRippleIssuedCurrencyBalance = async ({ address, id }) => {
24
25
  }
25
26
  throw linesResult.error;
26
27
  }
27
- const line = linesResult.data.find(({ account, currency: lineCurrency }) => account === issuer && toXrplCurrencyCode(lineCurrency) === toXrplCurrencyCode(currency));
28
+ const line = findRippleTrustLine({ lines: linesResult.data, currency, issuer });
28
29
  if (!line) {
29
30
  return BigInt(0);
30
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/balance/resolvers/ripple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/balance/resolvers/ripple.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chainFeeCoin.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/coin/chainFeeCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,gCAAgC,CAAA;AAiN7E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAG/C,CAAA"}
1
+ {"version":3,"file":"chainFeeCoin.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/coin/chainFeeCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,gCAAgC,CAAA;AA2M7E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAG/C,CAAA"}
@@ -1,6 +1,5 @@
1
1
  import { Chain, EthereumL2Chain } from '@vultisig/core-chain/Chain';
2
2
  import { recordMap } from '@vultisig/lib-utils/record/recordMap';
3
- import { kujiraCoinsMigratedToThorChainMetadata } from '../chains/cosmos/thor/kujira-merge/index.js';
4
3
  const ether = {
5
4
  ticker: 'ETH',
6
5
  logo: 'eth',
@@ -99,10 +98,6 @@ const leanChainFeeCoin = {
99
98
  decimals: 18,
100
99
  priceProviderId: 'dydx-chain',
101
100
  },
102
- [Chain.Kujira]: {
103
- ...kujiraCoinsMigratedToThorChainMetadata.kuji,
104
- decimals: 6,
105
- },
106
101
  [Chain.Terra]: {
107
102
  ticker: 'LUNA',
108
103
  logo: 'luna',
@@ -1 +1 @@
1
- {"version":3,"file":"chainFeeCoin.js","sourceRoot":"","sources":["../../../../../packages/core/chain/coin/chainFeeCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,sCAAsC,EAAE,MAAM,oCAAoC,CAAA;AAE3F,MAAM,KAAK,GAAsB;IAC/B,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,EAAE;IACZ,eAAe,EAAE,UAAU;CAC5B,CAAA;AAED,MAAM,gBAAgB,GAAqC;IACzD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,SAAS;KAC3B;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,cAAc;KAChC;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,UAAU;KAC5B;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,UAAU;KAC5B;IACD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,MAAM;KACxB;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,QAAQ;KAC1B;IACD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,WAAW;KAC7B;IACD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,OAAO;KACzB;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,QAAQ;KAC1B;IACD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,kBAAkB;KACpC;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,aAAa;KAC/B;IACD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,aAAa;KAC/B;IAED,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,yBAAyB;KAC3C;IAED,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,kBAAkB;KACpC;IACD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,YAAY;KAC9B;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,GAAG,sCAAsC,CAAC,IAAI;QAC9C,QAAQ,EAAE,CAAC;KACZ;IACD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,cAAc;KAChC;IACD,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,YAAY;KAC9B;IACD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,KAAK;KACvB;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,UAAU;KAC5B;IACD,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,WAAW;KAC7B;IACD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,UAAU;KAC5B;IACD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,eAAe;KACjC;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,QAAQ;KAC1B;IACD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,SAAS;KAC3B;IACD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,MAAM;KACxB;IACD,GAAG,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;IAC1C,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,OAAO;KACzB;IACD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,SAAS;KAC3B;IACD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,QAAQ;KAC1B;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QACnB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,aAAa;KAC/B;IACD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,aAAa;KAC/B;IACD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,cAAc;KAChC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA6B,SAAS,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAClG,GAAG,IAAI;IACP,KAAK;CACN,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"chainFeeCoin.js","sourceRoot":"","sources":["../../../../../packages/core/chain/coin/chainFeeCoin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"coinType.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/coin/coinType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAA;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,qCAAqC,KAAK,KAAG,QAyCrE,CAAA"}
1
+ {"version":3,"file":"coinType.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/coin/coinType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAA;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,qCAAqC,KAAK,KAAG,QAwCrE,CAAA"}