@shapeshiftoss/caip 8.16.4 → 8.16.5

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 (198) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/accountId/accountId.d.ts +29 -0
  3. package/dist/cjs/accountId/accountId.js +44 -0
  4. package/dist/cjs/accountId/accountId.test.d.ts +1 -0
  5. package/dist/cjs/accountId/accountId.test.js +109 -0
  6. package/dist/cjs/adapters/banxa/index.d.ts +15 -0
  7. package/dist/cjs/adapters/banxa/index.js +153 -0
  8. package/dist/cjs/adapters/coinbase/generate.d.ts +1 -0
  9. package/dist/cjs/adapters/coinbase/generate.js +9 -0
  10. package/dist/cjs/adapters/coinbase/generated/adapter.json +153 -0
  11. package/dist/cjs/adapters/coinbase/generated/index.d.ts +2 -0
  12. package/dist/cjs/adapters/coinbase/generated/index.js +8 -0
  13. package/dist/cjs/adapters/coinbase/index.d.ts +3 -0
  14. package/dist/cjs/adapters/coinbase/index.js +16 -0
  15. package/dist/cjs/adapters/coinbase/utils.d.ts +12 -0
  16. package/dist/cjs/adapters/coinbase/utils.js +55 -0
  17. package/dist/cjs/adapters/coincap/generate.d.ts +1 -0
  18. package/dist/cjs/adapters/coincap/generate.js +10 -0
  19. package/dist/cjs/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  20. package/dist/cjs/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  21. package/dist/cjs/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  22. package/dist/cjs/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  23. package/dist/cjs/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  24. package/dist/cjs/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  25. package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  26. package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  27. package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  28. package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  29. package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  30. package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  31. package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  32. package/dist/cjs/adapters/coincap/generated/index.d.ts +15 -0
  33. package/dist/cjs/adapters/coincap/generated/index.js +34 -0
  34. package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  35. package/dist/cjs/adapters/coincap/index.d.ts +4 -0
  36. package/dist/cjs/adapters/coincap/index.js +44 -0
  37. package/dist/cjs/adapters/coincap/index.test.d.ts +1 -0
  38. package/dist/cjs/adapters/coincap/index.test.js +90 -0
  39. package/dist/cjs/adapters/coincap/utils.d.ts +24 -0
  40. package/dist/cjs/adapters/coincap/utils.js +146 -0
  41. package/dist/cjs/adapters/coincap/utils.test.d.ts +4 -0
  42. package/dist/cjs/adapters/coincap/utils.test.js +173 -0
  43. package/dist/cjs/adapters/coingecko/generate.d.ts +1 -0
  44. package/dist/cjs/adapters/coingecko/generate.js +10 -0
  45. package/dist/cjs/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  46. package/dist/cjs/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  47. package/dist/cjs/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  48. package/dist/cjs/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  49. package/dist/cjs/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  50. package/dist/cjs/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  51. package/dist/cjs/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  52. package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  53. package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  54. package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  55. package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  56. package/dist/cjs/adapters/coingecko/generated/eip155_143/adapter.json +1 -0
  57. package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  58. package/dist/cjs/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  59. package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  60. package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  61. package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  62. package/dist/cjs/adapters/coingecko/generated/index.d.ts +21 -0
  63. package/dist/cjs/adapters/coingecko/generated/index.js +46 -0
  64. package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  65. package/dist/cjs/adapters/coingecko/generated/sui_35834a8a/adapter.json +1 -0
  66. package/dist/cjs/adapters/coingecko/generated/tron_0x2b6653dc/adapter.json +1 -0
  67. package/dist/cjs/adapters/coingecko/index.d.ts +29 -0
  68. package/dist/cjs/adapters/coingecko/index.js +188 -0
  69. package/dist/cjs/adapters/coingecko/index.test.d.ts +1 -0
  70. package/dist/cjs/adapters/coingecko/index.test.js +297 -0
  71. package/dist/cjs/adapters/coingecko/utils.d.ts +11 -0
  72. package/dist/cjs/adapters/coingecko/utils.js +235 -0
  73. package/dist/cjs/adapters/coingecko/utils.test.d.ts +1 -0
  74. package/dist/cjs/adapters/coingecko/utils.test.js +202 -0
  75. package/dist/cjs/adapters/index.d.ts +6 -0
  76. package/dist/cjs/adapters/index.js +22 -0
  77. package/dist/cjs/adapters/mtpelerin/index.d.ts +10 -0
  78. package/dist/cjs/adapters/mtpelerin/index.js +127 -0
  79. package/dist/cjs/adapters/onramper/index.d.ts +6 -0
  80. package/dist/cjs/adapters/onramper/index.js +39 -0
  81. package/dist/cjs/assetId/assetId.d.ts +36 -0
  82. package/dist/cjs/assetId/assetId.js +120 -0
  83. package/dist/cjs/assetId/assetId.test.d.ts +1 -0
  84. package/dist/cjs/assetId/assetId.test.js +324 -0
  85. package/dist/cjs/chainId/chainId.d.ts +20 -0
  86. package/dist/cjs/chainId/chainId.js +25 -0
  87. package/dist/cjs/chainId/chainId.test.d.ts +1 -0
  88. package/dist/cjs/chainId/chainId.test.js +90 -0
  89. package/dist/cjs/constants.d.ts +135 -0
  90. package/dist/cjs/constants.js +192 -0
  91. package/dist/cjs/index.d.ts +7 -0
  92. package/dist/cjs/index.js +36 -0
  93. package/dist/cjs/package.json +1 -0
  94. package/dist/cjs/typeGuards.d.ts +16 -0
  95. package/dist/cjs/typeGuards.js +56 -0
  96. package/dist/cjs/utils.d.ts +33 -0
  97. package/dist/cjs/utils.js +56 -0
  98. package/dist/cjs/utils.test.d.ts +1 -0
  99. package/dist/cjs/utils.test.js +160 -0
  100. package/dist/esm/.tsbuildinfo +1 -0
  101. package/dist/esm/accountId/accountId.d.ts +29 -0
  102. package/dist/esm/accountId/accountId.js +39 -0
  103. package/dist/esm/accountId/accountId.test.d.ts +1 -0
  104. package/dist/esm/accountId/accountId.test.js +107 -0
  105. package/dist/esm/adapters/banxa/index.d.ts +15 -0
  106. package/dist/esm/adapters/banxa/index.js +143 -0
  107. package/dist/esm/adapters/coinbase/generate.d.ts +1 -0
  108. package/dist/esm/adapters/coinbase/generate.js +7 -0
  109. package/dist/esm/adapters/coinbase/generated/adapter.json +153 -0
  110. package/dist/esm/adapters/coinbase/generated/index.d.ts +2 -0
  111. package/dist/esm/adapters/coinbase/generated/index.js +2 -0
  112. package/dist/esm/adapters/coinbase/index.d.ts +3 -0
  113. package/dist/esm/adapters/coinbase/index.js +8 -0
  114. package/dist/esm/adapters/coinbase/utils.d.ts +12 -0
  115. package/dist/esm/adapters/coinbase/utils.js +46 -0
  116. package/dist/esm/adapters/coincap/generate.d.ts +1 -0
  117. package/dist/esm/adapters/coincap/generate.js +8 -0
  118. package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  119. package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  120. package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  121. package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  122. package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  123. package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  124. package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  125. package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  126. package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  127. package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  128. package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  129. package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  130. package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  131. package/dist/esm/adapters/coincap/generated/index.d.ts +15 -0
  132. package/dist/esm/adapters/coincap/generated/index.js +15 -0
  133. package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  134. package/dist/esm/adapters/coincap/index.d.ts +4 -0
  135. package/dist/esm/adapters/coincap/index.js +13 -0
  136. package/dist/esm/adapters/coincap/index.test.d.ts +1 -0
  137. package/dist/esm/adapters/coincap/index.test.js +88 -0
  138. package/dist/esm/adapters/coincap/utils.d.ts +24 -0
  139. package/dist/esm/adapters/coincap/utils.js +135 -0
  140. package/dist/esm/adapters/coincap/utils.test.d.ts +4 -0
  141. package/dist/esm/adapters/coincap/utils.test.js +168 -0
  142. package/dist/esm/adapters/coingecko/generate.d.ts +1 -0
  143. package/dist/esm/adapters/coingecko/generate.js +8 -0
  144. package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  145. package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  146. package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  147. package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  148. package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  149. package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  150. package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  151. package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  152. package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  153. package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  154. package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  155. package/dist/esm/adapters/coingecko/generated/eip155_143/adapter.json +1 -0
  156. package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  157. package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  158. package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  159. package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  160. package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  161. package/dist/esm/adapters/coingecko/generated/index.d.ts +21 -0
  162. package/dist/esm/adapters/coingecko/generated/index.js +21 -0
  163. package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  164. package/dist/esm/adapters/coingecko/generated/sui_35834a8a/adapter.json +1 -0
  165. package/dist/esm/adapters/coingecko/generated/tron_0x2b6653dc/adapter.json +1 -0
  166. package/dist/esm/adapters/coingecko/index.d.ts +29 -0
  167. package/dist/esm/adapters/coingecko/index.js +152 -0
  168. package/dist/esm/adapters/coingecko/index.test.d.ts +1 -0
  169. package/dist/esm/adapters/coingecko/index.test.js +295 -0
  170. package/dist/esm/adapters/coingecko/utils.d.ts +11 -0
  171. package/dist/esm/adapters/coingecko/utils.js +226 -0
  172. package/dist/esm/adapters/coingecko/utils.test.d.ts +1 -0
  173. package/dist/esm/adapters/coingecko/utils.test.js +197 -0
  174. package/dist/esm/adapters/index.d.ts +6 -0
  175. package/dist/esm/adapters/index.js +6 -0
  176. package/dist/esm/adapters/mtpelerin/index.d.ts +10 -0
  177. package/dist/esm/adapters/mtpelerin/index.js +121 -0
  178. package/dist/esm/adapters/onramper/index.d.ts +6 -0
  179. package/dist/esm/adapters/onramper/index.js +31 -0
  180. package/dist/esm/assetId/assetId.d.ts +36 -0
  181. package/dist/esm/assetId/assetId.js +114 -0
  182. package/dist/esm/assetId/assetId.test.d.ts +1 -0
  183. package/dist/esm/assetId/assetId.test.js +322 -0
  184. package/dist/esm/chainId/chainId.d.ts +20 -0
  185. package/dist/esm/chainId/chainId.js +20 -0
  186. package/dist/esm/chainId/chainId.test.d.ts +1 -0
  187. package/dist/esm/chainId/chainId.test.js +88 -0
  188. package/dist/esm/constants.d.ts +135 -0
  189. package/dist/esm/constants.js +188 -0
  190. package/dist/esm/index.d.ts +7 -0
  191. package/dist/esm/index.js +7 -0
  192. package/dist/esm/typeGuards.d.ts +16 -0
  193. package/dist/esm/typeGuards.js +44 -0
  194. package/dist/esm/utils.d.ts +33 -0
  195. package/dist/esm/utils.js +26 -0
  196. package/dist/esm/utils.test.d.ts +1 -0
  197. package/dist/esm/utils.test.js +158 -0
  198. package/package.json +1 -1
