@shapeshiftoss/utils 1.0.0 → 1.0.1

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 (137) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/assertUnreachable.js +7 -0
  3. package/dist/cjs/assetData/assetData.test.js +136 -0
  4. package/dist/{assetData → cjs/assetData}/baseAssets.d.ts +1 -0
  5. package/dist/cjs/assetData/baseAssets.js +319 -0
  6. package/dist/cjs/assetData/constants.js +13 -0
  7. package/dist/{assetData → cjs/assetData}/decodeAssetData.d.ts +1 -1
  8. package/dist/cjs/assetData/decodeAssetData.js +106 -0
  9. package/dist/cjs/assetData/decodeRelatedAssetIndex.js +14 -0
  10. package/dist/cjs/assetData/encodeAssetData.js +72 -0
  11. package/dist/cjs/assetData/encodeRelatedAssetIndex.js +20 -0
  12. package/dist/cjs/assetData/getBaseAsset.js +48 -0
  13. package/dist/cjs/assetData/index.js +23 -0
  14. package/dist/cjs/assetData/relatedAssetIndex.test.js +32 -0
  15. package/dist/cjs/assetData/types.js +2 -0
  16. package/dist/cjs/baseUnits/baseUnits.js +32 -0
  17. package/dist/cjs/baseUnits/baseUnits.test.js +32 -0
  18. package/dist/cjs/basisPoints.js +48 -0
  19. package/dist/{bignumber → cjs/bignumber}/bignumber.d.ts +1 -1
  20. package/dist/cjs/bignumber/bignumber.js +27 -0
  21. package/dist/cjs/bignumber/bignumber.test.js +52 -0
  22. package/dist/cjs/chainIdToFeeAsset.js +9 -0
  23. package/dist/cjs/chainIdToFeeAssetId.js +48 -0
  24. package/dist/cjs/createThrottle.js +36 -0
  25. package/dist/cjs/getAssetNamespaceFromChainId.js +34 -0
  26. package/dist/cjs/getChainShortName.js +47 -0
  27. package/dist/cjs/getNativeFeeAssetReference.js +67 -0
  28. package/dist/cjs/historyTimeframe.js +36 -0
  29. package/dist/cjs/index.js +61 -0
  30. package/dist/cjs/makeAsset/makeAsset.js +45 -0
  31. package/dist/cjs/makeAsset/makeAsset.test.js +47 -0
  32. package/dist/cjs/package.json +1 -0
  33. package/dist/cjs/promises.js +9 -0
  34. package/dist/cjs/sha256.js +9 -0
  35. package/dist/{timeout.d.ts → cjs/timeout.d.ts} +4 -0
  36. package/dist/cjs/timeout.js +34 -0
  37. package/dist/{treasury.d.ts → cjs/treasury.d.ts} +1 -1
  38. package/dist/cjs/treasury.js +33 -0
  39. package/dist/cjs/unfreeze.js +10 -0
  40. package/dist/cjs/utxo.js +6 -0
  41. package/dist/esm/.tsbuildinfo +1 -0
  42. package/dist/esm/assertUnreachable.d.ts +1 -0
  43. package/dist/{assetData → esm/assetData}/assetData.test.js +16 -2
  44. package/dist/esm/assetData/baseAssets.d.ts +21 -0
  45. package/dist/{assetData → esm/assetData}/baseAssets.js +18 -4
  46. package/dist/esm/assetData/constants.d.ts +1 -0
  47. package/dist/esm/assetData/decodeAssetData.d.ts +7 -0
  48. package/dist/{assetData → esm/assetData}/decodeAssetData.js +12 -4
  49. package/dist/esm/assetData/decodeRelatedAssetIndex.d.ts +3 -0
  50. package/dist/esm/assetData/encodeAssetData.d.ts +4 -0
  51. package/dist/{assetData → esm/assetData}/encodeAssetData.js +2 -2
  52. package/dist/esm/assetData/encodeRelatedAssetIndex.d.ts +3 -0
  53. package/dist/esm/assetData/getBaseAsset.d.ts +3 -0
  54. package/dist/{assetData → esm/assetData}/getBaseAsset.js +2 -2
  55. package/dist/esm/assetData/index.d.ts +7 -0
  56. package/dist/esm/assetData/index.js +7 -0
  57. package/dist/esm/assetData/relatedAssetIndex.test.d.ts +1 -0
  58. package/dist/{assetData → esm/assetData}/relatedAssetIndex.test.js +2 -2
  59. package/dist/esm/assetData/types.d.ts +28 -0
  60. package/dist/esm/assetData/types.js +1 -0
  61. package/dist/esm/baseUnits/baseUnits.d.ts +5 -0
  62. package/dist/{baseUnits → esm/baseUnits}/baseUnits.js +1 -1
  63. package/dist/esm/baseUnits/baseUnits.test.d.ts +1 -0
  64. package/dist/{baseUnits → esm/baseUnits}/baseUnits.test.js +1 -1
  65. package/dist/esm/basisPoints.d.ts +23 -0
  66. package/dist/{basisPoints.js → esm/basisPoints.js} +1 -1
  67. package/dist/esm/bignumber/bignumber.d.ts +11 -0
  68. package/dist/{bignumber → esm/bignumber}/bignumber.js +1 -1
  69. package/dist/esm/bignumber/bignumber.test.d.ts +1 -0
  70. package/dist/{bignumber → esm/bignumber}/bignumber.test.js +1 -1
  71. package/dist/esm/chainIdToFeeAsset.d.ts +3 -0
  72. package/dist/{chainIdToFeeAsset.js → esm/chainIdToFeeAsset.js} +1 -1
  73. package/dist/esm/chainIdToFeeAssetId.d.ts +2 -0
  74. package/dist/{chainIdToFeeAssetId.js → esm/chainIdToFeeAssetId.js} +1 -1
  75. package/dist/esm/createThrottle.d.ts +9 -0
  76. package/dist/esm/getAssetNamespaceFromChainId.d.ts +3 -0
  77. package/dist/{getAssetNamespaceFromChainId.js → esm/getAssetNamespaceFromChainId.js} +1 -2
  78. package/dist/esm/getChainShortName.d.ts +2 -0
  79. package/dist/{getChainShortName.js → esm/getChainShortName.js} +1 -1
  80. package/dist/esm/getNativeFeeAssetReference.d.ts +2 -0
  81. package/dist/esm/historyTimeframe.d.ts +6 -0
  82. package/dist/{historyTimeframe.js → esm/historyTimeframe.js} +1 -1
  83. package/dist/esm/index.d.ts +24 -0
  84. package/dist/{index.js → esm/index.js} +19 -19
  85. package/dist/esm/makeAsset/makeAsset.d.ts +10 -0
  86. package/dist/{makeAsset → esm/makeAsset}/makeAsset.js +4 -2
  87. package/dist/esm/makeAsset/makeAsset.test.d.ts +1 -0
  88. package/dist/{makeAsset → esm/makeAsset}/makeAsset.test.js +1 -1
  89. package/dist/esm/promises.d.ts +4 -0
  90. package/dist/esm/sha256.d.ts +1 -0
  91. package/dist/esm/timeout.d.ts +7 -0
  92. package/dist/{timeout.js → esm/timeout.js} +11 -0
  93. package/dist/esm/treasury.d.ts +15 -0
  94. package/dist/{treasury.js → esm/treasury.js} +1 -1
  95. package/dist/esm/unfreeze.d.ts +4 -0
  96. package/dist/esm/utxo.d.ts +2 -0
  97. package/package.json +21 -9
  98. package/dist/assetData/index.js +0 -7
  99. /package/dist/{assertUnreachable.d.ts → cjs/assertUnreachable.d.ts} +0 -0
  100. /package/dist/{assetData → cjs/assetData}/assetData.test.d.ts +0 -0
  101. /package/dist/{assetData → cjs/assetData}/constants.d.ts +0 -0
  102. /package/dist/{assetData → cjs/assetData}/decodeRelatedAssetIndex.d.ts +0 -0
  103. /package/dist/{assetData → cjs/assetData}/encodeAssetData.d.ts +0 -0
  104. /package/dist/{assetData → cjs/assetData}/encodeRelatedAssetIndex.d.ts +0 -0
  105. /package/dist/{assetData → cjs/assetData}/getBaseAsset.d.ts +0 -0
  106. /package/dist/{assetData → cjs/assetData}/index.d.ts +0 -0
  107. /package/dist/{assetData → cjs/assetData}/relatedAssetIndex.test.d.ts +0 -0
  108. /package/dist/{assetData → cjs/assetData}/types.d.ts +0 -0
  109. /package/dist/{baseUnits → cjs/baseUnits}/baseUnits.d.ts +0 -0
  110. /package/dist/{baseUnits → cjs/baseUnits}/baseUnits.test.d.ts +0 -0
  111. /package/dist/{basisPoints.d.ts → cjs/basisPoints.d.ts} +0 -0
  112. /package/dist/{bignumber → cjs/bignumber}/bignumber.test.d.ts +0 -0
  113. /package/dist/{chainIdToFeeAsset.d.ts → cjs/chainIdToFeeAsset.d.ts} +0 -0
  114. /package/dist/{chainIdToFeeAssetId.d.ts → cjs/chainIdToFeeAssetId.d.ts} +0 -0
  115. /package/dist/{createThrottle.d.ts → cjs/createThrottle.d.ts} +0 -0
  116. /package/dist/{getAssetNamespaceFromChainId.d.ts → cjs/getAssetNamespaceFromChainId.d.ts} +0 -0
  117. /package/dist/{getChainShortName.d.ts → cjs/getChainShortName.d.ts} +0 -0
  118. /package/dist/{getNativeFeeAssetReference.d.ts → cjs/getNativeFeeAssetReference.d.ts} +0 -0
  119. /package/dist/{historyTimeframe.d.ts → cjs/historyTimeframe.d.ts} +0 -0
  120. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  121. /package/dist/{makeAsset → cjs/makeAsset}/makeAsset.d.ts +0 -0
  122. /package/dist/{makeAsset → cjs/makeAsset}/makeAsset.test.d.ts +0 -0
  123. /package/dist/{promises.d.ts → cjs/promises.d.ts} +0 -0
  124. /package/dist/{sha256.d.ts → cjs/sha256.d.ts} +0 -0
  125. /package/dist/{unfreeze.d.ts → cjs/unfreeze.d.ts} +0 -0
  126. /package/dist/{utxo.d.ts → cjs/utxo.d.ts} +0 -0
  127. /package/dist/{assertUnreachable.js → esm/assertUnreachable.js} +0 -0
  128. /package/dist/{assetData/types.js → esm/assetData/assetData.test.d.ts} +0 -0
  129. /package/dist/{assetData → esm/assetData}/constants.js +0 -0
  130. /package/dist/{assetData → esm/assetData}/decodeRelatedAssetIndex.js +0 -0
  131. /package/dist/{assetData → esm/assetData}/encodeRelatedAssetIndex.js +0 -0
  132. /package/dist/{createThrottle.js → esm/createThrottle.js} +0 -0
  133. /package/dist/{getNativeFeeAssetReference.js → esm/getNativeFeeAssetReference.js} +0 -0
  134. /package/dist/{promises.js → esm/promises.js} +0 -0
  135. /package/dist/{sha256.js → esm/sha256.js} +0 -0
  136. /package/dist/{unfreeze.js → esm/unfreeze.js} +0 -0
  137. /package/dist/{utxo.js → esm/utxo.js} +0 -0
