@shapeshiftoss/caip 8.16.0 → 8.16.2

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 (207) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/accountId/accountId.js +44 -0
  3. package/dist/cjs/accountId/accountId.test.js +109 -0
  4. package/dist/{adapters → cjs/adapters}/banxa/index.d.ts +1 -0
  5. package/dist/cjs/adapters/banxa/index.js +153 -0
  6. package/dist/cjs/adapters/coinbase/generate.js +9 -0
  7. package/dist/cjs/adapters/coinbase/generated/index.js +8 -0
  8. package/dist/cjs/adapters/coinbase/index.js +16 -0
  9. package/dist/cjs/adapters/coinbase/utils.js +55 -0
  10. package/dist/cjs/adapters/coincap/generate.js +10 -0
  11. package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  12. package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  13. package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  14. package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  15. package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  16. package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  17. package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  18. package/dist/{adapters → cjs/adapters}/coincap/generated/index.d.ts +11 -4
  19. package/dist/cjs/adapters/coincap/generated/index.js +34 -0
  20. package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  21. package/dist/{adapters → cjs/adapters}/coincap/index.d.ts +1 -1
  22. package/dist/cjs/adapters/coincap/index.js +44 -0
  23. package/dist/cjs/adapters/coincap/index.test.js +90 -0
  24. package/dist/{adapters → cjs/adapters}/coincap/utils.d.ts +3 -1
  25. package/dist/cjs/adapters/coincap/utils.js +146 -0
  26. package/dist/cjs/adapters/coincap/utils.test.js +173 -0
  27. package/dist/cjs/adapters/coingecko/generate.js +10 -0
  28. package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  29. package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  30. package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  31. package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  32. package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  33. package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  34. package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  35. package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  36. package/dist/cjs/adapters/coingecko/generated/index.js +40 -0
  37. package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  38. package/dist/cjs/adapters/coingecko/index.js +163 -0
  39. package/dist/cjs/adapters/coingecko/index.test.js +276 -0
  40. package/dist/cjs/adapters/coingecko/utils.js +190 -0
  41. package/dist/cjs/adapters/coingecko/utils.test.js +193 -0
  42. package/dist/cjs/adapters/index.js +22 -0
  43. package/dist/cjs/adapters/mtpelerin/index.js +127 -0
  44. package/dist/{adapters → cjs/adapters}/onramper/index.d.ts +1 -2
  45. package/dist/cjs/adapters/onramper/index.js +39 -0
  46. package/dist/cjs/assetId/assetId.js +126 -0
  47. package/dist/cjs/assetId/assetId.test.js +324 -0
  48. package/dist/cjs/chainId/chainId.js +25 -0
  49. package/dist/cjs/chainId/chainId.test.js +90 -0
  50. package/dist/{constants.d.ts → cjs/constants.d.ts} +1 -1
  51. package/dist/cjs/constants.js +173 -0
  52. package/dist/cjs/index.js +36 -0
  53. package/dist/cjs/package.json +1 -0
  54. package/dist/cjs/typeGuards.js +56 -0
  55. package/dist/{utils.d.ts → cjs/utils.d.ts} +1 -1
  56. package/dist/cjs/utils.js +56 -0
  57. package/dist/cjs/utils.test.js +160 -0
  58. package/dist/esm/.tsbuildinfo +1 -0
  59. package/dist/esm/accountId/accountId.d.ts +29 -0
  60. package/dist/{accountId → esm/accountId}/accountId.js +3 -3
  61. package/dist/esm/accountId/accountId.test.d.ts +1 -0
  62. package/dist/{accountId → esm/accountId}/accountId.test.js +3 -3
  63. package/dist/esm/adapters/banxa/index.d.ts +15 -0
  64. package/dist/{adapters → esm/adapters}/banxa/index.js +36 -2
  65. package/dist/esm/adapters/coinbase/generate.d.ts +1 -0
  66. package/dist/{adapters → esm/adapters}/coinbase/generate.js +1 -1
  67. package/dist/esm/adapters/coinbase/generated/adapter.json +153 -0
  68. package/dist/esm/adapters/coinbase/generated/index.js +2 -0
  69. package/dist/esm/adapters/coinbase/index.d.ts +3 -0
  70. package/dist/{adapters → esm/adapters}/coinbase/index.js +1 -1
  71. package/dist/esm/adapters/coinbase/utils.d.ts +12 -0
  72. package/dist/esm/adapters/coincap/generate.d.ts +1 -0
  73. package/dist/{adapters → esm/adapters}/coincap/generate.js +2 -2
  74. package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  75. package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  76. package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  77. package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  78. package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  79. package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  80. package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  81. package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  82. package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  83. package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  84. package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  85. package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  86. package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  87. package/dist/esm/adapters/coincap/generated/index.d.ts +15 -0
  88. package/dist/{adapters → esm/adapters}/coincap/generated/index.js +11 -4
  89. package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  90. package/dist/esm/adapters/coincap/index.d.ts +4 -0
  91. package/dist/{adapters → esm/adapters}/coincap/index.js +4 -4
  92. package/dist/esm/adapters/coincap/index.test.d.ts +1 -0
  93. package/dist/{adapters → esm/adapters}/coincap/index.test.js +9 -13
  94. package/dist/esm/adapters/coincap/utils.d.ts +24 -0
  95. package/dist/esm/adapters/coincap/utils.js +135 -0
  96. package/dist/esm/adapters/coincap/utils.test.d.ts +4 -0
  97. package/dist/{adapters → esm/adapters}/coincap/utils.test.js +7 -2
  98. package/dist/esm/adapters/coingecko/generate.d.ts +1 -0
  99. package/dist/{adapters → esm/adapters}/coingecko/generate.js +2 -2
  100. package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  101. package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  102. package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  103. package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  104. package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  105. package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  106. package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  107. package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  108. package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  109. package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  110. package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  111. package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  112. package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  113. package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  114. package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  115. package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  116. package/dist/esm/adapters/coingecko/generated/index.js +18 -0
  117. package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  118. package/dist/esm/adapters/coingecko/index.d.ts +26 -0
  119. package/dist/{adapters → esm/adapters}/coingecko/index.js +5 -5
  120. package/dist/esm/adapters/coingecko/index.test.d.ts +1 -0
  121. package/dist/{adapters → esm/adapters}/coingecko/index.test.js +3 -3
  122. package/dist/esm/adapters/coingecko/utils.d.ts +11 -0
  123. package/dist/{adapters → esm/adapters}/coingecko/utils.js +4 -4
  124. package/dist/esm/adapters/coingecko/utils.test.d.ts +1 -0
  125. package/dist/{adapters → esm/adapters}/coingecko/utils.test.js +2 -2
  126. package/dist/esm/adapters/index.d.ts +6 -0
  127. package/dist/esm/adapters/index.js +6 -0
  128. package/dist/esm/adapters/mtpelerin/index.d.ts +10 -0
  129. package/dist/{adapters → esm/adapters}/mtpelerin/index.js +24 -39
  130. package/dist/esm/adapters/onramper/index.d.ts +6 -0
  131. package/dist/esm/adapters/onramper/index.js +31 -0
  132. package/dist/esm/assetId/assetId.d.ts +36 -0
  133. package/dist/{assetId → esm/assetId}/assetId.js +3 -3
  134. package/dist/esm/assetId/assetId.test.d.ts +1 -0
  135. package/dist/{assetId → esm/assetId}/assetId.test.js +3 -17
  136. package/dist/esm/chainId/chainId.d.ts +20 -0
  137. package/dist/{chainId → esm/chainId}/chainId.js +1 -1
  138. package/dist/esm/chainId/chainId.test.d.ts +1 -0
  139. package/dist/{chainId → esm/chainId}/chainId.test.js +3 -3
  140. package/dist/esm/constants.d.ts +121 -0
  141. package/dist/{constants.js → esm/constants.js} +2 -2
  142. package/dist/esm/index.d.ts +7 -0
  143. package/dist/esm/index.js +7 -0
  144. package/dist/esm/typeGuards.d.ts +16 -0
  145. package/dist/{typeGuards.js → esm/typeGuards.js} +3 -3
  146. package/dist/esm/utils.d.ts +33 -0
  147. package/dist/{utils.js → esm/utils.js} +13 -16
  148. package/dist/esm/utils.test.d.ts +1 -0
  149. package/dist/{utils.test.js → esm/utils.test.js} +17 -21
  150. package/package.json +19 -7
  151. package/CHANGELOG.md +0 -726
  152. package/dist/adapters/coincap/generated/eip155_1/adapter.json +0 -1
  153. package/dist/adapters/coincap/utils.js +0 -40
  154. package/dist/adapters/coingecko/generated/eip155_1/adapter.json +0 -1
  155. package/dist/adapters/coingecko/generated/eip155_10/adapter.json +0 -1
  156. package/dist/adapters/coingecko/generated/eip155_100/adapter.json +0 -1
  157. package/dist/adapters/coingecko/generated/eip155_137/adapter.json +0 -1
  158. package/dist/adapters/coingecko/generated/eip155_42161/adapter.json +0 -1
  159. package/dist/adapters/coingecko/generated/eip155_43114/adapter.json +0 -1
  160. package/dist/adapters/coingecko/generated/eip155_56/adapter.json +0 -1
  161. package/dist/adapters/coingecko/generated/eip155_8453/adapter.json +0 -1
  162. package/dist/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
  163. package/dist/adapters/index.js +0 -6
  164. package/dist/adapters/onramper/index.js +0 -1496
  165. package/dist/index.js +0 -7
  166. /package/dist/{accountId → cjs/accountId}/accountId.d.ts +0 -0
  167. /package/dist/{accountId → cjs/accountId}/accountId.test.d.ts +0 -0
  168. /package/dist/{adapters → cjs/adapters}/coinbase/generate.d.ts +0 -0
  169. /package/dist/{adapters → cjs/adapters}/coinbase/generated/adapter.json +0 -0
  170. /package/dist/{adapters → cjs/adapters}/coinbase/generated/index.d.ts +0 -0
  171. /package/dist/{adapters → cjs/adapters}/coinbase/index.d.ts +0 -0
  172. /package/dist/{adapters → cjs/adapters}/coinbase/utils.d.ts +0 -0
  173. /package/dist/{adapters → cjs/adapters}/coincap/generate.d.ts +0 -0
  174. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  175. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  176. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  177. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  178. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  179. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_thorchain-1/adapter.json +0 -0
  180. /package/dist/{adapters → cjs/adapters}/coincap/index.test.d.ts +0 -0
  181. /package/dist/{adapters → cjs/adapters}/coincap/utils.test.d.ts +0 -0
  182. /package/dist/{adapters → cjs/adapters}/coingecko/generate.d.ts +0 -0
  183. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  184. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  185. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  186. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  187. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  188. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +0 -0
  189. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_thorchain-1/adapter.json +0 -0
  190. /package/dist/{adapters → cjs/adapters}/coingecko/generated/eip155_42170/adapter.json +0 -0
  191. /package/dist/{adapters → cjs/adapters}/coingecko/generated/index.d.ts +0 -0
  192. /package/dist/{adapters → cjs/adapters}/coingecko/index.d.ts +0 -0
  193. /package/dist/{adapters → cjs/adapters}/coingecko/index.test.d.ts +0 -0
  194. /package/dist/{adapters → cjs/adapters}/coingecko/utils.d.ts +0 -0
  195. /package/dist/{adapters → cjs/adapters}/coingecko/utils.test.d.ts +0 -0
  196. /package/dist/{adapters → cjs/adapters}/index.d.ts +0 -0
  197. /package/dist/{adapters → cjs/adapters}/mtpelerin/index.d.ts +0 -0
  198. /package/dist/{assetId → cjs/assetId}/assetId.d.ts +0 -0
  199. /package/dist/{assetId → cjs/assetId}/assetId.test.d.ts +0 -0
  200. /package/dist/{chainId → cjs/chainId}/chainId.d.ts +0 -0
  201. /package/dist/{chainId → cjs/chainId}/chainId.test.d.ts +0 -0
  202. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  203. /package/dist/{typeGuards.d.ts → cjs/typeGuards.d.ts} +0 -0
  204. /package/dist/{utils.test.d.ts → cjs/utils.test.d.ts} +0 -0
  205. /package/dist/{adapters/coinbase/generated/index.js → esm/adapters/coinbase/generated/index.d.ts} +0 -0
  206. /package/dist/{adapters → esm/adapters}/coinbase/utils.js +0 -0
  207. /package/dist/{adapters/coingecko/generated/index.js → esm/adapters/coingecko/generated/index.d.ts} +0 -0
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lodash_1 = require("lodash");
4
+ const vitest_1 = require("vitest");
5
+ const chainId_1 = require("../chainId/chainId");
6
+ const constants_1 = require("../constants");
7
+ const assetId_1 = require("./assetId");
8
+ (0, vitest_1.describe)('assetId', () => {
9
+ (0, vitest_1.it)('should have matching CAIP19 aliases', () => {
10
+ (0, vitest_1.expect)(assetId_1.toAssetId).toEqual(assetId_1.toCAIP19);
11
+ (0, vitest_1.expect)(assetId_1.fromAssetId).toEqual(assetId_1.fromCAIP19);
12
+ });
13
+ (0, vitest_1.describe)('toAssetId', () => {
14
+ (0, vitest_1.describe)('toAssetId(fromAssetId())', () => {
15
+ vitest_1.it.each([
16
+ ['eip155:1/slip44:60'],
17
+ ['eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d'],
18
+ ['bip122:000000000019d6689c085ae165831e93/slip44:0'],
19
+ ['cosmos:cosmoshub-4/slip44:118'],
20
+ ['cosmos:thorchain-1/slip44:tcy'],
21
+ ])('returns an AssetId from the result of fromAssetId for %s', assetId => {
22
+ const result = (0, assetId_1.fromAssetId)(assetId);
23
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(result, 'chainId'))).toBe(assetId);
24
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(result, ['chainNamespace', 'chainReference']))).toBe(assetId);
25
+ });
26
+ });
27
+ (0, vitest_1.it)('can make eth AssetId on mainnet', () => {
28
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
29
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
30
+ const assetIdArgSuperset = {
31
+ chainNamespace,
32
+ chainReference,
33
+ assetNamespace: 'slip44',
34
+ assetReference: constants_1.ASSET_REFERENCE.Ethereum,
35
+ chainId: (0, chainId_1.toChainId)({ chainNamespace, chainReference }),
36
+ };
37
+ const expected = 'eip155:1/slip44:60';
38
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toEqual(expected);
39
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
40
+ });
41
+ (0, vitest_1.it)('throws with invalid eth network', () => {
42
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
43
+ const chainReference = constants_1.CHAIN_REFERENCE.CosmosHubMainnet;
44
+ const assetIdArgSuperset = {
45
+ chainNamespace,
46
+ chainReference,
47
+ assetNamespace: 'slip44',
48
+ assetReference: constants_1.ASSET_REFERENCE.Ethereum,
49
+ chainId: `${chainNamespace}:${chainReference}`,
50
+ };
51
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
52
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
53
+ });
54
+ (0, vitest_1.it)('throws with invalid namespace', () => {
55
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
56
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
57
+ const assetIdArgSuperset = {
58
+ chainNamespace,
59
+ chainReference,
60
+ assetNamespace: 'bad',
61
+ assetReference: constants_1.ASSET_REFERENCE.Ethereum,
62
+ chainId: `${chainNamespace}:${chainReference}`,
63
+ };
64
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
65
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
66
+ });
67
+ (0, vitest_1.it)('can make Cosmos AssetId on CosmosHub mainnet', () => {
68
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.CosmosSdk;
69
+ const chainReference = constants_1.CHAIN_REFERENCE.CosmosHubMainnet;
70
+ const assetIdArgSuperset = {
71
+ chainNamespace,
72
+ chainReference,
73
+ assetNamespace: 'slip44',
74
+ assetReference: constants_1.ASSET_REFERENCE.Cosmos,
75
+ chainId: (0, chainId_1.toChainId)({ chainNamespace, chainReference }),
76
+ };
77
+ const expected = 'cosmos:cosmoshub-4/slip44:118';
78
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toEqual(expected);
79
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
80
+ });
81
+ (0, vitest_1.it)('throws with invalid Cosmos network', () => {
82
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.CosmosSdk;
83
+ const chainReference = constants_1.CHAIN_REFERENCE.BitcoinMainnet;
84
+ const assetIdArgSuperset = {
85
+ chainNamespace,
86
+ chainReference,
87
+ assetNamespace: 'slip44',
88
+ assetReference: constants_1.ASSET_REFERENCE.Cosmos,
89
+ chainId: `${chainNamespace}:${chainReference}`,
90
+ };
91
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
92
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
93
+ });
94
+ (0, vitest_1.it)('throws with invalid Cosmos slip44 reference', () => {
95
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.CosmosSdk;
96
+ const chainReference = constants_1.CHAIN_REFERENCE.CosmosHubMainnet;
97
+ const assetIdArgSuperset = {
98
+ chainNamespace,
99
+ chainReference,
100
+ assetNamespace: 'slip44',
101
+ assetReference: 'bad',
102
+ chainId: `${chainNamespace}:${chainReference}`,
103
+ };
104
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
105
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
106
+ });
107
+ (0, vitest_1.it)('throws with invalid btc network', () => {
108
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Utxo;
109
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
110
+ const assetIdArgSuperset = {
111
+ chainNamespace,
112
+ chainReference,
113
+ assetNamespace: 'slip44',
114
+ assetReference: constants_1.ASSET_REFERENCE.Bitcoin,
115
+ chainId: `${chainNamespace}:${chainReference}`,
116
+ };
117
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
118
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
119
+ });
120
+ (0, vitest_1.it)('can make FOX AssetId on mainnet', () => {
121
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
122
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
123
+ const assetIdArgSuperset = {
124
+ chainNamespace,
125
+ chainReference,
126
+ assetNamespace: 'erc20',
127
+ assetReference: '0xc770eefad204b5180df6a14ee197d99d808ee52d',
128
+ chainId: `${chainNamespace}:${chainReference}`,
129
+ };
130
+ const expected = 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d';
131
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toEqual(expected);
132
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
133
+ });
134
+ (0, vitest_1.it)('should lower case ERC20 asset references', () => {
135
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
136
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
137
+ const assetIdArgSuperset = {
138
+ chainNamespace,
139
+ chainReference,
140
+ assetNamespace: 'erc20',
141
+ assetReference: '0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d',
142
+ chainId: `${chainNamespace}:${chainReference}`,
143
+ };
144
+ const expected = 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d';
145
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toEqual(expected);
146
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
147
+ });
148
+ (0, vitest_1.it)('should lower case ERC721 asset references', () => {
149
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
150
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
151
+ const assetIdArgSuperset = {
152
+ chainNamespace,
153
+ chainReference,
154
+ assetNamespace: 'erc721',
155
+ assetReference: '0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d/12345',
156
+ chainId: `${chainNamespace}:${chainReference}`,
157
+ };
158
+ const expected = 'eip155:1/erc721:0xc770eefad204b5180df6a14ee197d99d808ee52d/12345';
159
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toEqual(expected);
160
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
161
+ });
162
+ (0, vitest_1.it)('throws with invalid assetReference length', () => {
163
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
164
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
165
+ const assetIdArgSuperset = {
166
+ chainNamespace,
167
+ chainReference,
168
+ assetNamespace: 'erc20',
169
+ assetReference: '0xfoo',
170
+ chainId: `${chainNamespace}:${chainReference}`,
171
+ };
172
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
173
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
174
+ });
175
+ (0, vitest_1.it)('throws with no assetReference string', () => {
176
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
177
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
178
+ const assetIdArgSuperset = {
179
+ chainNamespace,
180
+ chainReference,
181
+ assetNamespace: 'erc20',
182
+ assetReference: '',
183
+ chainId: `${chainNamespace}:${chainReference}`,
184
+ };
185
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
186
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
187
+ });
188
+ (0, vitest_1.it)('throws with invalid assetReference string', () => {
189
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
190
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
191
+ const assetIdArgSuperset = {
192
+ chainNamespace,
193
+ chainReference,
194
+ assetNamespace: 'erc20',
195
+ assetReference: 'gm',
196
+ chainId: `${chainNamespace}:${chainReference}`,
197
+ };
198
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
199
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
200
+ });
201
+ (0, vitest_1.it)('throws if no asset namespace provided', () => {
202
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
203
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
204
+ const assetIdArgSuperset = {
205
+ chainNamespace,
206
+ chainReference,
207
+ assetNamespace: '',
208
+ assetReference: '0xdef1cafe',
209
+ chainId: `${chainNamespace}:${chainReference}`,
210
+ };
211
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toThrow();
212
+ (0, vitest_1.expect)(() => (0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toThrow();
213
+ });
214
+ (0, vitest_1.it)('can make bitcoin AssetId on mainnet', () => {
215
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Utxo;
216
+ const chainReference = constants_1.CHAIN_REFERENCE.BitcoinMainnet;
217
+ const assetIdArgSuperset = {
218
+ chainNamespace,
219
+ chainReference,
220
+ assetNamespace: 'slip44',
221
+ assetReference: constants_1.ASSET_REFERENCE.Bitcoin,
222
+ chainId: `${chainNamespace}:${chainReference}`,
223
+ };
224
+ const expected = 'bip122:000000000019d6689c085ae165831e93/slip44:0';
225
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, 'chainId'))).toEqual(expected);
226
+ (0, vitest_1.expect)((0, assetId_1.toAssetId)((0, lodash_1.omit)(assetIdArgSuperset, ['chainNamespace', 'chainReference']))).toEqual(expected);
227
+ });
228
+ });
229
+ (0, vitest_1.describe)('fromAssetId', () => {
230
+ (0, vitest_1.describe)('fromAssetId(toAssetId())', () => {
231
+ const slip44 = 'slip44';
232
+ const erc20 = 'erc20';
233
+ vitest_1.it.each([
234
+ [constants_1.CHAIN_NAMESPACE.Utxo, constants_1.CHAIN_REFERENCE.BitcoinMainnet, slip44, constants_1.ASSET_REFERENCE.Bitcoin],
235
+ [constants_1.CHAIN_NAMESPACE.Evm, constants_1.CHAIN_REFERENCE.EthereumMainnet, slip44, constants_1.ASSET_REFERENCE.Ethereum],
236
+ [
237
+ constants_1.CHAIN_NAMESPACE.Evm,
238
+ constants_1.CHAIN_REFERENCE.EthereumMainnet,
239
+ erc20,
240
+ '0xc770eefad204b5180df6a14ee197d99d808ee52d',
241
+ ],
242
+ [
243
+ constants_1.CHAIN_NAMESPACE.CosmosSdk,
244
+ constants_1.CHAIN_REFERENCE.CosmosHubMainnet,
245
+ slip44,
246
+ constants_1.ASSET_REFERENCE.Cosmos,
247
+ ],
248
+ ])('returns a AssetId from the result of fromAssetId for %s', (chainNamespace, chainReference, assetNamespace, assetReference) => {
249
+ (0, vitest_1.expect)((0, assetId_1.fromAssetId)((0, assetId_1.toAssetId)({ chainNamespace, chainReference, assetNamespace, assetReference }))).toStrictEqual({
250
+ chainNamespace,
251
+ chainReference,
252
+ assetReference,
253
+ assetNamespace,
254
+ chainId: (0, chainId_1.toChainId)({ chainNamespace, chainReference }),
255
+ });
256
+ });
257
+ });
258
+ (0, vitest_1.it)('can return chain, network from eth AssetId on mainnet', () => {
259
+ const AssetId = 'eip155:1/slip44:60';
260
+ const { chainId, chainReference, chainNamespace, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(AssetId);
261
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Evm);
262
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.EthereumMainnet);
263
+ (0, vitest_1.expect)(chainId).toEqual((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
264
+ (0, vitest_1.expect)(assetNamespace).toEqual('slip44');
265
+ (0, vitest_1.expect)(assetReference).toEqual(constants_1.ASSET_REFERENCE.Ethereum);
266
+ });
267
+ (0, vitest_1.it)('can return chain, network from bitcoin AssetId on mainnet', () => {
268
+ const AssetId = 'bip122:000000000019d6689c085ae165831e93/slip44:0';
269
+ const { chainId, chainReference, chainNamespace, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(AssetId);
270
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Utxo);
271
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.BitcoinMainnet);
272
+ (0, vitest_1.expect)(chainId).toEqual((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
273
+ (0, vitest_1.expect)(assetNamespace).toEqual('slip44');
274
+ (0, vitest_1.expect)(assetReference).toEqual(constants_1.ASSET_REFERENCE.Bitcoin);
275
+ });
276
+ (0, vitest_1.it)('can return chainId, chainReference, chainNamespace, assetNamespace, assetReference from FOX AssetId on mainnet', () => {
277
+ const AssetId = 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d';
278
+ const { chainId, chainReference, chainNamespace, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(AssetId);
279
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Evm);
280
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.EthereumMainnet);
281
+ (0, vitest_1.expect)(chainId).toEqual((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
282
+ (0, vitest_1.expect)(assetNamespace).toEqual('erc20');
283
+ (0, vitest_1.expect)(assetReference).toEqual('0xc770eefad204b5180df6a14ee197d99d808ee52d');
284
+ });
285
+ (0, vitest_1.it)('should lower case assetReference for assetNamespace ERC20', () => {
286
+ const AssetId = 'eip155:1/erc20:0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d';
287
+ const { chainId, chainReference, chainNamespace, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(AssetId);
288
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Evm);
289
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.EthereumMainnet);
290
+ (0, vitest_1.expect)(chainId).toEqual((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
291
+ (0, vitest_1.expect)(assetNamespace).toEqual('erc20');
292
+ (0, vitest_1.expect)(assetReference).toEqual('0xc770eefad204b5180df6a14ee197d99d808ee52d');
293
+ });
294
+ (0, vitest_1.it)('should lower case assetReference for assetNamespace ERC721', () => {
295
+ const AssetId = 'eip155:1/erc721:0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d/12345';
296
+ const { chainId, chainReference, chainNamespace, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(AssetId);
297
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Evm);
298
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.EthereumMainnet);
299
+ (0, vitest_1.expect)(chainId).toEqual((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
300
+ (0, vitest_1.expect)(assetNamespace).toEqual('erc721');
301
+ const [address, id] = assetReference.split('/');
302
+ (0, vitest_1.expect)(address).toEqual('0xc770eefad204b5180df6a14ee197d99d808ee52d');
303
+ (0, vitest_1.expect)(id).toEqual('12345');
304
+ });
305
+ (0, vitest_1.it)('can parse a cosmoshub native token', () => {
306
+ const AssetId = 'cosmos:cosmoshub-4/slip44:118';
307
+ const { chainId, chainReference, chainNamespace, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(AssetId);
308
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.CosmosSdk);
309
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.CosmosHubMainnet);
310
+ (0, vitest_1.expect)(chainId).toEqual((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
311
+ (0, vitest_1.expect)(assetNamespace).toEqual('slip44');
312
+ (0, vitest_1.expect)(assetReference).toEqual(constants_1.ASSET_REFERENCE.Cosmos);
313
+ });
314
+ (0, vitest_1.it)('errors for an invalid AssetId format', () => {
315
+ (0, vitest_1.expect)(() => (0, assetId_1.fromAssetId)('invalid')).toThrow();
316
+ });
317
+ (0, vitest_1.it)('errors for invalid ChainNamespace', () => {
318
+ (0, vitest_1.expect)(() => (0, assetId_1.fromAssetId)('invalid:cosmoshub-4/slip44:118')).toThrow();
319
+ });
320
+ (0, vitest_1.it)('errors for invalid ChainReference type', () => {
321
+ (0, vitest_1.expect)(() => (0, assetId_1.fromAssetId)('cosmos:invalid/slip44:118')).toThrow();
322
+ });
323
+ });
324
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.fromCAIP2 = exports.toCAIP2 = exports.fromChainId = exports.toChainId = void 0;
5
+ const typeGuards_1 = require("../typeGuards");
6
+ const toChainId = (args) => {
7
+ const { chainNamespace, chainReference } = args;
8
+ const maybeChainId = `${chainNamespace}:${chainReference}`;
9
+ (0, typeGuards_1.assertIsChainId)(maybeChainId);
10
+ return maybeChainId;
11
+ };
12
+ exports.toChainId = toChainId;
13
+ // NOTE: perf critical - benchmark any changes
14
+ const fromChainId = (chainId) => {
15
+ const idx = chainId.indexOf(':');
16
+ const chainNamespace = chainId.substring(0, idx);
17
+ const chainReference = chainId.substring(idx + 1);
18
+ return {
19
+ chainNamespace: chainNamespace,
20
+ chainReference: chainReference,
21
+ };
22
+ };
23
+ exports.fromChainId = fromChainId;
24
+ exports.toCAIP2 = exports.toChainId;
25
+ exports.fromCAIP2 = exports.fromChainId;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const constants_1 = require("../constants");
5
+ const typeGuards_1 = require("../typeGuards");
6
+ const chainId_1 = require("./chainId");
7
+ (0, vitest_1.describe)('chainId', () => {
8
+ (0, vitest_1.it)('should have matching CAIP2 aliases', () => {
9
+ (0, vitest_1.expect)(chainId_1.toChainId).toEqual(chainId_1.toCAIP2);
10
+ (0, vitest_1.expect)(chainId_1.fromChainId).toEqual(chainId_1.fromCAIP2);
11
+ });
12
+ (0, vitest_1.describe)('toChainId', () => {
13
+ (0, vitest_1.it)('can turn CosmosHub mainnet to ChainId', () => {
14
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.CosmosSdk;
15
+ const chainReference = constants_1.CHAIN_REFERENCE.CosmosHubMainnet;
16
+ const result = (0, chainId_1.toChainId)({ chainNamespace, chainReference });
17
+ (0, vitest_1.expect)(result).toEqual('cosmos:cosmoshub-4');
18
+ });
19
+ (0, vitest_1.it)('can turn Ethereum mainnet to ChainId', () => {
20
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
21
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
22
+ const result = (0, chainId_1.toChainId)({ chainNamespace, chainReference });
23
+ (0, vitest_1.expect)(result).toEqual('eip155:1');
24
+ });
25
+ (0, vitest_1.it)('can turn Bitcoin mainnet to ChainId', () => {
26
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Utxo;
27
+ const chainReference = constants_1.CHAIN_REFERENCE.BitcoinMainnet;
28
+ const result = (0, chainId_1.toChainId)({ chainNamespace, chainReference });
29
+ (0, vitest_1.expect)(result).toEqual('bip122:000000000019d6689c085ae165831e93');
30
+ });
31
+ (0, vitest_1.it)('should throw an error for an invalid chain', () => {
32
+ // @ts-ignore
33
+ (0, vitest_1.expect)(() => (0, chainId_1.toChainId)({
34
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Utxo,
35
+ chainReference: constants_1.CHAIN_REFERENCE.CosmosHubMainnet,
36
+ })).toThrow('assertIsChainId: unsupported ChainId: bip122:cosmoshub-4');
37
+ });
38
+ });
39
+ (0, vitest_1.describe)('fromChainId', () => {
40
+ (0, vitest_1.it)('can turn Bitcoin mainnet to chain and network', () => {
41
+ const bitcoinChainId = 'bip122:000000000019d6689c085ae165831e93';
42
+ const { chainNamespace, chainReference } = (0, chainId_1.fromChainId)(bitcoinChainId);
43
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Utxo);
44
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.BitcoinMainnet);
45
+ });
46
+ (0, vitest_1.it)('can turn CosmosHub mainnet to chain and network', () => {
47
+ const cosmosHubChainId = 'cosmos:cosmoshub-4';
48
+ const { chainNamespace, chainReference } = (0, chainId_1.fromChainId)(cosmosHubChainId);
49
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.CosmosSdk);
50
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.CosmosHubMainnet);
51
+ });
52
+ (0, vitest_1.it)('can turn Ethereum mainnet to chain and network', () => {
53
+ const ethereumChainId = 'eip155:1';
54
+ const { chainNamespace, chainReference } = (0, chainId_1.fromChainId)(ethereumChainId);
55
+ (0, vitest_1.expect)(chainNamespace).toEqual(constants_1.CHAIN_NAMESPACE.Evm);
56
+ (0, vitest_1.expect)(chainReference).toEqual(constants_1.CHAIN_REFERENCE.EthereumMainnet);
57
+ });
58
+ });
59
+ });
60
+ (0, vitest_1.describe)('isChainId', () => {
61
+ (0, vitest_1.it)('throws on eip155 without a network reference', () => {
62
+ (0, vitest_1.expect)(() => (0, typeGuards_1.assertIsChainId)('eip155')).toThrow();
63
+ });
64
+ (0, vitest_1.it)('validates eip155:1 mainnet as true', () => {
65
+ (0, vitest_1.expect)((0, typeGuards_1.isChainId)('eip155:1')).toBe(true);
66
+ });
67
+ (0, vitest_1.it)('throws on eip155:2 unsupported network reference', () => {
68
+ (0, vitest_1.expect)(() => (0, typeGuards_1.assertIsChainId)('eip155:2')).toThrow();
69
+ });
70
+ (0, vitest_1.it)('validates bip122:000000000019d6689c085ae165831e93 mainnet as true', () => {
71
+ (0, vitest_1.expect)((0, typeGuards_1.isChainId)('bip122:000000000019d6689c085ae165831e93')).toBe(true);
72
+ });
73
+ (0, vitest_1.it)('throws on bip122 with the wrong network reference', () => {
74
+ (0, vitest_1.expect)(() => (0, typeGuards_1.assertIsChainId)('bip122:1')).toThrow();
75
+ });
76
+ (0, vitest_1.it)('throws on bip122', () => {
77
+ // missing network
78
+ (0, vitest_1.expect)(() => (0, typeGuards_1.assertIsChainId)('bip122')).toThrow();
79
+ });
80
+ (0, vitest_1.it)('throws on empty string', () => {
81
+ // missing network
82
+ (0, vitest_1.expect)(() => (0, typeGuards_1.assertIsChainId)('')).toThrow();
83
+ });
84
+ (0, vitest_1.it)('should return true for cosmos', () => {
85
+ (0, vitest_1.expect)((0, typeGuards_1.isChainId)('cosmos:cosmoshub-4')).toBe(true);
86
+ });
87
+ (0, vitest_1.it)('should throw for an unknown cosmos chain', () => {
88
+ (0, vitest_1.expect)(() => (0, typeGuards_1.assertIsChainId)('cosmos:fakechain-1')).toThrow('assertIsChainId: unsupported ChainId: cosmos:fakechain-1');
89
+ });
90
+ });
@@ -32,6 +32,7 @@ export declare const foxWifHatAssetId: AssetId;
32
32
  export declare const cosmosAssetId: AssetId;
33
33
  export declare const thorchainAssetId: AssetId;
34
34
  export declare const tcyAssetId: AssetId;
35
+ export declare const rujiAssetId: AssetId;
35
36
  export declare const mayachainAssetId: AssetId;
36
37
  export declare const binanceAssetId: AssetId;
37
38
  export declare const btcChainId: ChainId;
@@ -89,7 +90,6 @@ export declare const ASSET_NAMESPACE: {
89
90
  readonly bep721: "bep721";
90
91
  readonly bep1155: "bep1155";
91
92
  readonly slip44: "slip44";
92
- readonly ibc: "ibc";
93
93
  readonly splToken: "token";
94
94
  };
95
95
  export declare const ASSET_REFERENCE: {
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.thorchainChainId = exports.cosmosChainId = exports.baseChainId = exports.arbitrumNovaChainId = exports.arbitrumChainId = exports.gnosisChainId = exports.polygonChainId = exports.bscChainId = exports.optimismChainId = exports.avalancheChainId = exports.ethChainId = exports.ltcChainId = exports.dogeChainId = exports.bchChainId = exports.btcChainId = exports.binanceAssetId = exports.mayachainAssetId = exports.rujiAssetId = exports.tcyAssetId = exports.thorchainAssetId = exports.cosmosAssetId = exports.foxWifHatAssetId = exports.flipAssetId = exports.usdcOnSolanaAssetId = exports.usdcOnArbitrumOneAssetId = exports.usdcAssetId = exports.usdtAssetId = exports.foxOnPolygonAssetId = exports.foxOnOptimismAssetId = exports.foxAssetId = exports.foxOnArbitrumOneAssetId = exports.foxOnGnosisAssetId = exports.foxyAssetId = exports.foxatarAssetId = exports.uniV2EthFoxArbitrumAssetId = exports.wrappedSolAssetId = exports.solAssetId = exports.baseAssetId = exports.arbitrumNovaAssetId = exports.arbitrumAssetId = exports.gnosisAssetId = exports.polygonAssetId = exports.bscAssetId = exports.optimismAssetId = exports.avalancheAssetId = exports.ethAssetId = exports.ltcAssetId = exports.dogeAssetId = exports.bchAssetId = exports.btcAssetId = void 0;
4
+ exports.FEE_ASSET_IDS = exports.VALID_ASSET_NAMESPACE = exports.VALID_CHAIN_IDS = exports.ASSET_REFERENCE = exports.ASSET_NAMESPACE = exports.CHAIN_REFERENCE = exports.CHAIN_NAMESPACE = exports.solanaChainId = exports.binanceChainId = exports.mayachainChainId = void 0;
5
+ exports.btcAssetId = 'bip122:000000000019d6689c085ae165831e93/slip44:0';
6
+ exports.bchAssetId = 'bip122:000000000000000000651ef99cb9fcbe/slip44:145';
7
+ exports.dogeAssetId = 'bip122:00000000001a91e3dace36e2be3bf030/slip44:3';
8
+ exports.ltcAssetId = 'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2';
9
+ exports.ethAssetId = 'eip155:1/slip44:60';
10
+ exports.avalancheAssetId = 'eip155:43114/slip44:60';
11
+ exports.optimismAssetId = 'eip155:10/slip44:60';
12
+ exports.bscAssetId = 'eip155:56/slip44:60';
13
+ exports.polygonAssetId = 'eip155:137/slip44:60';
14
+ exports.gnosisAssetId = 'eip155:100/slip44:60';
15
+ exports.arbitrumAssetId = 'eip155:42161/slip44:60';
16
+ exports.arbitrumNovaAssetId = 'eip155:42170/slip44:60';
17
+ exports.baseAssetId = 'eip155:8453/slip44:60';
18
+ exports.solAssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501';
19
+ exports.wrappedSolAssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:So11111111111111111111111111111111111111112';
20
+ exports.uniV2EthFoxArbitrumAssetId = 'eip155:42161/erc20:0x5f6ce0ca13b87bd738519545d3e018e70e339c24';
21
+ exports.foxatarAssetId = 'eip155:137/erc721:0x2e727c425a11ce6b8819b3004db332c12d2af2a2';
22
+ exports.foxyAssetId = 'eip155:1/erc20:0xdc49108ce5c57bc3408c3a5e95f3d864ec386ed3';
23
+ exports.foxOnGnosisAssetId = 'eip155:100/erc20:0x21a42669643f45bc0e086b8fc2ed70c23d67509d';
24
+ exports.foxOnArbitrumOneAssetId = 'eip155:42161/erc20:0xf929de51d91c77e42f5090069e0ad7a09e513c73';
25
+ exports.foxAssetId = 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d';
26
+ exports.foxOnOptimismAssetId = 'eip155:10/erc20:0xf1a0da3367bc7aa04f8d94ba57b862ff37ced174';
27
+ exports.foxOnPolygonAssetId = 'eip155:137/erc20:0x65a05db8322701724c197af82c9cae41195b0aa8';
28
+ exports.usdtAssetId = 'eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7';
29
+ exports.usdcAssetId = 'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
30
+ exports.usdcOnArbitrumOneAssetId = 'eip155:42161/erc20:0xaf88d065e77c8cc2239327c5edb3a432268e5831';
31
+ exports.usdcOnSolanaAssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
32
+ exports.flipAssetId = 'eip155:1/erc20:0x826180541412d574cf1336d22c0c0a287822678a';
33
+ exports.foxWifHatAssetId = 'eip155:8453/erc20:0xd14acd73ade7f3c652f05365115f015e905a6bf4';
34
+ exports.cosmosAssetId = 'cosmos:cosmoshub-4/slip44:118';
35
+ exports.thorchainAssetId = 'cosmos:thorchain-1/slip44:931';
36
+ exports.tcyAssetId = 'cosmos:thorchain-1/slip44:tcy';
37
+ exports.rujiAssetId = 'cosmos:thorchain-1/slip44:ruji';
38
+ exports.mayachainAssetId = 'cosmos:mayachain-mainnet-v1/slip44:931';
39
+ exports.binanceAssetId = 'cosmos:binance-chain-tigris/slip44:714';
40
+ exports.btcChainId = 'bip122:000000000019d6689c085ae165831e93';
41
+ exports.bchChainId = 'bip122:000000000000000000651ef99cb9fcbe';
42
+ exports.dogeChainId = 'bip122:00000000001a91e3dace36e2be3bf030';
43
+ exports.ltcChainId = 'bip122:12a765e31ffd4059bada1e25190f6e98';
44
+ exports.ethChainId = 'eip155:1';
45
+ exports.avalancheChainId = 'eip155:43114';
46
+ exports.optimismChainId = 'eip155:10';
47
+ exports.bscChainId = 'eip155:56';
48
+ exports.polygonChainId = 'eip155:137';
49
+ exports.gnosisChainId = 'eip155:100';
50
+ exports.arbitrumChainId = 'eip155:42161';
51
+ exports.arbitrumNovaChainId = 'eip155:42170';
52
+ exports.baseChainId = 'eip155:8453';
53
+ exports.cosmosChainId = 'cosmos:cosmoshub-4';
54
+ exports.thorchainChainId = 'cosmos:thorchain-1';
55
+ exports.mayachainChainId = 'cosmos:mayachain-mainnet-v1';
56
+ exports.binanceChainId = 'cosmos:binance-chain-tigris';
57
+ exports.solanaChainId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp';
58
+ exports.CHAIN_NAMESPACE = {
59
+ Evm: 'eip155',
60
+ Utxo: 'bip122',
61
+ CosmosSdk: 'cosmos',
62
+ Solana: 'solana',
63
+ };
64
+ exports.CHAIN_REFERENCE = {
65
+ EthereumMainnet: '1',
66
+ BitcoinMainnet: '000000000019d6689c085ae165831e93',
67
+ BitcoinCashMainnet: '000000000000000000651ef99cb9fcbe',
68
+ DogecoinMainnet: '00000000001a91e3dace36e2be3bf030',
69
+ LitecoinMainnet: '12a765e31ffd4059bada1e25190f6e98',
70
+ CosmosHubMainnet: 'cosmoshub-4',
71
+ ThorchainMainnet: 'thorchain-1',
72
+ MayachainMainnet: 'mayachain-mainnet-v1',
73
+ BinanceMainnet: 'binance-chain-tigris',
74
+ AvalancheCChain: '43114',
75
+ OptimismMainnet: '10',
76
+ BnbSmartChainMainnet: '56',
77
+ PolygonMainnet: '137',
78
+ GnosisMainnet: '100',
79
+ ArbitrumMainnet: '42161',
80
+ ArbitrumNovaMainnet: '42170',
81
+ BaseMainnet: '8453',
82
+ SolanaMainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', // https://namespaces.chainagnostic.org/solana/caip2
83
+ };
84
+ exports.ASSET_NAMESPACE = {
85
+ erc20: 'erc20',
86
+ erc721: 'erc721',
87
+ erc1155: 'erc1155',
88
+ bep20: 'bep20',
89
+ bep721: 'bep721',
90
+ bep1155: 'bep1155',
91
+ slip44: 'slip44',
92
+ splToken: 'token',
93
+ };
94
+ exports.ASSET_REFERENCE = {
95
+ Bitcoin: '0',
96
+ BitcoinCash: '145',
97
+ Litecoin: '2',
98
+ Dogecoin: '3',
99
+ Cosmos: '118',
100
+ Thorchain: '931',
101
+ Mayachain: '931',
102
+ Binance: '714',
103
+ Ethereum: '60',
104
+ AvalancheC: '60',
105
+ Optimism: '60',
106
+ BnbSmartChain: '60',
107
+ Polygon: '60',
108
+ Gnosis: '60',
109
+ Arbitrum: '60',
110
+ ArbitrumNova: '60',
111
+ Base: '60',
112
+ Solana: '501',
113
+ };
114
+ exports.VALID_CHAIN_IDS = Object.freeze({
115
+ [exports.CHAIN_NAMESPACE.Utxo]: [
116
+ exports.CHAIN_REFERENCE.BitcoinMainnet,
117
+ exports.CHAIN_REFERENCE.BitcoinCashMainnet,
118
+ exports.CHAIN_REFERENCE.DogecoinMainnet,
119
+ exports.CHAIN_REFERENCE.LitecoinMainnet,
120
+ ],
121
+ [exports.CHAIN_NAMESPACE.Evm]: [
122
+ exports.CHAIN_REFERENCE.EthereumMainnet,
123
+ exports.CHAIN_REFERENCE.AvalancheCChain,
124
+ exports.CHAIN_REFERENCE.OptimismMainnet,
125
+ exports.CHAIN_REFERENCE.BnbSmartChainMainnet,
126
+ exports.CHAIN_REFERENCE.PolygonMainnet,
127
+ exports.CHAIN_REFERENCE.GnosisMainnet,
128
+ exports.CHAIN_REFERENCE.ArbitrumMainnet,
129
+ exports.CHAIN_REFERENCE.ArbitrumNovaMainnet,
130
+ exports.CHAIN_REFERENCE.BaseMainnet,
131
+ ],
132
+ [exports.CHAIN_NAMESPACE.CosmosSdk]: [
133
+ exports.CHAIN_REFERENCE.CosmosHubMainnet,
134
+ exports.CHAIN_REFERENCE.ThorchainMainnet,
135
+ exports.CHAIN_REFERENCE.MayachainMainnet,
136
+ exports.CHAIN_REFERENCE.BinanceMainnet,
137
+ ],
138
+ [exports.CHAIN_NAMESPACE.Solana]: [exports.CHAIN_REFERENCE.SolanaMainnet],
139
+ });
140
+ exports.VALID_ASSET_NAMESPACE = Object.freeze({
141
+ [exports.CHAIN_NAMESPACE.Utxo]: [exports.ASSET_NAMESPACE.slip44],
142
+ [exports.CHAIN_NAMESPACE.Evm]: [
143
+ exports.ASSET_NAMESPACE.slip44,
144
+ exports.ASSET_NAMESPACE.erc20,
145
+ exports.ASSET_NAMESPACE.erc721,
146
+ exports.ASSET_NAMESPACE.erc1155,
147
+ exports.ASSET_NAMESPACE.bep20,
148
+ exports.ASSET_NAMESPACE.bep721,
149
+ exports.ASSET_NAMESPACE.bep1155,
150
+ ],
151
+ [exports.CHAIN_NAMESPACE.CosmosSdk]: [exports.ASSET_NAMESPACE.slip44],
152
+ [exports.CHAIN_NAMESPACE.Solana]: [exports.ASSET_NAMESPACE.splToken, exports.ASSET_NAMESPACE.slip44],
153
+ });
154
+ // We should prob change this once we add more chains
155
+ exports.FEE_ASSET_IDS = [
156
+ exports.ethAssetId,
157
+ exports.btcAssetId,
158
+ exports.bchAssetId,
159
+ exports.cosmosAssetId,
160
+ exports.thorchainAssetId,
161
+ exports.mayachainAssetId,
162
+ exports.dogeAssetId,
163
+ exports.ltcAssetId,
164
+ exports.avalancheAssetId,
165
+ exports.optimismAssetId,
166
+ exports.bscAssetId,
167
+ exports.polygonAssetId,
168
+ exports.gnosisAssetId,
169
+ exports.arbitrumAssetId,
170
+ exports.arbitrumNovaAssetId,
171
+ exports.baseAssetId,
172
+ exports.solAssetId,
173
+ ];