@@ -0,0 +1,135 @@
1
+ import type { AssetId, AssetNamespace } from './assetId/assetId.js';
2
+ import type { ChainId, ChainNamespace, ChainReference } from './chainId/chainId.js';
3
+ export declare const btcAssetId: AssetId;
4
+ export declare const bchAssetId: AssetId;
5
+ export declare const dogeAssetId: AssetId;
6
+ export declare const ltcAssetId: AssetId;
7
+ export declare const ethAssetId: AssetId;
8
+ export declare const avalancheAssetId: AssetId;
9
+ export declare const optimismAssetId: AssetId;
10
+ export declare const bscAssetId: AssetId;
11
+ export declare const polygonAssetId: AssetId;
12
+ export declare const gnosisAssetId: AssetId;
13
+ export declare const arbitrumAssetId: AssetId;
14
+ export declare const arbitrumNovaAssetId: AssetId;
15
+ export declare const baseAssetId: AssetId;
16
+ export declare const monadAssetId: AssetId;
17
+ export declare const solAssetId: AssetId;
18
+ export declare const wrappedSolAssetId: AssetId;
19
+ export declare const tronAssetId: AssetId;
20
+ export declare const suiAssetId: AssetId;
21
+ export declare const uniV2EthFoxArbitrumAssetId: AssetId;
22
+ export declare const foxatarAssetId: AssetId;
23
+ export declare const foxyAssetId: AssetId;
24
+ export declare const foxOnGnosisAssetId: AssetId;
25
+ export declare const foxOnArbitrumOneAssetId: AssetId;
26
+ export declare const foxAssetId: AssetId;
27
+ export declare const foxOnOptimismAssetId: AssetId;
28
+ export declare const foxOnPolygonAssetId: AssetId;
29
+ export declare const usdtAssetId: AssetId;
30
+ export declare const usdcAssetId: AssetId;
31
+ export declare const usdcOnArbitrumOneAssetId: AssetId;
32
+ export declare const usdcOnSolanaAssetId: AssetId;
33
+ export declare const flipAssetId: AssetId;
34
+ export declare const foxWifHatAssetId: AssetId;
35
+ export declare const cosmosAssetId: AssetId;
36
+ export declare const thorchainAssetId: AssetId;
37
+ export declare const tcyAssetId: AssetId;
38
+ export declare const rujiAssetId: AssetId;
39
+ export declare const mayachainAssetId: AssetId;
40
+ export declare const binanceAssetId: AssetId;
41
+ export declare const btcChainId: ChainId;
42
+ export declare const bchChainId: ChainId;
43
+ export declare const dogeChainId: ChainId;
44
+ export declare const ltcChainId: ChainId;
45
+ export declare const ethChainId: ChainId;
46
+ export declare const avalancheChainId: ChainId;
47
+ export declare const optimismChainId: ChainId;
48
+ export declare const bscChainId: ChainId;
49
+ export declare const polygonChainId: ChainId;
50
+ export declare const gnosisChainId: ChainId;
51
+ export declare const arbitrumChainId: ChainId;
52
+ export declare const arbitrumNovaChainId: ChainId;
53
+ export declare const baseChainId: ChainId;
54
+ export declare const monadChainId: ChainId;
55
+ export declare const cosmosChainId: ChainId;
56
+ export declare const thorchainChainId: ChainId;
57
+ export declare const mayachainChainId: ChainId;
58
+ export declare const binanceChainId: ChainId;
59
+ export declare const solanaChainId: ChainId;
60
+ export declare const tronChainId: ChainId;
61
+ export declare const suiChainId: ChainId;
62
+ export declare const CHAIN_NAMESPACE: {
63
+ readonly Evm: "eip155";
64
+ readonly Utxo: "bip122";
65
+ readonly CosmosSdk: "cosmos";
66
+ readonly Solana: "solana";
67
+ readonly Tron: "tron";
68
+ readonly Sui: "sui";
69
+ };
70
+ type ValidChainMap = {
71
+ [k in ChainNamespace]: ChainReference[];
72
+ };
73
+ export declare const CHAIN_REFERENCE: {
74
+ readonly EthereumMainnet: "1";
75
+ readonly BitcoinMainnet: "000000000019d6689c085ae165831e93";
76
+ readonly BitcoinCashMainnet: "000000000000000000651ef99cb9fcbe";
77
+ readonly DogecoinMainnet: "00000000001a91e3dace36e2be3bf030";
78
+ readonly LitecoinMainnet: "12a765e31ffd4059bada1e25190f6e98";
79
+ readonly CosmosHubMainnet: "cosmoshub-4";
80
+ readonly ThorchainMainnet: "thorchain-1";
81
+ readonly MayachainMainnet: "mayachain-mainnet-v1";
82
+ readonly BinanceMainnet: "binance-chain-tigris";
83
+ readonly AvalancheCChain: "43114";
84
+ readonly OptimismMainnet: "10";
85
+ readonly BnbSmartChainMainnet: "56";
86
+ readonly PolygonMainnet: "137";
87
+ readonly GnosisMainnet: "100";
88
+ readonly ArbitrumMainnet: "42161";
89
+ readonly ArbitrumNovaMainnet: "42170";
90
+ readonly BaseMainnet: "8453";
91
+ readonly MonadMainnet: "143";
92
+ readonly SolanaMainnet: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
93
+ readonly TronMainnet: "0x2b6653dc";
94
+ readonly SuiMainnet: "35834a8a";
95
+ };
96
+ export declare const ASSET_NAMESPACE: {
97
+ readonly erc20: "erc20";
98
+ readonly erc721: "erc721";
99
+ readonly erc1155: "erc1155";
100
+ readonly slip44: "slip44";
101
+ readonly splToken: "token";
102
+ readonly trc20: "trc20";
103
+ readonly trc10: "trc10";
104
+ readonly suiCoin: "coin";
105
+ };
106
+ export declare const ASSET_REFERENCE: {
107
+ readonly Bitcoin: "0";
108
+ readonly BitcoinCash: "145";
109
+ readonly Litecoin: "2";
110
+ readonly Dogecoin: "3";
111
+ readonly Cosmos: "118";
112
+ readonly Thorchain: "931";
113
+ readonly Mayachain: "931";
114
+ readonly Binance: "714";
115
+ readonly Ethereum: "60";
116
+ readonly AvalancheC: "60";
117
+ readonly Optimism: "60";
118
+ readonly BnbSmartChain: "60";
119
+ readonly Polygon: "60";
120
+ readonly Gnosis: "60";
121
+ readonly Arbitrum: "60";
122
+ readonly ArbitrumNova: "60";
123
+ readonly Base: "60";
124
+ readonly Monad: "60";
125
+ readonly Solana: "501";
126
+ readonly Tron: "195";
127
+ readonly Sui: "784";
128
+ };
129
+ export declare const VALID_CHAIN_IDS: ValidChainMap;
130
+ type ValidAssetNamespace = {
131
+ [k in ChainNamespace]: AssetNamespace[];
132
+ };
133
+ export declare const VALID_ASSET_NAMESPACE: ValidAssetNamespace;
134
+ export declare const FEE_ASSET_IDS: AssetId[];
135
+ export {};
@@ -0,0 +1,188 @@
1
+ export const btcAssetId = 'bip122:000000000019d6689c085ae165831e93/slip44:0';
2
+ export const bchAssetId = 'bip122:000000000000000000651ef99cb9fcbe/slip44:145';
3
+ export const dogeAssetId = 'bip122:00000000001a91e3dace36e2be3bf030/slip44:3';
4
+ export const ltcAssetId = 'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2';
5
+ export const ethAssetId = 'eip155:1/slip44:60';
6
+ export const avalancheAssetId = 'eip155:43114/slip44:60';
7
+ export const optimismAssetId = 'eip155:10/slip44:60';
8
+ export const bscAssetId = 'eip155:56/slip44:60';
9
+ export const polygonAssetId = 'eip155:137/slip44:60';
10
+ export const gnosisAssetId = 'eip155:100/slip44:60';
11
+ export const arbitrumAssetId = 'eip155:42161/slip44:60';
12
+ export const arbitrumNovaAssetId = 'eip155:42170/slip44:60';
13
+ export const baseAssetId = 'eip155:8453/slip44:60';
14
+ export const monadAssetId = 'eip155:143/slip44:60';
15
+ export const solAssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501';
16
+ export const wrappedSolAssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:So11111111111111111111111111111111111111112';
17
+ export const tronAssetId = 'tron:0x2b6653dc/slip44:195';
18
+ export const suiAssetId = 'sui:35834a8a/slip44:784';
19
+ export const uniV2EthFoxArbitrumAssetId = 'eip155:42161/erc20:0x5f6ce0ca13b87bd738519545d3e018e70e339c24';
20
+ export const foxatarAssetId = 'eip155:137/erc721:0x2e727c425a11ce6b8819b3004db332c12d2af2a2';
21
+ export const foxyAssetId = 'eip155:1/erc20:0xdc49108ce5c57bc3408c3a5e95f3d864ec386ed3';
22
+ export const foxOnGnosisAssetId = 'eip155:100/erc20:0x21a42669643f45bc0e086b8fc2ed70c23d67509d';
23
+ export const foxOnArbitrumOneAssetId = 'eip155:42161/erc20:0xf929de51d91c77e42f5090069e0ad7a09e513c73';
24
+ export const foxAssetId = 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d';
25
+ export const foxOnOptimismAssetId = 'eip155:10/erc20:0xf1a0da3367bc7aa04f8d94ba57b862ff37ced174';
26
+ export const foxOnPolygonAssetId = 'eip155:137/erc20:0x65a05db8322701724c197af82c9cae41195b0aa8';
27
+ export const usdtAssetId = 'eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7';
28
+ export const usdcAssetId = 'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
29
+ export const usdcOnArbitrumOneAssetId = 'eip155:42161/erc20:0xaf88d065e77c8cc2239327c5edb3a432268e5831';
30
+ export const usdcOnSolanaAssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
31
+ export const flipAssetId = 'eip155:1/erc20:0x826180541412d574cf1336d22c0c0a287822678a';
32
+ export const foxWifHatAssetId = 'eip155:8453/erc20:0xd14acd73ade7f3c652f05365115f015e905a6bf4';
33
+ export const cosmosAssetId = 'cosmos:cosmoshub-4/slip44:118';
34
+ export const thorchainAssetId = 'cosmos:thorchain-1/slip44:931';
35
+ export const tcyAssetId = 'cosmos:thorchain-1/slip44:tcy';
36
+ export const rujiAssetId = 'cosmos:thorchain-1/slip44:ruji';
37
+ export const mayachainAssetId = 'cosmos:mayachain-mainnet-v1/slip44:931';
38
+ export const binanceAssetId = 'cosmos:binance-chain-tigris/slip44:714';
39
+ export const btcChainId = 'bip122:000000000019d6689c085ae165831e93';
40
+ export const bchChainId = 'bip122:000000000000000000651ef99cb9fcbe';
41
+ export const dogeChainId = 'bip122:00000000001a91e3dace36e2be3bf030';
42
+ export const ltcChainId = 'bip122:12a765e31ffd4059bada1e25190f6e98';
43
+ export const ethChainId = 'eip155:1';
44
+ export const avalancheChainId = 'eip155:43114';
45
+ export const optimismChainId = 'eip155:10';
46
+ export const bscChainId = 'eip155:56';
47
+ export const polygonChainId = 'eip155:137';
48
+ export const gnosisChainId = 'eip155:100';
49
+ export const arbitrumChainId = 'eip155:42161';
50
+ export const arbitrumNovaChainId = 'eip155:42170';
51
+ export const baseChainId = 'eip155:8453';
52
+ export const monadChainId = 'eip155:143';
53
+ export const cosmosChainId = 'cosmos:cosmoshub-4';
54
+ export const thorchainChainId = 'cosmos:thorchain-1';
55
+ export const mayachainChainId = 'cosmos:mayachain-mainnet-v1';
56
+ export const binanceChainId = 'cosmos:binance-chain-tigris';
57
+ export const solanaChainId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp';
58
+ export const tronChainId = 'tron:0x2b6653dc';
59
+ export const suiChainId = 'sui:35834a8a';
60
+ export const CHAIN_NAMESPACE = {
61
+ Evm: 'eip155',
62
+ Utxo: 'bip122',
63
+ CosmosSdk: 'cosmos',
64
+ Solana: 'solana',
65
+ Tron: 'tron',
66
+ Sui: 'sui',
67
+ };
68
+ export const CHAIN_REFERENCE = {
69
+ EthereumMainnet: '1',
70
+ BitcoinMainnet: '000000000019d6689c085ae165831e93',
71
+ BitcoinCashMainnet: '000000000000000000651ef99cb9fcbe',
72
+ DogecoinMainnet: '00000000001a91e3dace36e2be3bf030',
73
+ LitecoinMainnet: '12a765e31ffd4059bada1e25190f6e98',
74
+ CosmosHubMainnet: 'cosmoshub-4',
75
+ ThorchainMainnet: 'thorchain-1',
76
+ MayachainMainnet: 'mayachain-mainnet-v1',
77
+ BinanceMainnet: 'binance-chain-tigris',
78
+ AvalancheCChain: '43114',
79
+ OptimismMainnet: '10',
80
+ BnbSmartChainMainnet: '56',
81
+ PolygonMainnet: '137',
82
+ GnosisMainnet: '100',
83
+ ArbitrumMainnet: '42161',
84
+ ArbitrumNovaMainnet: '42170',
85
+ BaseMainnet: '8453',
86
+ MonadMainnet: '143',
87
+ SolanaMainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
88
+ TronMainnet: '0x2b6653dc',
89
+ SuiMainnet: '35834a8a', // First 8 chars of SUI mainnet genesis hash
90
+ };
91
+ export const ASSET_NAMESPACE = {
92
+ erc20: 'erc20',
93
+ erc721: 'erc721',
94
+ erc1155: 'erc1155',
95
+ slip44: 'slip44',
96
+ splToken: 'token',
97
+ trc20: 'trc20',
98
+ trc10: 'trc10',
99
+ suiCoin: 'coin',
100
+ };
101
+ export const ASSET_REFERENCE = {
102
+ Bitcoin: '0',
103
+ BitcoinCash: '145',
104
+ Litecoin: '2',
105
+ Dogecoin: '3',
106
+ Cosmos: '118',
107
+ Thorchain: '931',
108
+ Mayachain: '931',
109
+ Binance: '714',
110
+ Ethereum: '60',
111
+ AvalancheC: '60',
112
+ Optimism: '60',
113
+ BnbSmartChain: '60',
114
+ Polygon: '60',
115
+ Gnosis: '60',
116
+ Arbitrum: '60',
117
+ ArbitrumNova: '60',
118
+ Base: '60',
119
+ Monad: '60',
120
+ Solana: '501',
121
+ Tron: '195',
122
+ Sui: '784',
123
+ };
124
+ export const VALID_CHAIN_IDS = Object.freeze({
125
+ [CHAIN_NAMESPACE.Utxo]: [
126
+ CHAIN_REFERENCE.BitcoinMainnet,
127
+ CHAIN_REFERENCE.BitcoinCashMainnet,
128
+ CHAIN_REFERENCE.DogecoinMainnet,
129
+ CHAIN_REFERENCE.LitecoinMainnet,
130
+ ],
131
+ [CHAIN_NAMESPACE.Evm]: [
132
+ CHAIN_REFERENCE.EthereumMainnet,
133
+ CHAIN_REFERENCE.AvalancheCChain,
134
+ CHAIN_REFERENCE.OptimismMainnet,
135
+ CHAIN_REFERENCE.BnbSmartChainMainnet,
136
+ CHAIN_REFERENCE.PolygonMainnet,
137
+ CHAIN_REFERENCE.GnosisMainnet,
138
+ CHAIN_REFERENCE.ArbitrumMainnet,
139
+ CHAIN_REFERENCE.ArbitrumNovaMainnet,
140
+ CHAIN_REFERENCE.BaseMainnet,
141
+ CHAIN_REFERENCE.MonadMainnet,
142
+ ],
143
+ [CHAIN_NAMESPACE.CosmosSdk]: [
144
+ CHAIN_REFERENCE.CosmosHubMainnet,
145
+ CHAIN_REFERENCE.ThorchainMainnet,
146
+ CHAIN_REFERENCE.MayachainMainnet,
147
+ CHAIN_REFERENCE.BinanceMainnet,
148
+ ],
149
+ [CHAIN_NAMESPACE.Solana]: [CHAIN_REFERENCE.SolanaMainnet],
150
+ [CHAIN_NAMESPACE.Tron]: [CHAIN_REFERENCE.TronMainnet],
151
+ [CHAIN_NAMESPACE.Sui]: [CHAIN_REFERENCE.SuiMainnet],
152
+ });
153
+ export const VALID_ASSET_NAMESPACE = Object.freeze({
154
+ [CHAIN_NAMESPACE.Utxo]: [ASSET_NAMESPACE.slip44],
155
+ [CHAIN_NAMESPACE.Evm]: [
156
+ ASSET_NAMESPACE.slip44,
157
+ ASSET_NAMESPACE.erc20,
158
+ ASSET_NAMESPACE.erc721,
159
+ ASSET_NAMESPACE.erc1155,
160
+ ],
161
+ [CHAIN_NAMESPACE.CosmosSdk]: [ASSET_NAMESPACE.slip44],
162
+ [CHAIN_NAMESPACE.Solana]: [ASSET_NAMESPACE.splToken, ASSET_NAMESPACE.slip44],
163
+ [CHAIN_NAMESPACE.Tron]: [ASSET_NAMESPACE.slip44, ASSET_NAMESPACE.trc20],
164
+ [CHAIN_NAMESPACE.Sui]: [ASSET_NAMESPACE.slip44, ASSET_NAMESPACE.suiCoin],
165
+ });
166
+ // We should prob change this once we add more chains
167
+ export const FEE_ASSET_IDS = [
168
+ ethAssetId,
169
+ btcAssetId,
170
+ bchAssetId,
171
+ cosmosAssetId,
172
+ thorchainAssetId,
173
+ mayachainAssetId,
174
+ dogeAssetId,
175
+ ltcAssetId,
176
+ avalancheAssetId,
177
+ optimismAssetId,
178
+ bscAssetId,
179
+ polygonAssetId,
180
+ gnosisAssetId,
181
+ arbitrumAssetId,
182
+ arbitrumNovaAssetId,
183
+ baseAssetId,
184
+ monadAssetId,
185
+ solAssetId,
186
+ tronAssetId,
187
+ suiAssetId,
188
+ ];
@@ -0,0 +1,7 @@
1
+ export * as adapters from './adapters/index.js';
2
+ export * from './chainId/chainId.js';
3
+ export * from './accountId/accountId.js';
4
+ export * from './assetId/assetId.js';
5
+ export * from './utils.js';
6
+ export * from './constants.js';
7
+ export * from './typeGuards.js';
@@ -0,0 +1,7 @@
1
+ export * as adapters from './adapters/index.js';
2
+ export * from './chainId/chainId.js';
3
+ export * from './accountId/accountId.js';
4
+ export * from './assetId/assetId.js';
5
+ export * from './utils.js';
6
+ export * from './constants.js';
7
+ export * from './typeGuards.js';
@@ -0,0 +1,16 @@
1
+ import type { AssetId, AssetNamespace, AssetReference } from './assetId/assetId.js';
2
+ import type { ChainId, ChainNamespace, ChainReference } from './chainId/chainId.js';
3
+ export declare const isChainNamespace: (maybeChainNamespace: ChainNamespace | string) => maybeChainNamespace is ChainNamespace;
4
+ export declare const isChainReference: (maybeChainReference: ChainReference | string) => maybeChainReference is ChainReference;
5
+ export declare const isAssetNamespace: (maybeAssetNamespace: AssetNamespace | string) => maybeAssetNamespace is AssetNamespace;
6
+ export declare const isAssetReference: (maybeAssetReference: AssetReference | string) => maybeAssetReference is AssetReference;
7
+ export declare const isAssetId: (maybeAssetId: AssetId | string) => maybeAssetId is AssetId;
8
+ export declare const isAssetIdParts: (maybeChainNamespace: string, maybeChainReference: string, maybeAssetNamespace: string) => boolean;
9
+ export declare const isChainId: (maybeChainId: ChainId | string) => maybeChainId is ChainId;
10
+ export declare const isChainIdParts: (chainNamespace: string, chainReference: string) => boolean;
11
+ export declare const assertIsChainId: (value: ChainId | string | undefined) => asserts value is ChainId;
12
+ export declare const assertIsChainNamespace: (value: ChainNamespace | string | undefined) => asserts value is ChainNamespace;
13
+ export declare const assertIsChainReference: (value: ChainReference | string | undefined) => asserts value is ChainReference;
14
+ export declare const assertIsAssetNamespace: (value: AssetNamespace | string | undefined) => asserts value is AssetNamespace;
15
+ export declare const assertIsAssetReference: (value: AssetReference | string | undefined) => asserts value is AssetReference;
16
+ export declare const assertValidChainPartsPair: (chainNamespace: ChainNamespace, chainReference: ChainReference) => void;
@@ -0,0 +1,44 @@
1
+ import { fromChainId } from './chainId/chainId.js';
2
+ import { ASSET_NAMESPACE, ASSET_REFERENCE, CHAIN_NAMESPACE, CHAIN_REFERENCE, VALID_CHAIN_IDS, } from './constants.js';
3
+ import { isValidChainPartsPair } from './utils.js';
4
+ export const isChainNamespace = (maybeChainNamespace) => Object.values(CHAIN_NAMESPACE).includes(maybeChainNamespace);
5
+ export const isChainReference = (maybeChainReference) => Object.values(CHAIN_REFERENCE).includes(maybeChainReference);
6
+ export const isAssetNamespace = (maybeAssetNamespace) => Object.values(ASSET_NAMESPACE).includes(maybeAssetNamespace);
7
+ export const isAssetReference = (maybeAssetReference) => Object.values(ASSET_REFERENCE).includes(maybeAssetReference);
8
+ // NOTE: perf critical - benchmark any changes
9
+ export const isAssetId = (maybeAssetId) => {
10
+ const slashIdx = maybeAssetId.indexOf('/');
11
+ const chainId = maybeAssetId.substring(0, slashIdx);
12
+ const assetParts = maybeAssetId.substring(slashIdx + 1);
13
+ const { chainNamespace, chainReference } = fromChainId(chainId);
14
+ const idx = assetParts.indexOf(':');
15
+ const assetNamespace = assetParts.substring(0, idx);
16
+ return isAssetIdParts(chainNamespace, chainReference, assetNamespace);
17
+ };
18
+ // NOTE: perf critical - benchmark any changes
19
+ export const isAssetIdParts = (maybeChainNamespace, maybeChainReference, maybeAssetNamespace) => {
20
+ return (!!VALID_CHAIN_IDS[maybeChainNamespace]?.includes(maybeChainReference) && isAssetNamespace(maybeAssetNamespace));
21
+ };
22
+ // NOTE: perf critical - benchmark any changes
23
+ export const isChainId = (maybeChainId) => {
24
+ const { chainNamespace, chainReference } = fromChainId(maybeChainId);
25
+ return !!VALID_CHAIN_IDS[chainNamespace]?.includes(chainReference);
26
+ };
27
+ export const isChainIdParts = (chainNamespace, chainReference) => {
28
+ return !!VALID_CHAIN_IDS[chainNamespace]?.includes(chainReference);
29
+ };
30
+ const getTypeGuardAssertion = (typeGuard, message) => {
31
+ return (value) => {
32
+ if ((value && !typeGuard(value)) || !value)
33
+ throw new Error(`${message}: ${value}`);
34
+ };
35
+ };
36
+ export const assertIsChainId = getTypeGuardAssertion(isChainId, 'assertIsChainId: unsupported ChainId');
37
+ export const assertIsChainNamespace = getTypeGuardAssertion(isChainNamespace, 'assertIsChainNamespace: unsupported ChainNamespace');
38
+ export const assertIsChainReference = getTypeGuardAssertion(isChainReference, 'assertIsChainReference: unsupported ChainReference');
39
+ export const assertIsAssetNamespace = getTypeGuardAssertion(isAssetNamespace, 'assertIsAssetNamespace: unsupported AssetNamespace');
40
+ export const assertIsAssetReference = getTypeGuardAssertion(isAssetReference, 'assertIsAssetReference: unsupported AssetReference');
41
+ export const assertValidChainPartsPair = (chainNamespace, chainReference) => {
42
+ if (!isValidChainPartsPair(chainNamespace, chainReference))
43
+ throw new Error(`toAssetId: Chain Reference ${chainReference} not supported for Chain Namespace ${chainNamespace}`);
44
+ };
@@ -0,0 +1,33 @@
1
+ import type { AccountId } from './accountId/accountId.js';
2
+ import type { AssetId } from './assetId/assetId.js';
3
+ import type { ChainId, ChainNamespace, ChainReference } from './chainId/chainId.js';
4
+ export declare const accountIdToChainId: (accountId: AccountId) => ChainId;
5
+ export declare const accountIdToSpecifier: (accountId: AccountId) => string;
6
+ export declare const isValidChainPartsPair: (chainNamespace: ChainNamespace, chainReference: ChainReference) => boolean;
7
+ export declare const generateAssetIdFromCosmosSdkDenom: (denom: string) => AssetId;
8
+ export declare const bitcoinAssetMap: {
9
+ [x: string]: string;
10
+ };
11
+ export declare const bitcoinCashAssetMap: {
12
+ [x: string]: string;
13
+ };
14
+ export declare const dogecoinAssetMap: {
15
+ [x: string]: string;
16
+ };
17
+ export declare const litecoinAssetMap: {
18
+ [x: string]: string;
19
+ };
20
+ export declare const cosmosAssetMap: {
21
+ [x: string]: string;
22
+ };
23
+ export declare const thorchainAssetMap: {
24
+ [x: string]: string;
25
+ };
26
+ export declare const mayachainAssetMap: {
27
+ [x: string]: string;
28
+ };
29
+ interface Flavoring<FlavorT> {
30
+ _type?: FlavorT;
31
+ }
32
+ export type Nominal<T, FlavorT> = T & Flavoring<FlavorT>;
33
+ export {};
@@ -0,0 +1,26 @@
1
+ import { fromAccountId } from './accountId/accountId.js';
2
+ import * as constants from './constants.js';
3
+ import { rujiAssetId, tcyAssetId } from './constants.js';
4
+ const mayaTokenAssetId = 'cosmos:mayachain-mainnet-v1/slip44:maya';
5
+ export const accountIdToChainId = (accountId) => fromAccountId(accountId).chainId;
6
+ export const accountIdToSpecifier = (accountId) => fromAccountId(accountId).account;
7
+ export const isValidChainPartsPair = (chainNamespace, chainReference) => constants.VALID_CHAIN_IDS[chainNamespace]?.includes(chainReference) || false;
8
+ export const generateAssetIdFromCosmosSdkDenom = (denom) => {
9
+ switch (denom) {
10
+ case 'tcy':
11
+ return tcyAssetId;
12
+ case 'x/ruji':
13
+ return rujiAssetId;
14
+ case 'maya':
15
+ return mayaTokenAssetId;
16
+ default:
17
+ throw new Error(`Unsupported denom: ${denom}`);
18
+ }
19
+ };
20
+ export const bitcoinAssetMap = { [constants.btcAssetId]: 'bitcoin' };
21
+ export const bitcoinCashAssetMap = { [constants.bchAssetId]: 'bitcoin-cash' };
22
+ export const dogecoinAssetMap = { [constants.dogeAssetId]: 'dogecoin' };
23
+ export const litecoinAssetMap = { [constants.ltcAssetId]: 'litecoin' };
24
+ export const cosmosAssetMap = { [constants.cosmosAssetId]: 'cosmos' };
25
+ export const thorchainAssetMap = { [constants.thorchainAssetId]: 'thorchain' };
26
+ export const mayachainAssetMap = { [constants.mayachainAssetId]: 'cacao' };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,158 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { ASSET_NAMESPACE, ASSET_REFERENCE, btcAssetId, btcChainId, CHAIN_NAMESPACE, CHAIN_REFERENCE, cosmosAssetId, cosmosChainId, ethAssetId, ethChainId, rujiAssetId, tcyAssetId, } from './constants.js';
3
+ import { assertIsAssetNamespace, assertIsAssetReference, assertIsChainId, assertIsChainNamespace, assertIsChainReference, assertValidChainPartsPair, isAssetId, isAssetNamespace, isAssetReference, isChainId, isChainNamespace, isChainReference, } from './typeGuards.js';
4
+ import { accountIdToChainId, accountIdToSpecifier, generateAssetIdFromCosmosSdkDenom, isValidChainPartsPair, } from './utils.js';
5
+ describe('accountIdToChainId', () => {
6
+ it('can get eth chainId from accountId', () => {
7
+ const accountId = 'eip155:1:0xdef1cafe';
8
+ const chainId = accountIdToChainId(accountId);
9
+ expect(chainId).toEqual(ethChainId);
10
+ });
11
+ it('can get btc chainId from accountId', () => {
12
+ const accountId = 'bip122:000000000019d6689c085ae165831e93:xpubfoobarbaz';
13
+ const chainId = accountIdToChainId(accountId);
14
+ expect(chainId).toEqual(btcChainId);
15
+ });
16
+ });
17
+ describe('accountIdToSpecifier', () => {
18
+ it('can get eth address from accountId', () => {
19
+ const address = '0xdef1cafe';
20
+ const accountId = 'eip155:1:0xdef1cafe';
21
+ const result = accountIdToSpecifier(accountId);
22
+ expect(result).toEqual(address);
23
+ });
24
+ it('can get xpub from accountId', () => {
25
+ const xpub = 'xpubfoobarbaz';
26
+ const accountId = 'bip122:000000000019d6689c085ae165831e93:xpubfoobarbaz';
27
+ const result = accountIdToSpecifier(accountId);
28
+ expect(result).toEqual(xpub);
29
+ });
30
+ });
31
+ describe('isValidChainPartsPair', () => {
32
+ it('correctly validates pairs', () => {
33
+ expect(isValidChainPartsPair(CHAIN_NAMESPACE.Utxo, CHAIN_REFERENCE.BitcoinMainnet)).toEqual(true);
34
+ expect(isValidChainPartsPair(CHAIN_NAMESPACE.Evm, CHAIN_REFERENCE.BitcoinMainnet)).toEqual(false);
35
+ expect(isValidChainPartsPair('invalid', CHAIN_REFERENCE.BitcoinMainnet)).toEqual(false);
36
+ expect(isValidChainPartsPair(CHAIN_NAMESPACE.Evm, 'invalid')).toEqual(false);
37
+ });
38
+ });
39
+ describe('type guard', () => {
40
+ describe('isChainNamespace', () => {
41
+ it('correctly determines type', () => {
42
+ expect(isChainNamespace(CHAIN_NAMESPACE.Utxo)).toEqual(true);
43
+ expect(isChainNamespace(CHAIN_NAMESPACE.Evm)).toEqual(true);
44
+ expect(isChainNamespace('invalid')).toEqual(false);
45
+ expect(isChainNamespace('')).toEqual(false);
46
+ });
47
+ });
48
+ describe('isChainReference', () => {
49
+ it('correctly determines type', () => {
50
+ expect(isChainReference(CHAIN_REFERENCE.EthereumMainnet)).toEqual(true);
51
+ expect(isChainReference(CHAIN_REFERENCE.BitcoinMainnet)).toEqual(true);
52
+ expect(isChainReference('invalid')).toEqual(false);
53
+ expect(isChainReference('')).toEqual(false);
54
+ });
55
+ });
56
+ describe('isValidChainId', () => {
57
+ it('correctly determines type', () => {
58
+ expect(isChainId(ethChainId)).toEqual(true);
59
+ expect(isChainId(btcChainId)).toEqual(true);
60
+ expect(isChainId(cosmosChainId)).toEqual(true);
61
+ expect(isChainId('invalid')).toEqual(false);
62
+ expect(isChainId('')).toEqual(false);
63
+ });
64
+ });
65
+ describe('isAssetNamespace', () => {
66
+ it('correctly determines type', () => {
67
+ expect(isAssetNamespace(ASSET_NAMESPACE.erc20)).toEqual(true);
68
+ expect(isAssetNamespace(ASSET_NAMESPACE.erc721)).toEqual(true);
69
+ expect(isAssetNamespace('invalid')).toEqual(false);
70
+ expect(isAssetNamespace('')).toEqual(false);
71
+ });
72
+ });
73
+ describe('isAssetReference', () => {
74
+ it('correctly determines type', () => {
75
+ expect(isAssetReference(ASSET_REFERENCE.Bitcoin)).toEqual(true);
76
+ expect(isAssetReference(ASSET_REFERENCE.Ethereum)).toEqual(true);
77
+ expect(isAssetReference('invalid')).toEqual(false);
78
+ expect(isAssetReference('')).toEqual(false);
79
+ });
80
+ });
81
+ describe('isAssetId', () => {
82
+ it('correctly determines type', () => {
83
+ expect(isAssetId(btcAssetId)).toEqual(true);
84
+ expect(isAssetId(ethAssetId)).toEqual(true);
85
+ expect(isAssetId(cosmosAssetId)).toEqual(true);
86
+ expect(isAssetId('invalid')).toEqual(false);
87
+ expect(isAssetId('')).toEqual(false);
88
+ });
89
+ });
90
+ });
91
+ describe('type guard assertion', () => {
92
+ describe('assertIsChainId', () => {
93
+ it('correctly asserts type', () => {
94
+ expect(() => assertIsChainId(ethChainId)).not.toThrow();
95
+ expect(() => assertIsChainId(btcChainId)).not.toThrow();
96
+ expect(() => assertIsChainId(cosmosChainId)).not.toThrow();
97
+ expect(() => assertIsChainId('invalid')).toThrow();
98
+ expect(() => assertIsChainId('')).toThrow();
99
+ });
100
+ });
101
+ describe('assertIsChainNamespace', () => {
102
+ it('correctly asserts type', () => {
103
+ expect(() => assertIsChainNamespace(CHAIN_NAMESPACE.Utxo)).not.toThrow();
104
+ expect(() => assertIsChainNamespace(CHAIN_NAMESPACE.Evm)).not.toThrow();
105
+ expect(() => assertIsChainNamespace('invalid')).toThrow();
106
+ expect(() => assertIsChainNamespace('')).toThrow();
107
+ });
108
+ });
109
+ describe('assertIsChainReference', () => {
110
+ it('correctly asserts type', () => {
111
+ expect(() => assertIsChainReference(CHAIN_REFERENCE.EthereumMainnet)).not.toThrow();
112
+ expect(() => assertIsChainReference(CHAIN_REFERENCE.BitcoinMainnet)).not.toThrow();
113
+ expect(() => assertIsChainReference('invalid')).toThrow();
114
+ expect(() => assertIsChainReference('')).toThrow();
115
+ });
116
+ });
117
+ describe('assertIsAssetNamespace', () => {
118
+ it('correctly asserts type', () => {
119
+ expect(() => assertIsAssetNamespace(ASSET_NAMESPACE.erc20)).not.toThrow();
120
+ expect(() => assertIsAssetNamespace(ASSET_NAMESPACE.erc721)).not.toThrow();
121
+ expect(() => assertIsAssetNamespace('invalid')).toThrow();
122
+ expect(() => assertIsAssetNamespace('')).toThrow();
123
+ });
124
+ });
125
+ describe('assertIsAssetReference', () => {
126
+ it('correctly asserts type', () => {
127
+ expect(() => assertIsAssetReference(ASSET_REFERENCE.Bitcoin)).not.toThrow();
128
+ expect(() => assertIsAssetReference(ASSET_REFERENCE.Ethereum)).not.toThrow();
129
+ expect(() => assertIsAssetReference('invalid')).toThrow();
130
+ expect(() => assertIsAssetReference('')).toThrow();
131
+ });
132
+ });
133
+ describe('assertValidChainPartsPair', () => {
134
+ it('correctly asserts type', () => {
135
+ expect(() => assertValidChainPartsPair(CHAIN_NAMESPACE.Utxo, CHAIN_REFERENCE.BitcoinMainnet)).not.toThrow();
136
+ expect(() => assertValidChainPartsPair(CHAIN_NAMESPACE.Utxo, CHAIN_REFERENCE.EthereumMainnet)).toThrow();
137
+ expect(() => assertValidChainPartsPair('invalid', CHAIN_REFERENCE.BitcoinMainnet)).toThrow();
138
+ expect(() => assertValidChainPartsPair(CHAIN_NAMESPACE.Evm, 'invalid')).toThrow();
139
+ });
140
+ });
141
+ describe('generateAssetIdFromCosmosDenom', () => {
142
+ it('correctly generates RUJI AssetId', () => {
143
+ const result = generateAssetIdFromCosmosSdkDenom('x/ruji');
144
+ expect(result).toEqual(rujiAssetId);
145
+ });
146
+ it('correctly generates TCY AssetId', () => {
147
+ const result = generateAssetIdFromCosmosSdkDenom('tcy');
148
+ expect(result).toEqual(tcyAssetId);
149
+ });
150
+ it('correctly generates MAYA AssetId', () => {
151
+ const result = generateAssetIdFromCosmosSdkDenom('maya');
152
+ expect(result).toEqual('cosmos:mayachain-mainnet-v1/slip44:maya');
153
+ });
154
+ it('throws on unsupported denom', () => {
155
+ expect(() => generateAssetIdFromCosmosSdkDenom('unsupported')).toThrow();
156
+ });
157
+ });
158
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshiftoss/caip",
3
- "version": "8.16.4",
3
+ "version": "8.16.5",
4
4
  "description": "CAIP Implementation",
5
5
  "repository": "https://github.com/shapeshift/web",
6
6
  "license": "MIT",