@@ -0,0 +1,319 @@
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.solana = 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.solana = Object.freeze({
306
+ assetId: caip.solAssetId,
307
+ chainId: caip.solanaChainId,
308
+ name: 'Solana',
309
+ networkName: 'Solana',
310
+ symbol: 'SOL',
311
+ precision: 9,
312
+ color: '#9971d8',
313
+ networkColor: '#9971d8',
314
+ icon: 'https://rawcdn.githack.com/trustwallet/assets/426526def2f327476e868ecb902c515ab17518af/blockchains/solana/info/logo.png',
315
+ explorer: 'https://explorer.solana.com',
316
+ explorerAddressLink: 'https://explorer.solana.com/address/',
317
+ explorerTxLink: 'https://explorer.solana.com/tx/',
318
+ relatedAssetKey: null,
319
+ });
@@ -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
+ ];
@@ -1,7 +1,7 @@
1
1
  import type { AssetId } from '@shapeshiftoss/caip';
2
2
  import type { Asset } from '@shapeshiftoss/types';
3
3
  import type { EncodedAssetData } from './types';
4
- export declare const decodeAssetData: (encodedAssetData: EncodedAssetData) => {
4
+ export declare const decodeAssetData: (encodedAssetData: EncodedAssetData, shouldAddNetworkName?: boolean) => {
5
5
  assetData: Record<AssetId, Asset>;
6
6
  sortedAssetIds: AssetId[];
7
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,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeRelatedAssetIndex = void 0;
4
+ const decodeRelatedAssetIndex = (encodedRelatedAssetIndex, sortedAssetIds) => {
5
+ const result = {};
6
+ for (let assetIdx = 0; assetIdx < sortedAssetIds.length; assetIdx++) {
7
+ const assetId = sortedAssetIds[assetIdx];
8
+ if (!encodedRelatedAssetIndex[assetIdx])
9
+ continue;
10
+ result[assetId] = encodedRelatedAssetIndex[assetIdx].map(innerAssetIdx => sortedAssetIds[innerAssetIdx]);
11
+ }
12
+ return result;
13
+ };
14
+ exports.decodeRelatedAssetIndex = decodeRelatedAssetIndex;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeAssetData = void 0;
4
+ const assertUnreachable_1 = require("../assertUnreachable");
5
+ const constants_1 = require("./constants");
6
+ const encodeAssetIds = (sortedAssetIds) => {
7
+ const assetIdPrefixes = [];
8
+ const encodedAssetIds = [];
9
+ for (const assetId of sortedAssetIds) {
10
+ // `indexOf` + `substring` faster than `split`
11
+ const colonIndex = assetId.lastIndexOf(':');
12
+ const prefix = assetId.substring(0, colonIndex);
13
+ const assetReference = assetId.substring(colonIndex + 1);
14
+ const prefixIdx = (() => {
15
+ const prefixIdx = assetIdPrefixes.indexOf(prefix);
16
+ if (prefixIdx !== -1) {
17
+ return prefixIdx;
18
+ }
19
+ else {
20
+ assetIdPrefixes.push(prefix);
21
+ return assetIdPrefixes.length - 1;
22
+ }
23
+ })();
24
+ encodedAssetIds.push(`${prefixIdx}:${assetReference}`);
25
+ }
26
+ return {
27
+ assetIdPrefixes,
28
+ encodedAssetIds,
29
+ };
30
+ };
31
+ const encodeField = (field, assetIdToAssetIdx, asset) => {
32
+ switch (field) {
33
+ case 'assetIdx':
34
+ return assetIdToAssetIdx[asset.assetId];
35
+ case 'name':
36
+ return asset.name;
37
+ case 'precision':
38
+ return asset.precision;
39
+ case 'color':
40
+ return asset.color;
41
+ case 'icon':
42
+ return (asset.icon ? [asset.icon] : asset.icons ?? []);
43
+ case 'symbol':
44
+ return asset.symbol;
45
+ case 'relatedAssetKey':
46
+ return (!asset.relatedAssetKey ? null : assetIdToAssetIdx[asset.relatedAssetKey]);
47
+ case 'isPool':
48
+ return (asset.isPool ? 1 : 0);
49
+ default:
50
+ return (0, assertUnreachable_1.assertUnreachable)(field);
51
+ }
52
+ };
53
+ const encodeAssetData = (sortedAssetIds, assetsById) => {
54
+ const { assetIdPrefixes, encodedAssetIds } = encodeAssetIds(sortedAssetIds);
55
+ const assetIdToAssetIdx = sortedAssetIds.reduce((acc, val, idx) => {
56
+ acc[val] = idx;
57
+ return acc;
58
+ }, {});
59
+ const encodedAssets = [];
60
+ for (let i = 0; i < encodedAssetIds.length; i++) {
61
+ const assetId = sortedAssetIds[i];
62
+ const asset = assetsById[assetId];
63
+ const record = constants_1.FIELDS.map(field => encodeField(field, assetIdToAssetIdx, asset));
64
+ encodedAssets.push(record);
65
+ }
66
+ return {
67
+ assetIdPrefixes,
68
+ encodedAssetIds,
69
+ encodedAssets,
70
+ };
71
+ };
72
+ exports.encodeAssetData = encodeAssetData;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeRelatedAssetIndex = void 0;
4
+ const encodeRelatedAssetIndex = (relatedAssetIndex, sortedAssetIds) => {
5
+ const assetIdToAssetIdx = sortedAssetIds.reduce((acc, val, idx) => {
6
+ acc[val] = idx;
7
+ return acc;
8
+ }, {});
9
+ const result = {};
10
+ for (const [assetId, relatedAssets] of Object.entries(relatedAssetIndex)) {
11
+ if (!relatedAssets.length)
12
+ continue;
13
+ const assetIdx = assetIdToAssetIdx[assetId];
14
+ result[assetIdx] = relatedAssets.map(assetId => {
15
+ return assetIdToAssetIdx[assetId];
16
+ });
17
+ }
18
+ return result;
19
+ };
20
+ exports.encodeRelatedAssetIndex = encodeRelatedAssetIndex;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBaseAsset = void 0;
4
+ const types_1 = require("@shapeshiftoss/types");
5
+ const assertUnreachable_1 = require("../assertUnreachable");
6
+ const baseAssets_1 = require("./baseAssets");
7
+ const getBaseAsset = (chainId) => {
8
+ const knownChainId = chainId;
9
+ switch (knownChainId) {
10
+ case types_1.KnownChainIds.EthereumMainnet:
11
+ return baseAssets_1.ethereum;
12
+ case types_1.KnownChainIds.AvalancheMainnet:
13
+ return baseAssets_1.avax;
14
+ case types_1.KnownChainIds.OptimismMainnet:
15
+ return baseAssets_1.optimism;
16
+ case types_1.KnownChainIds.BnbSmartChainMainnet:
17
+ return baseAssets_1.bnbsmartchain;
18
+ case types_1.KnownChainIds.PolygonMainnet:
19
+ return baseAssets_1.polygon;
20
+ case types_1.KnownChainIds.GnosisMainnet:
21
+ return baseAssets_1.gnosis;
22
+ case types_1.KnownChainIds.ArbitrumMainnet:
23
+ return baseAssets_1.arbitrum;
24
+ case types_1.KnownChainIds.ArbitrumNovaMainnet:
25
+ return baseAssets_1.arbitrumNova;
26
+ case types_1.KnownChainIds.BaseMainnet:
27
+ return baseAssets_1.base;
28
+ case types_1.KnownChainIds.SolanaMainnet:
29
+ return baseAssets_1.solana;
30
+ case types_1.KnownChainIds.BitcoinMainnet:
31
+ return baseAssets_1.bitcoin;
32
+ case types_1.KnownChainIds.BitcoinCashMainnet:
33
+ return baseAssets_1.bitcoincash;
34
+ case types_1.KnownChainIds.DogecoinMainnet:
35
+ return baseAssets_1.dogecoin;
36
+ case types_1.KnownChainIds.LitecoinMainnet:
37
+ return baseAssets_1.litecoin;
38
+ case types_1.KnownChainIds.CosmosMainnet:
39
+ return baseAssets_1.atom;
40
+ case types_1.KnownChainIds.ThorchainMainnet:
41
+ return baseAssets_1.thorchain;
42
+ case types_1.KnownChainIds.MayachainMainnet:
43
+ return baseAssets_1.mayachain;
44
+ default:
45
+ return (0, assertUnreachable_1.assertUnreachable)(knownChainId);
46
+ }
47
+ };
48
+ exports.getBaseAsset = getBaseAsset;
@@ -0,0 +1,23 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./encodeAssetData"), exports);
18
+ __exportStar(require("./decodeAssetData"), exports);
19
+ __exportStar(require("./baseAssets"), exports);
20
+ __exportStar(require("./getBaseAsset"), exports);
21
+ __exportStar(require("./encodeRelatedAssetIndex"), exports);
22
+ __exportStar(require("./decodeRelatedAssetIndex"), exports);
23
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const decodeRelatedAssetIndex_1 = require("./decodeRelatedAssetIndex");
5
+ const encodeRelatedAssetIndex_1 = require("./encodeRelatedAssetIndex");
6
+ // Order of these is deliberately shuffled to test sorting is preserved
7
+ const mockSortedAssetIds = [
8
+ 'eip155:1/erc20:0xeeecd285f60e802ecb6d8d8d37790c887f9a4b33',
9
+ 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f',
10
+ 'eip155:1/erc20:0xeed3ae7b0f8b5b9bb8c035a9941382b1822671cd',
11
+ 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c',
12
+ 'eip155:1/erc20:0xeee0fe52299f2de8e2ed5111cd521ab67dcf0faf',
13
+ 'eip155:1/erc20:0xeeda34a377dd0ca676b9511ee1324974fa8d980d',
14
+ 'bip122:000000000019d6689c085ae165831e93/slip44:0', // BTC
15
+ ];
16
+ const mockRelatedAssetIndex = {
17
+ 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f': [
18
+ 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f',
19
+ 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c',
20
+ ],
21
+ 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c': [
22
+ 'eip155:1/erc20:0xeeee2a2e650697d2a8e8bc990c2f3d04203be06f',
23
+ 'eip155:1/erc20:0xf073bac22dab7faf4a3dd6c6189a70d54110525c',
24
+ ],
25
+ };
26
+ (0, vitest_1.describe)('relatedAssetIndex', () => {
27
+ (0, vitest_1.it)('can encode and decode related asset index as a complete round trip', () => {
28
+ const encodedRelatedAssetIndex = (0, encodeRelatedAssetIndex_1.encodeRelatedAssetIndex)(mockRelatedAssetIndex, mockSortedAssetIds);
29
+ const decodedRelatedAssetIndex = (0, decodeRelatedAssetIndex_1.decodeRelatedAssetIndex)(encodedRelatedAssetIndex, mockSortedAssetIds);
30
+ (0, vitest_1.expect)(decodedRelatedAssetIndex).toEqual(mockRelatedAssetIndex);
31
+ });
32
+ });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });