@shapeshiftoss/utils 1.0.3 → 1.0.4

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 (136) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/assertUnreachable.d.ts +1 -0
  3. package/dist/cjs/assertUnreachable.js +7 -0
  4. package/dist/cjs/assetData/assetData.test.d.ts +1 -0
  5. package/dist/cjs/assetData/assetData.test.js +136 -0
  6. package/dist/cjs/assetData/baseAssets.d.ts +24 -0
  7. package/dist/cjs/assetData/baseAssets.js +365 -0
  8. package/dist/cjs/assetData/constants.d.ts +1 -0
  9. package/dist/cjs/assetData/constants.js +13 -0
  10. package/dist/cjs/assetData/decodeAssetData.d.ts +7 -0
  11. package/dist/cjs/assetData/decodeAssetData.js +106 -0
  12. package/dist/cjs/assetData/decodeRelatedAssetIndex.d.ts +3 -0
  13. package/dist/cjs/assetData/decodeRelatedAssetIndex.js +14 -0
  14. package/dist/cjs/assetData/encodeAssetData.d.ts +4 -0
  15. package/dist/cjs/assetData/encodeAssetData.js +72 -0
  16. package/dist/cjs/assetData/encodeRelatedAssetIndex.d.ts +3 -0
  17. package/dist/cjs/assetData/encodeRelatedAssetIndex.js +20 -0
  18. package/dist/cjs/assetData/getBaseAsset.d.ts +3 -0
  19. package/dist/cjs/assetData/getBaseAsset.js +54 -0
  20. package/dist/cjs/assetData/index.d.ts +7 -0
  21. package/dist/cjs/assetData/index.js +23 -0
  22. package/dist/cjs/assetData/relatedAssetIndex.test.d.ts +1 -0
  23. package/dist/cjs/assetData/relatedAssetIndex.test.js +32 -0
  24. package/dist/cjs/assetData/types.d.ts +28 -0
  25. package/dist/cjs/assetData/types.js +2 -0
  26. package/dist/cjs/baseUnits/baseUnits.d.ts +5 -0
  27. package/dist/cjs/baseUnits/baseUnits.js +32 -0
  28. package/dist/cjs/baseUnits/baseUnits.test.d.ts +1 -0
  29. package/dist/cjs/baseUnits/baseUnits.test.js +32 -0
  30. package/dist/cjs/basisPoints.d.ts +23 -0
  31. package/dist/cjs/basisPoints.js +48 -0
  32. package/dist/cjs/bignumber/bignumber.d.ts +11 -0
  33. package/dist/cjs/bignumber/bignumber.js +27 -0
  34. package/dist/cjs/bignumber/bignumber.test.d.ts +1 -0
  35. package/dist/cjs/bignumber/bignumber.test.js +52 -0
  36. package/dist/cjs/chainIdToFeeAsset.d.ts +3 -0
  37. package/dist/cjs/chainIdToFeeAsset.js +9 -0
  38. package/dist/cjs/chainIdToFeeAssetId.d.ts +2 -0
  39. package/dist/cjs/chainIdToFeeAssetId.js +54 -0
  40. package/dist/cjs/createThrottle.d.ts +9 -0
  41. package/dist/cjs/createThrottle.js +36 -0
  42. package/dist/cjs/getAssetNamespaceFromChainId.d.ts +3 -0
  43. package/dist/cjs/getAssetNamespaceFromChainId.js +37 -0
  44. package/dist/cjs/getChainShortName.d.ts +2 -0
  45. package/dist/cjs/getChainShortName.js +53 -0
  46. package/dist/cjs/getNativeFeeAssetReference.d.ts +2 -0
  47. package/dist/cjs/getNativeFeeAssetReference.js +83 -0
  48. package/dist/cjs/historyTimeframe.d.ts +6 -0
  49. package/dist/cjs/historyTimeframe.js +36 -0
  50. package/dist/cjs/index.d.ts +24 -0
  51. package/dist/cjs/index.js +60 -0
  52. package/dist/cjs/makeAsset/makeAsset.d.ts +10 -0
  53. package/dist/cjs/makeAsset/makeAsset.js +45 -0
  54. package/dist/cjs/makeAsset/makeAsset.test.d.ts +1 -0
  55. package/dist/cjs/makeAsset/makeAsset.test.js +47 -0
  56. package/dist/cjs/package.json +1 -0
  57. package/dist/cjs/promises.d.ts +4 -0
  58. package/dist/cjs/promises.js +9 -0
  59. package/dist/cjs/sha256.d.ts +1 -0
  60. package/dist/cjs/sha256.js +9 -0
  61. package/dist/cjs/timeout.d.ts +7 -0
  62. package/dist/cjs/timeout.js +34 -0
  63. package/dist/cjs/treasury.d.ts +16 -0
  64. package/dist/cjs/treasury.js +34 -0
  65. package/dist/cjs/unfreeze.d.ts +4 -0
  66. package/dist/cjs/unfreeze.js +10 -0
  67. package/dist/cjs/utxo.d.ts +2 -0
  68. package/dist/cjs/utxo.js +6 -0
  69. package/dist/esm/.tsbuildinfo +1 -0
  70. package/dist/esm/assertUnreachable.d.ts +1 -0
  71. package/dist/esm/assertUnreachable.js +3 -0
  72. package/dist/esm/assetData/assetData.test.d.ts +1 -0
  73. package/dist/esm/assetData/assetData.test.js +134 -0
  74. package/dist/esm/assetData/baseAssets.d.ts +24 -0
  75. package/dist/esm/assetData/baseAssets.js +339 -0
  76. package/dist/esm/assetData/constants.d.ts +1 -0
  77. package/dist/esm/assetData/constants.js +10 -0
  78. package/dist/esm/assetData/decodeAssetData.d.ts +7 -0
  79. package/dist/esm/assetData/decodeAssetData.js +102 -0
  80. package/dist/esm/assetData/decodeRelatedAssetIndex.d.ts +3 -0
  81. package/dist/esm/assetData/decodeRelatedAssetIndex.js +10 -0
  82. package/dist/esm/assetData/encodeAssetData.d.ts +4 -0
  83. package/dist/esm/assetData/encodeAssetData.js +68 -0
  84. package/dist/esm/assetData/encodeRelatedAssetIndex.d.ts +3 -0
  85. package/dist/esm/assetData/encodeRelatedAssetIndex.js +16 -0
  86. package/dist/esm/assetData/getBaseAsset.d.ts +3 -0
  87. package/dist/esm/assetData/getBaseAsset.js +50 -0
  88. package/dist/esm/assetData/index.d.ts +7 -0
  89. package/dist/esm/assetData/index.js +7 -0
  90. package/dist/esm/assetData/relatedAssetIndex.test.d.ts +1 -0
  91. package/dist/esm/assetData/relatedAssetIndex.test.js +30 -0
  92. package/dist/esm/assetData/types.d.ts +28 -0
  93. package/dist/esm/assetData/types.js +1 -0
  94. package/dist/esm/baseUnits/baseUnits.d.ts +5 -0
  95. package/dist/esm/baseUnits/baseUnits.js +23 -0
  96. package/dist/esm/baseUnits/baseUnits.test.d.ts +1 -0
  97. package/dist/esm/baseUnits/baseUnits.test.js +30 -0
  98. package/dist/esm/basisPoints.d.ts +23 -0
  99. package/dist/esm/basisPoints.js +39 -0
  100. package/dist/esm/bignumber/bignumber.d.ts +11 -0
  101. package/dist/esm/bignumber/bignumber.js +16 -0
  102. package/dist/esm/bignumber/bignumber.test.d.ts +1 -0
  103. package/dist/esm/bignumber/bignumber.test.js +50 -0
  104. package/dist/esm/chainIdToFeeAsset.d.ts +3 -0
  105. package/dist/esm/chainIdToFeeAsset.js +5 -0
  106. package/dist/esm/chainIdToFeeAssetId.d.ts +2 -0
  107. package/dist/esm/chainIdToFeeAssetId.js +50 -0
  108. package/dist/esm/createThrottle.d.ts +9 -0
  109. package/dist/esm/createThrottle.js +32 -0
  110. package/dist/esm/getAssetNamespaceFromChainId.d.ts +3 -0
  111. package/dist/esm/getAssetNamespaceFromChainId.js +33 -0
  112. package/dist/esm/getChainShortName.d.ts +2 -0
  113. package/dist/esm/getChainShortName.js +49 -0
  114. package/dist/esm/getNativeFeeAssetReference.d.ts +2 -0
  115. package/dist/esm/getNativeFeeAssetReference.js +79 -0
  116. package/dist/esm/historyTimeframe.d.ts +6 -0
  117. package/dist/esm/historyTimeframe.js +29 -0
  118. package/dist/esm/index.d.ts +24 -0
  119. package/dist/esm/index.js +39 -0
  120. package/dist/esm/makeAsset/makeAsset.d.ts +10 -0
  121. package/dist/esm/makeAsset/makeAsset.js +41 -0
  122. package/dist/esm/makeAsset/makeAsset.test.d.ts +1 -0
  123. package/dist/esm/makeAsset/makeAsset.test.js +45 -0
  124. package/dist/esm/promises.d.ts +4 -0
  125. package/dist/esm/promises.js +3 -0
  126. package/dist/esm/sha256.d.ts +1 -0
  127. package/dist/esm/sha256.js +2 -0
  128. package/dist/esm/timeout.d.ts +7 -0
  129. package/dist/esm/timeout.js +28 -0
  130. package/dist/esm/treasury.d.ts +16 -0
  131. package/dist/esm/treasury.js +30 -0
  132. package/dist/esm/unfreeze.d.ts +4 -0
  133. package/dist/esm/unfreeze.js +6 -0
  134. package/dist/esm/utxo.d.ts +2 -0
  135. package/dist/esm/utxo.js +2 -0
  136. package/package.json +3 -3
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const decodeAssetData_1 = require("./decodeAssetData");
5
+ const encodeAssetData_1 = require("./encodeAssetData");
6
+ const mockGeneratedAssetData = {
7
+ 'bip122:000000000019d6689c085ae165831e93/slip44:0': {
8
+ assetId: 'bip122:000000000019d6689c085ae165831e93/slip44:0',
9
+ chainId: 'bip122:000000000019d6689c085ae165831e93',
10
+ symbol: 'BTC',
11
+ name: 'Bitcoin',
12
+ networkName: 'Bitcoin',
13
+ precision: 8,
14
+ color: '#FF9800',
15
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/bitcoin/info/logo.png',
16
+ explorer: 'https://live.blockcypher.com',
17
+ explorerAddressLink: 'https://live.blockcypher.com/btc/address/',
18
+ explorerTxLink: 'https://live.blockcypher.com/btc/tx/',
19
+ relatedAssetKey: null,
20
+ isPrimary: true,
21
+ isChainSpecific: true,
22
+ },
23
+ 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c': {
24
+ assetId: 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c',
25
+ chainId: 'eip155:1',
26
+ name: 'Inception Restaked ETH on Ethereum',
27
+ precision: 18,
28
+ color: '#D6D1E4',
29
+ icon: 'https://assets.coingecko.com/coins/images/34127/large/inETH.png?1715036464',
30
+ symbol: 'INETH',
31
+ explorer: 'https://etherscan.io',
32
+ explorerAddressLink: 'https://etherscan.io/address/',
33
+ explorerTxLink: 'https://etherscan.io/tx/',
34
+ relatedAssetKey: 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c',
35
+ isPrimary: true,
36
+ isChainSpecific: false,
37
+ },
38
+ 'eip155:1/erc20:0xeed3ae7b0f8b5b9bb8c035a9941382b1822671cd': {
39
+ assetId: 'eip155:1/erc20:0xeed3ae7b0f8b5b9bb8c035a9941382b1822671cd',
40
+ chainId: 'eip155:1',
41
+ name: 'EveryCoin',
42
+ precision: 12,
43
+ color: '#0483CB',
44
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum/assets/0xEEd3aE7b0F8b5B9BB8C035A9941382B1822671CD/logo.png',
45
+ symbol: 'EVY',
46
+ explorer: 'https://etherscan.io',
47
+ explorerAddressLink: 'https://etherscan.io/address/',
48
+ explorerTxLink: 'https://etherscan.io/tx/',
49
+ relatedAssetKey: null,
50
+ isPrimary: true,
51
+ isChainSpecific: true,
52
+ },
53
+ 'eip155:1/erc20:0xeeda34a377dd0ca676b9511ee1324974fa8d980d': {
54
+ explorer: 'https://etherscan.io',
55
+ explorerAddressLink: 'https://etherscan.io/address/',
56
+ explorerTxLink: 'https://etherscan.io/tx/',
57
+ color: '#FFFFFF',
58
+ icon: undefined,
59
+ icons: [
60
+ 'https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum/assets/0xD9A442856C234a39a81a089C06451EBAa4306a72/logo.png',
61
+ 'https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum/assets/0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0/logo.png',
62
+ ],
63
+ name: 'Curve PUFETH/WSTETH Pool',
64
+ precision: 18,
65
+ symbol: 'pufETHwstE',
66
+ chainId: 'eip155:1',
67
+ assetId: 'eip155:1/erc20:0xeeda34a377dd0ca676b9511ee1324974fa8d980d',
68
+ relatedAssetKey: null,
69
+ isPool: true,
70
+ isPrimary: true,
71
+ isChainSpecific: true,
72
+ },
73
+ 'eip155:1/erc20:0xeee0fe52299f2de8e2ed5111cd521ab67dcf0faf': {
74
+ assetId: 'eip155:1/erc20:0xeee0fe52299f2de8e2ed5111cd521ab67dcf0faf',
75
+ chainId: 'eip155:1',
76
+ name: 'The QWAN',
77
+ precision: 18,
78
+ color: '#18B6BE',
79
+ icon: 'https://assets.coingecko.com/coins/images/30613/large/qwan.jpg?1696529482',
80
+ symbol: 'QWAN',
81
+ explorer: 'https://etherscan.io',
82
+ explorerAddressLink: 'https://etherscan.io/address/',
83
+ explorerTxLink: 'https://etherscan.io/tx/',
84
+ relatedAssetKey: null,
85
+ isPrimary: true,
86
+ isChainSpecific: true,
87
+ },
88
+ 'eip155:1/erc20:0xeeecd285f60e802ecb6d8d8d37790c887f9a4b33': {
89
+ assetId: 'eip155:1/erc20:0xeeecd285f60e802ecb6d8d8d37790c887f9a4b33',
90
+ chainId: 'eip155:1',
91
+ name: 'Big Tom',
92
+ precision: 9,
93
+ color: '#27DD08',
94
+ icon: 'https://assets.coingecko.com/coins/images/38555/large/huyah_%281%29.jpg?1717999187',
95
+ symbol: 'TOM',
96
+ explorer: 'https://etherscan.io',
97
+ explorerAddressLink: 'https://etherscan.io/address/',
98
+ explorerTxLink: 'https://etherscan.io/tx/',
99
+ relatedAssetKey: null,
100
+ isPrimary: true,
101
+ isChainSpecific: true,
102
+ },
103
+ 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f': {
104
+ assetId: 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f',
105
+ chainId: 'eip155:1',
106
+ name: 'Forgotten Playland',
107
+ precision: 18,
108
+ color: '#35355D',
109
+ icon: 'https://assets.coingecko.com/coins/images/35339/large/200.png?1708515043',
110
+ symbol: 'FP',
111
+ explorer: 'https://etherscan.io',
112
+ explorerAddressLink: 'https://etherscan.io/address/',
113
+ explorerTxLink: 'https://etherscan.io/tx/',
114
+ relatedAssetKey: null,
115
+ isPrimary: true,
116
+ isChainSpecific: true,
117
+ },
118
+ };
119
+ // Order of these is deliberately shuffled to test sorting is preserved
120
+ const mockSortedAssetIds = [
121
+ 'eip155:1/erc20:0xeeecd285f60e802ecb6d8d8d37790c887f9a4b33',
122
+ 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f',
123
+ 'eip155:1/erc20:0xeed3ae7b0f8b5b9bb8c035a9941382b1822671cd',
124
+ 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c',
125
+ 'eip155:1/erc20:0xeee0fe52299f2de8e2ed5111cd521ab67dcf0faf',
126
+ 'eip155:1/erc20:0xeeda34a377dd0ca676b9511ee1324974fa8d980d',
127
+ 'bip122:000000000019d6689c085ae165831e93/slip44:0', // BTC
128
+ ];
129
+ (0, vitest_1.describe)('assetData', () => {
130
+ (0, vitest_1.it)('can encode and decode asset data as a complete round trip', () => {
131
+ const encodedAssetData = (0, encodeAssetData_1.encodeAssetData)(mockSortedAssetIds, mockGeneratedAssetData);
132
+ const { assetData, sortedAssetIds } = (0, decodeAssetData_1.decodeAssetData)(encodedAssetData);
133
+ (0, vitest_1.expect)(assetData).toEqual(mockGeneratedAssetData);
134
+ (0, vitest_1.expect)(sortedAssetIds).toEqual(mockSortedAssetIds);
135
+ });
136
+ });
@@ -0,0 +1,24 @@
1
+ import type { Asset } from '@shapeshiftoss/types';
2
+ export declare const ethereum: Readonly<Asset>;
3
+ export declare const bitcoin: Readonly<Asset>;
4
+ export declare const bitcoincash: Readonly<Asset>;
5
+ export declare const dogecoin: Readonly<Asset>;
6
+ export declare const litecoin: Readonly<Asset>;
7
+ export declare const atom: Readonly<Asset>;
8
+ export declare const avax: Readonly<Asset>;
9
+ export declare const thorchain: Readonly<Asset>;
10
+ export declare const tcy: Readonly<Asset>;
11
+ export declare const ruji: Readonly<Asset>;
12
+ export declare const maya: Readonly<Asset>;
13
+ export declare const mayachain: Readonly<Asset>;
14
+ export declare const optimism: Readonly<Asset>;
15
+ export declare const bnbsmartchain: Readonly<Asset>;
16
+ export declare const polygon: Readonly<Asset>;
17
+ export declare const gnosis: Readonly<Asset>;
18
+ export declare const arbitrum: Readonly<Asset>;
19
+ export declare const arbitrumNova: Readonly<Asset>;
20
+ export declare const base: Readonly<Asset>;
21
+ export declare const monad: Readonly<Asset>;
22
+ export declare const solana: Readonly<Asset>;
23
+ export declare const tron: Readonly<Asset>;
24
+ export declare const sui: Readonly<Asset>;
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.sui = exports.tron = exports.solana = exports.monad = exports.base = exports.arbitrumNova = exports.arbitrum = exports.gnosis = exports.polygon = exports.bnbsmartchain = exports.optimism = exports.mayachain = exports.maya = exports.ruji = exports.tcy = exports.thorchain = exports.avax = exports.atom = exports.litecoin = exports.dogecoin = exports.bitcoincash = exports.bitcoin = exports.ethereum = void 0;
27
+ const caip = __importStar(require("@shapeshiftoss/caip"));
28
+ const mayaTokenAssetId = 'cosmos:mayachain-mainnet-v1/slip44:maya';
29
+ exports.ethereum = Object.freeze({
30
+ assetId: caip.ethAssetId,
31
+ chainId: caip.ethChainId,
32
+ symbol: 'ETH',
33
+ name: 'Ethereum',
34
+ networkName: 'Ethereum',
35
+ precision: 18,
36
+ color: '#5C6BC0',
37
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png',
38
+ explorer: 'https://etherscan.io',
39
+ explorerAddressLink: 'https://etherscan.io/address/',
40
+ explorerTxLink: 'https://etherscan.io/tx/',
41
+ relatedAssetKey: 'eip155:1/slip44:60',
42
+ });
43
+ exports.bitcoin = Object.freeze({
44
+ assetId: caip.btcAssetId,
45
+ chainId: caip.btcChainId,
46
+ symbol: 'BTC',
47
+ name: 'Bitcoin',
48
+ networkName: 'Bitcoin',
49
+ precision: 8,
50
+ color: '#FF9800',
51
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/bitcoin/info/logo.png',
52
+ explorer: 'https://live.blockcypher.com',
53
+ explorerAddressLink: 'https://live.blockcypher.com/btc/address/',
54
+ explorerTxLink: 'https://live.blockcypher.com/btc/tx/',
55
+ relatedAssetKey: null,
56
+ });
57
+ exports.bitcoincash = Object.freeze({
58
+ assetId: caip.bchAssetId,
59
+ chainId: caip.bchChainId,
60
+ symbol: 'BCH',
61
+ name: 'Bitcoin Cash',
62
+ networkName: 'Bitcoin Cash',
63
+ precision: 8,
64
+ color: '#8BC34A',
65
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/bitcoincash/info/logo.png',
66
+ explorer: 'https://blockchair.com',
67
+ explorerAddressLink: 'https://blockchair.com/bitcoin-cash/address/',
68
+ explorerTxLink: 'https://blockchair.com/bitcoin-cash/transaction/',
69
+ relatedAssetKey: null,
70
+ });
71
+ exports.dogecoin = Object.freeze({
72
+ assetId: caip.dogeAssetId,
73
+ chainId: caip.dogeChainId,
74
+ symbol: 'DOGE',
75
+ name: 'Dogecoin',
76
+ networkName: 'Dogecoin',
77
+ precision: 8,
78
+ color: '#FFC107',
79
+ icon: 'https://assets.coingecko.com/coins/images/5/large/dogecoin.png?1696501409',
80
+ explorer: 'https://live.blockcypher.com',
81
+ explorerAddressLink: 'https://live.blockcypher.com/doge/address/',
82
+ explorerTxLink: 'https://live.blockcypher.com/doge/tx/',
83
+ relatedAssetKey: null,
84
+ });
85
+ exports.litecoin = Object.freeze({
86
+ assetId: caip.ltcAssetId,
87
+ chainId: caip.ltcChainId,
88
+ symbol: 'LTC',
89
+ name: 'Litecoin',
90
+ networkName: 'Litecoin',
91
+ precision: 8,
92
+ color: '#B8B8B8',
93
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/litecoin/info/logo.png',
94
+ explorer: 'https://live.blockcypher.com',
95
+ explorerAddressLink: 'https://live.blockcypher.com/ltc/address/',
96
+ explorerTxLink: 'https://live.blockcypher.com/ltc/tx/',
97
+ relatedAssetKey: null,
98
+ });
99
+ exports.atom = Object.freeze({
100
+ assetId: caip.cosmosAssetId,
101
+ chainId: caip.cosmosChainId,
102
+ symbol: 'ATOM',
103
+ name: 'Cosmos',
104
+ networkName: 'Cosmos',
105
+ precision: 6,
106
+ color: '#303F9F',
107
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/cosmos/info/logo.png',
108
+ explorer: 'https://www.mintscan.io/cosmos',
109
+ explorerAddressLink: 'https://www.mintscan.io/cosmos/account/',
110
+ explorerTxLink: 'https://www.mintscan.io/cosmos/txs/',
111
+ relatedAssetKey: null,
112
+ });
113
+ exports.avax = Object.freeze({
114
+ assetId: caip.avalancheAssetId,
115
+ chainId: caip.avalancheChainId,
116
+ name: 'Avalanche',
117
+ networkName: 'Avalanche C-Chain',
118
+ symbol: 'AVAX',
119
+ precision: 18,
120
+ color: '#FFFFFF',
121
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/avalanchec/info/logo.png',
122
+ explorer: 'https://snowtrace.dev',
123
+ explorerAddressLink: 'https://snowtrace.dev/address/',
124
+ explorerTxLink: 'https://snowtrace.dev/tx/',
125
+ relatedAssetKey: null,
126
+ });
127
+ exports.thorchain = Object.freeze({
128
+ assetId: caip.thorchainAssetId,
129
+ chainId: caip.thorchainChainId,
130
+ name: 'THORChain',
131
+ networkName: 'THORChain',
132
+ symbol: 'RUNE',
133
+ precision: 8,
134
+ color: '#33FF99',
135
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/thorchain/info/logo.png',
136
+ explorer: 'https://viewblock.io/thorchain',
137
+ explorerAddressLink: 'https://viewblock.io/thorchain/address/',
138
+ explorerTxLink: 'https://viewblock.io/thorchain/tx/',
139
+ relatedAssetKey: null,
140
+ });
141
+ exports.tcy = Object.freeze({
142
+ assetId: caip.tcyAssetId,
143
+ chainId: caip.thorchainChainId,
144
+ name: 'TCY',
145
+ networkName: 'THORChain',
146
+ symbol: 'TCY',
147
+ precision: 8,
148
+ color: '#33FF99',
149
+ icon: 'https://raw.githubusercontent.com/shapeshift/web/develop/src/assets/tcy-icon.png',
150
+ explorer: 'https://viewblock.io/thorchain',
151
+ explorerAddressLink: 'https://viewblock.io/thorchain/address/',
152
+ explorerTxLink: 'https://viewblock.io/thorchain/tx/',
153
+ relatedAssetKey: null,
154
+ });
155
+ exports.ruji = Object.freeze({
156
+ assetId: caip.rujiAssetId,
157
+ chainId: caip.thorchainChainId,
158
+ name: 'Rujira',
159
+ networkName: 'THORChain',
160
+ symbol: 'RUJI',
161
+ precision: 8,
162
+ color: '#D800D8',
163
+ icon: 'https://raw.githubusercontent.com/shapeshift/web/develop/src/assets/ruji-icon.png',
164
+ explorer: 'https://viewblock.io/thorchain',
165
+ explorerAddressLink: 'https://viewblock.io/thorchain/address/',
166
+ explorerTxLink: 'https://viewblock.io/thorchain/tx/',
167
+ relatedAssetKey: null,
168
+ });
169
+ exports.maya = Object.freeze({
170
+ assetId: mayaTokenAssetId,
171
+ chainId: caip.mayachainChainId,
172
+ name: 'MAYA',
173
+ networkName: 'MAYAChain',
174
+ symbol: 'MAYA',
175
+ precision: 4,
176
+ color: '#00FFA0',
177
+ icon: 'https://raw.githubusercontent.com/shapeshift/web/develop/src/assets/maya.png',
178
+ explorer: 'https://mayascan.org',
179
+ explorerAddressLink: 'https://mayascan.org/address/',
180
+ explorerTxLink: 'https://mayascan.org/tx/',
181
+ relatedAssetKey: null,
182
+ });
183
+ exports.mayachain = Object.freeze({
184
+ assetId: caip.mayachainAssetId,
185
+ chainId: caip.mayachainChainId,
186
+ name: 'MAYAChain',
187
+ networkName: 'MAYAChain',
188
+ symbol: 'CACAO',
189
+ precision: 10,
190
+ color: '#63FDD9',
191
+ icon: 'https://raw.githubusercontent.com/shapeshift/web/develop/src/assets/cacao.png',
192
+ networkIcon: 'https://raw.githubusercontent.com/shapeshift/web/develop/src/assets/mayachain.png',
193
+ explorer: 'https://mayascan.org',
194
+ explorerAddressLink: 'https://mayascan.org/address/',
195
+ explorerTxLink: 'https://mayascan.org/tx/',
196
+ relatedAssetKey: null,
197
+ });
198
+ exports.optimism = Object.freeze({
199
+ assetId: caip.optimismAssetId,
200
+ chainId: caip.optimismChainId,
201
+ name: 'Ethereum',
202
+ networkName: 'Optimism',
203
+ symbol: 'ETH',
204
+ precision: 18,
205
+ color: '#5C6BC0',
206
+ networkColor: '#FC0424',
207
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png',
208
+ networkIcon: 'https://assets.coingecko.com/coins/images/25244/large/Optimism.png?1660904599',
209
+ explorer: 'https://optimistic.etherscan.io',
210
+ explorerAddressLink: 'https://optimistic.etherscan.io/address/',
211
+ explorerTxLink: 'https://optimistic.etherscan.io/tx/',
212
+ relatedAssetKey: 'eip155:1/slip44:60',
213
+ });
214
+ exports.bnbsmartchain = Object.freeze({
215
+ assetId: caip.bscAssetId,
216
+ chainId: caip.bscChainId,
217
+ name: 'BNB',
218
+ networkName: 'BNB Smart Chain',
219
+ symbol: 'BNB',
220
+ precision: 18,
221
+ color: '#F0B90B',
222
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/binance/info/logo.png',
223
+ explorer: 'https://bscscan.com',
224
+ explorerAddressLink: 'https://bscscan.com/address/',
225
+ explorerTxLink: 'https://bscscan.com/tx/',
226
+ relatedAssetKey: null,
227
+ });
228
+ exports.polygon = Object.freeze({
229
+ assetId: caip.polygonAssetId,
230
+ chainId: caip.polygonChainId,
231
+ name: 'Polygon Ecosystem Token',
232
+ networkName: 'Polygon',
233
+ symbol: 'POL',
234
+ precision: 18,
235
+ color: '#8f00ff',
236
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/polygon/info/logo.png',
237
+ explorer: 'https://polygonscan.com/',
238
+ explorerAddressLink: 'https://polygonscan.com/address/',
239
+ explorerTxLink: 'https://polygonscan.com/tx/',
240
+ relatedAssetKey: null,
241
+ });
242
+ exports.gnosis = Object.freeze({
243
+ assetId: caip.gnosisAssetId,
244
+ chainId: caip.gnosisChainId,
245
+ name: 'xDAI',
246
+ networkName: 'Gnosis',
247
+ symbol: 'xDAI',
248
+ precision: 18,
249
+ color: '#33765c',
250
+ icon: 'https://assets.coingecko.com/coins/images/11062/large/Identity-Primary-DarkBG.png?1638372986',
251
+ networkIcon: 'https://assets.coingecko.com/asset_platforms/images/11062/large/Aatar_green_white.png?1643204471',
252
+ explorer: 'https://gnosis.blockscout.com/',
253
+ explorerAddressLink: 'https://gnosis.blockscout.com/address/',
254
+ explorerTxLink: 'https://gnosis.blockscout.com/tx/',
255
+ relatedAssetKey: null,
256
+ });
257
+ exports.arbitrum = Object.freeze({
258
+ assetId: caip.arbitrumAssetId,
259
+ chainId: caip.arbitrumChainId,
260
+ name: 'Ethereum',
261
+ networkName: 'Arbitrum One',
262
+ symbol: 'ETH',
263
+ precision: 18,
264
+ color: '#5C6BC0',
265
+ networkColor: '#213147',
266
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png',
267
+ networkIcon: 'https://raw.githubusercontent.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/arbitrum/info/logo.png',
268
+ explorer: 'https://arbiscan.io',
269
+ explorerAddressLink: 'https://arbiscan.io/address/',
270
+ explorerTxLink: 'https://arbiscan.io/tx/',
271
+ relatedAssetKey: 'eip155:1/slip44:60',
272
+ });
273
+ exports.arbitrumNova = Object.freeze({
274
+ assetId: caip.arbitrumNovaAssetId,
275
+ chainId: caip.arbitrumNovaChainId,
276
+ name: 'Ethereum',
277
+ networkName: 'Arbitrum Nova',
278
+ symbol: 'ETH',
279
+ precision: 18,
280
+ color: '#5C6BC0',
281
+ networkColor: '#E67408',
282
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png',
283
+ networkIcon: 'https://assets.coingecko.com/asset_platforms/images/93/large/AN_logomark.png?1695026131',
284
+ explorer: 'https://nova.arbiscan.io',
285
+ explorerAddressLink: 'https://nova.arbiscan.io/address/',
286
+ explorerTxLink: 'https://nova.arbiscan.io/tx/',
287
+ relatedAssetKey: 'eip155:1/slip44:60',
288
+ });
289
+ exports.base = Object.freeze({
290
+ assetId: caip.baseAssetId,
291
+ chainId: caip.baseChainId,
292
+ name: 'Ethereum',
293
+ networkName: 'Base',
294
+ symbol: 'ETH',
295
+ precision: 18,
296
+ color: '#5C6BC0',
297
+ networkColor: '#0052FF',
298
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png',
299
+ networkIcon: 'https://rawcdn.githack.com/base-org/brand-kit/8984fe6e08be3058fd7cf5cd0b201f8b92b5a70e/logo/symbol/Base_Symbol_Blue.png',
300
+ explorer: 'https://basescan.org',
301
+ explorerAddressLink: 'https://basescan.org/address/',
302
+ explorerTxLink: 'https://basescan.org/tx/',
303
+ relatedAssetKey: 'eip155:1/slip44:60',
304
+ });
305
+ exports.monad = Object.freeze({
306
+ assetId: caip.monadAssetId,
307
+ chainId: caip.monadChainId,
308
+ name: 'Monad',
309
+ networkName: 'Monad',
310
+ symbol: 'MON',
311
+ precision: 18,
312
+ color: '#3B82F6',
313
+ networkColor: '#3B82F6',
314
+ icon: 'https://assets.coingecko.com/coins/images/38927/standard/monad.png?1764042736',
315
+ networkIcon: 'https://assets.coingecko.com/coins/images/38927/standard/monad.png?1764042736',
316
+ explorer: 'https://monadvision.com',
317
+ explorerAddressLink: 'https://monadvision.com/address/',
318
+ explorerTxLink: 'https://monadvision.com/tx/',
319
+ relatedAssetKey: null,
320
+ });
321
+ exports.solana = Object.freeze({
322
+ assetId: caip.solAssetId,
323
+ chainId: caip.solanaChainId,
324
+ name: 'Solana',
325
+ networkName: 'Solana',
326
+ symbol: 'SOL',
327
+ precision: 9,
328
+ color: '#9971d8',
329
+ networkColor: '#9971d8',
330
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/426526def2f327476e868ecb902c515ab17518af/blockchains/solana/info/logo.png',
331
+ explorer: 'https://explorer.solana.com',
332
+ explorerAddressLink: 'https://explorer.solana.com/address/',
333
+ explorerTxLink: 'https://explorer.solana.com/tx/',
334
+ relatedAssetKey: null,
335
+ });
336
+ exports.tron = Object.freeze({
337
+ assetId: caip.tronAssetId,
338
+ chainId: caip.tronChainId,
339
+ name: 'Tron',
340
+ networkName: 'Tron',
341
+ symbol: 'TRX',
342
+ precision: 6,
343
+ color: '#FF0013',
344
+ networkColor: '#FF0013',
345
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/b7a5f12d893fcf58e0eb1dd64478f076857b720b/blockchains/tron/info/logo.png',
346
+ explorer: 'https://tronscan.org',
347
+ explorerAddressLink: 'https://tronscan.org/#/address/',
348
+ explorerTxLink: 'https://tronscan.org/#/transaction/',
349
+ relatedAssetKey: null,
350
+ });
351
+ exports.sui = Object.freeze({
352
+ assetId: caip.suiAssetId,
353
+ chainId: caip.suiChainId,
354
+ name: 'Sui',
355
+ networkName: 'Sui',
356
+ symbol: 'SUI',
357
+ precision: 9,
358
+ color: '#6fbcf0',
359
+ networkColor: '#6fbcf0',
360
+ icon: 'https://assets.coingecko.com/coins/images/26375/large/sui_asset.jpeg?1727791290',
361
+ explorer: 'https://suiscan.xyz/mainnet',
362
+ explorerAddressLink: 'https://suiscan.xyz/mainnet/account/',
363
+ explorerTxLink: 'https://suiscan.xyz/mainnet/tx/',
364
+ relatedAssetKey: null,
365
+ });
@@ -0,0 +1 @@
1
+ export declare const FIELDS: readonly ["assetIdx", "name", "precision", "color", "icon", "symbol", "relatedAssetKey", "isPool"];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIELDS = void 0;
4
+ exports.FIELDS = [
5
+ 'assetIdx',
6
+ 'name',
7
+ 'precision',
8
+ 'color',
9
+ 'icon',
10
+ 'symbol',
11
+ 'relatedAssetKey',
12
+ 'isPool',
13
+ ];
@@ -0,0 +1,7 @@
1
+ import type { AssetId } from '@shapeshiftoss/caip';
2
+ import type { Asset } from '@shapeshiftoss/types';
3
+ import type { EncodedAssetData } from './types';
4
+ export declare const decodeAssetData: (encodedAssetData: EncodedAssetData, shouldAddNetworkName?: boolean) => {
5
+ assetData: Record<AssetId, Asset>;
6
+ sortedAssetIds: AssetId[];
7
+ };
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeAssetData = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const lodash_1 = require("lodash");
6
+ const assertUnreachable_1 = require("../assertUnreachable");
7
+ const constants_1 = require("./constants");
8
+ const getBaseAsset_1 = require("./getBaseAsset");
9
+ const decodeAssetId = (encodedAssetId, assetIdPrefixes) => {
10
+ // Performance sensitive. `lastIndexOf` + `substring` faster than `split`
11
+ const colonIndex = encodedAssetId.lastIndexOf(':');
12
+ const prefixIdx = Number(encodedAssetId.substring(0, colonIndex));
13
+ const assetReference = encodedAssetId.substring(colonIndex + 1);
14
+ // Performance sensitive. String concatenation faster than template literal
15
+ return assetIdPrefixes[prefixIdx] + ':' + assetReference;
16
+ };
17
+ const decodeAssetData = (encodedAssetData, shouldAddNetworkName = false) => {
18
+ const { assetIdPrefixes, encodedAssetIds, encodedAssets } = encodedAssetData;
19
+ const sortedAssetIds = encodedAssetIds.map(encodedAssetId => decodeAssetId(encodedAssetId, assetIdPrefixes));
20
+ const assetData = encodedAssets.reduce((acc, encodedAsset, idx) => {
21
+ const assetId = sortedAssetIds[idx];
22
+ const { chainId } = (0, caip_1.fromAssetId)(assetId);
23
+ const baseAsset = (0, getBaseAsset_1.getBaseAsset)(chainId);
24
+ // Initialize with default values for the chain
25
+ const asset = Object.assign({
26
+ assetId,
27
+ chainId,
28
+ symbol: '',
29
+ name: '',
30
+ precision: 0,
31
+ color: '',
32
+ icon: undefined,
33
+ explorer: '',
34
+ explorerAddressLink: '',
35
+ explorerTxLink: '',
36
+ relatedAssetKey: null,
37
+ }, (0, lodash_1.pick)(baseAsset, ['explorer', 'explorerAddressLink', 'explorerTxLink']));
38
+ if (assetId === baseAsset?.assetId) {
39
+ asset.networkName = baseAsset.networkName;
40
+ asset.networkIcon = baseAsset.networkIcon;
41
+ asset.networkColor = baseAsset.networkColor;
42
+ }
43
+ // Apply each field's decoded value to the asset
44
+ constants_1.FIELDS.forEach((field, fieldIdx) => {
45
+ const value = encodedAsset[fieldIdx];
46
+ switch (field) {
47
+ case 'icon': {
48
+ const iconOrIcons = value;
49
+ if (iconOrIcons.length === 1) {
50
+ asset.icon = iconOrIcons[0];
51
+ }
52
+ else if (iconOrIcons.length > 1) {
53
+ asset.icons = iconOrIcons;
54
+ }
55
+ break;
56
+ }
57
+ case 'relatedAssetKey': {
58
+ const assetIdx = value;
59
+ const relatedAssetId = assetIdx === null ? null : sortedAssetIds[assetIdx];
60
+ // if (relatedAssetId === undefined) throw Error()
61
+ if (relatedAssetId &&
62
+ relatedAssetId !== asset.assetId &&
63
+ baseAsset.networkName &&
64
+ shouldAddNetworkName) {
65
+ asset.name = `${asset.name} on ${baseAsset.networkName}`;
66
+ }
67
+ asset.relatedAssetKey = relatedAssetId;
68
+ asset.isPrimary = relatedAssetId === null || relatedAssetId === asset.assetId;
69
+ asset.isChainSpecific = relatedAssetId === null;
70
+ break;
71
+ }
72
+ case 'name':
73
+ asset.name = value;
74
+ break;
75
+ case 'precision':
76
+ asset.precision = value;
77
+ break;
78
+ case 'color':
79
+ asset.color = value;
80
+ break;
81
+ case 'symbol':
82
+ asset.symbol = value;
83
+ break;
84
+ case 'isPool': {
85
+ const isPool = value;
86
+ if (isPool) {
87
+ asset.isPool = true;
88
+ }
89
+ break;
90
+ }
91
+ case 'assetIdx':
92
+ // Skip assetIdx as we already have assetId
93
+ break;
94
+ default:
95
+ (0, assertUnreachable_1.assertUnreachable)(field);
96
+ }
97
+ });
98
+ acc[assetId] = asset;
99
+ return acc;
100
+ }, {});
101
+ return {
102
+ assetData,
103
+ sortedAssetIds,
104
+ };
105
+ };
106
+ exports.decodeAssetData = decodeAssetData;
@@ -0,0 +1,3 @@
1
+ import type { AssetId } from '@shapeshiftoss/caip';
2
+ import type { EncodedRelatedAssetIndex } from './types';
3
+ export declare const decodeRelatedAssetIndex: (encodedRelatedAssetIndex: EncodedRelatedAssetIndex, sortedAssetIds: AssetId[]) => Record<AssetId, AssetId[]>;