@shapeshiftoss/caip 8.16.4 → 8.16.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/accountId/accountId.d.ts +29 -0
  3. package/dist/cjs/accountId/accountId.js +44 -0
  4. package/dist/cjs/accountId/accountId.test.d.ts +1 -0
  5. package/dist/cjs/accountId/accountId.test.js +109 -0
  6. package/dist/cjs/adapters/banxa/index.d.ts +15 -0
  7. package/dist/cjs/adapters/banxa/index.js +153 -0
  8. package/dist/cjs/adapters/coinbase/generate.d.ts +1 -0
  9. package/dist/cjs/adapters/coinbase/generate.js +9 -0
  10. package/dist/cjs/adapters/coinbase/generated/adapter.json +153 -0
  11. package/dist/cjs/adapters/coinbase/generated/index.d.ts +2 -0
  12. package/dist/cjs/adapters/coinbase/generated/index.js +8 -0
  13. package/dist/cjs/adapters/coinbase/index.d.ts +3 -0
  14. package/dist/cjs/adapters/coinbase/index.js +16 -0
  15. package/dist/cjs/adapters/coinbase/utils.d.ts +12 -0
  16. package/dist/cjs/adapters/coinbase/utils.js +55 -0
  17. package/dist/cjs/adapters/coincap/generate.d.ts +1 -0
  18. package/dist/cjs/adapters/coincap/generate.js +10 -0
  19. package/dist/cjs/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  20. package/dist/cjs/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  21. package/dist/cjs/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  22. package/dist/cjs/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  23. package/dist/cjs/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  24. package/dist/cjs/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  25. package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  26. package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  27. package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  28. package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  29. package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  30. package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  31. package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  32. package/dist/cjs/adapters/coincap/generated/index.d.ts +15 -0
  33. package/dist/cjs/adapters/coincap/generated/index.js +34 -0
  34. package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  35. package/dist/cjs/adapters/coincap/index.d.ts +4 -0
  36. package/dist/cjs/adapters/coincap/index.js +44 -0
  37. package/dist/cjs/adapters/coincap/index.test.d.ts +1 -0
  38. package/dist/cjs/adapters/coincap/index.test.js +90 -0
  39. package/dist/cjs/adapters/coincap/utils.d.ts +24 -0
  40. package/dist/cjs/adapters/coincap/utils.js +146 -0
  41. package/dist/cjs/adapters/coincap/utils.test.d.ts +4 -0
  42. package/dist/cjs/adapters/coincap/utils.test.js +173 -0
  43. package/dist/cjs/adapters/coingecko/generate.d.ts +1 -0
  44. package/dist/cjs/adapters/coingecko/generate.js +10 -0
  45. package/dist/cjs/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  46. package/dist/cjs/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  47. package/dist/cjs/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  48. package/dist/cjs/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  49. package/dist/cjs/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  50. package/dist/cjs/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  51. package/dist/cjs/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  52. package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  53. package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  54. package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  55. package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  56. package/dist/cjs/adapters/coingecko/generated/eip155_143/adapter.json +1 -0
  57. package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  58. package/dist/cjs/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  59. package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  60. package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  61. package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  62. package/dist/cjs/adapters/coingecko/generated/index.d.ts +21 -0
  63. package/dist/cjs/adapters/coingecko/generated/index.js +46 -0
  64. package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  65. package/dist/cjs/adapters/coingecko/generated/sui_35834a8a/adapter.json +1 -0
  66. package/dist/cjs/adapters/coingecko/generated/tron_0x2b6653dc/adapter.json +1 -0
  67. package/dist/cjs/adapters/coingecko/index.d.ts +29 -0
  68. package/dist/cjs/adapters/coingecko/index.js +188 -0
  69. package/dist/cjs/adapters/coingecko/index.test.d.ts +1 -0
  70. package/dist/cjs/adapters/coingecko/index.test.js +297 -0
  71. package/dist/cjs/adapters/coingecko/utils.d.ts +11 -0
  72. package/dist/cjs/adapters/coingecko/utils.js +235 -0
  73. package/dist/cjs/adapters/coingecko/utils.test.d.ts +1 -0
  74. package/dist/cjs/adapters/coingecko/utils.test.js +202 -0
  75. package/dist/cjs/adapters/index.d.ts +6 -0
  76. package/dist/cjs/adapters/index.js +22 -0
  77. package/dist/cjs/adapters/mtpelerin/index.d.ts +10 -0
  78. package/dist/cjs/adapters/mtpelerin/index.js +127 -0
  79. package/dist/cjs/adapters/onramper/index.d.ts +6 -0
  80. package/dist/cjs/adapters/onramper/index.js +39 -0
  81. package/dist/cjs/assetId/assetId.d.ts +36 -0
  82. package/dist/cjs/assetId/assetId.js +120 -0
  83. package/dist/cjs/assetId/assetId.test.d.ts +1 -0
  84. package/dist/cjs/assetId/assetId.test.js +324 -0
  85. package/dist/cjs/chainId/chainId.d.ts +20 -0
  86. package/dist/cjs/chainId/chainId.js +25 -0
  87. package/dist/cjs/chainId/chainId.test.d.ts +1 -0
  88. package/dist/cjs/chainId/chainId.test.js +90 -0
  89. package/dist/cjs/constants.d.ts +135 -0
  90. package/dist/cjs/constants.js +192 -0
  91. package/dist/cjs/index.d.ts +7 -0
  92. package/dist/cjs/index.js +36 -0
  93. package/dist/cjs/package.json +1 -0
  94. package/dist/cjs/typeGuards.d.ts +16 -0
  95. package/dist/cjs/typeGuards.js +56 -0
  96. package/dist/cjs/utils.d.ts +33 -0
  97. package/dist/cjs/utils.js +56 -0
  98. package/dist/cjs/utils.test.d.ts +1 -0
  99. package/dist/cjs/utils.test.js +160 -0
  100. package/dist/esm/.tsbuildinfo +1 -0
  101. package/dist/esm/accountId/accountId.d.ts +29 -0
  102. package/dist/esm/accountId/accountId.js +39 -0
  103. package/dist/esm/accountId/accountId.test.d.ts +1 -0
  104. package/dist/esm/accountId/accountId.test.js +107 -0
  105. package/dist/esm/adapters/banxa/index.d.ts +15 -0
  106. package/dist/esm/adapters/banxa/index.js +143 -0
  107. package/dist/esm/adapters/coinbase/generate.d.ts +1 -0
  108. package/dist/esm/adapters/coinbase/generate.js +7 -0
  109. package/dist/esm/adapters/coinbase/generated/adapter.json +153 -0
  110. package/dist/esm/adapters/coinbase/generated/index.d.ts +2 -0
  111. package/dist/esm/adapters/coinbase/generated/index.js +2 -0
  112. package/dist/esm/adapters/coinbase/index.d.ts +3 -0
  113. package/dist/esm/adapters/coinbase/index.js +8 -0
  114. package/dist/esm/adapters/coinbase/utils.d.ts +12 -0
  115. package/dist/esm/adapters/coinbase/utils.js +46 -0
  116. package/dist/esm/adapters/coincap/generate.d.ts +1 -0
  117. package/dist/esm/adapters/coincap/generate.js +8 -0
  118. package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  119. package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  120. package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  121. package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  122. package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  123. package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  124. package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  125. package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  126. package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  127. package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  128. package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  129. package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  130. package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  131. package/dist/esm/adapters/coincap/generated/index.d.ts +15 -0
  132. package/dist/esm/adapters/coincap/generated/index.js +15 -0
  133. package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  134. package/dist/esm/adapters/coincap/index.d.ts +4 -0
  135. package/dist/esm/adapters/coincap/index.js +13 -0
  136. package/dist/esm/adapters/coincap/index.test.d.ts +1 -0
  137. package/dist/esm/adapters/coincap/index.test.js +88 -0
  138. package/dist/esm/adapters/coincap/utils.d.ts +24 -0
  139. package/dist/esm/adapters/coincap/utils.js +135 -0
  140. package/dist/esm/adapters/coincap/utils.test.d.ts +4 -0
  141. package/dist/esm/adapters/coincap/utils.test.js +168 -0
  142. package/dist/esm/adapters/coingecko/generate.d.ts +1 -0
  143. package/dist/esm/adapters/coingecko/generate.js +8 -0
  144. package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  145. package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  146. package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  147. package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  148. package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  149. package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  150. package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  151. package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  152. package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  153. package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  154. package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  155. package/dist/esm/adapters/coingecko/generated/eip155_143/adapter.json +1 -0
  156. package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  157. package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  158. package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  159. package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  160. package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  161. package/dist/esm/adapters/coingecko/generated/index.d.ts +21 -0
  162. package/dist/esm/adapters/coingecko/generated/index.js +21 -0
  163. package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  164. package/dist/esm/adapters/coingecko/generated/sui_35834a8a/adapter.json +1 -0
  165. package/dist/esm/adapters/coingecko/generated/tron_0x2b6653dc/adapter.json +1 -0
  166. package/dist/esm/adapters/coingecko/index.d.ts +29 -0
  167. package/dist/esm/adapters/coingecko/index.js +152 -0
  168. package/dist/esm/adapters/coingecko/index.test.d.ts +1 -0
  169. package/dist/esm/adapters/coingecko/index.test.js +295 -0
  170. package/dist/esm/adapters/coingecko/utils.d.ts +11 -0
  171. package/dist/esm/adapters/coingecko/utils.js +226 -0
  172. package/dist/esm/adapters/coingecko/utils.test.d.ts +1 -0
  173. package/dist/esm/adapters/coingecko/utils.test.js +197 -0
  174. package/dist/esm/adapters/index.d.ts +6 -0
  175. package/dist/esm/adapters/index.js +6 -0
  176. package/dist/esm/adapters/mtpelerin/index.d.ts +10 -0
  177. package/dist/esm/adapters/mtpelerin/index.js +121 -0
  178. package/dist/esm/adapters/onramper/index.d.ts +6 -0
  179. package/dist/esm/adapters/onramper/index.js +31 -0
  180. package/dist/esm/assetId/assetId.d.ts +36 -0
  181. package/dist/esm/assetId/assetId.js +114 -0
  182. package/dist/esm/assetId/assetId.test.d.ts +1 -0
  183. package/dist/esm/assetId/assetId.test.js +322 -0
  184. package/dist/esm/chainId/chainId.d.ts +20 -0
  185. package/dist/esm/chainId/chainId.js +20 -0
  186. package/dist/esm/chainId/chainId.test.d.ts +1 -0
  187. package/dist/esm/chainId/chainId.test.js +88 -0
  188. package/dist/esm/constants.d.ts +135 -0
  189. package/dist/esm/constants.js +188 -0
  190. package/dist/esm/index.d.ts +7 -0
  191. package/dist/esm/index.js +7 -0
  192. package/dist/esm/typeGuards.d.ts +16 -0
  193. package/dist/esm/typeGuards.js +44 -0
  194. package/dist/esm/utils.d.ts +33 -0
  195. package/dist/esm/utils.js +26 -0
  196. package/dist/esm/utils.test.d.ts +1 -0
  197. package/dist/esm/utils.test.js +158 -0
  198. package/package.json +1 -1
@@ -0,0 +1,226 @@
1
+ import axios from 'axios';
2
+ import fs from 'fs';
3
+ import { toAssetId } from '../../assetId/assetId.js';
4
+ import { arbitrumAssetId, arbitrumChainId, arbitrumNovaAssetId, arbitrumNovaChainId, ASSET_NAMESPACE, avalancheAssetId, avalancheChainId, baseAssetId, baseChainId, bchChainId, bscAssetId, bscChainId, btcChainId, CHAIN_NAMESPACE, CHAIN_REFERENCE, cosmosChainId, dogeChainId, ethAssetId, ethChainId, gnosisAssetId, gnosisChainId, ltcChainId, mayachainChainId, monadAssetId, monadChainId, optimismAssetId, optimismChainId, polygonAssetId, polygonChainId, solanaChainId, solAssetId, suiAssetId, suiChainId, thorchainChainId, tronAssetId, tronChainId, } from '../../constants.js';
5
+ import { bitcoinAssetMap, bitcoinCashAssetMap, cosmosAssetMap, dogecoinAssetMap, litecoinAssetMap, mayachainAssetMap, thorchainAssetMap, } from '../../utils.js';
6
+ import { CoingeckoAssetPlatform } from './index.js';
7
+ export const fetchData = async (URL) => (await axios.get(URL)).data;
8
+ export const parseData = (coins) => {
9
+ const assetMap = coins.reduce((prev, { id, platforms }) => {
10
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Ethereum)) {
11
+ try {
12
+ const assetId = toAssetId({
13
+ chainNamespace: CHAIN_NAMESPACE.Evm,
14
+ chainReference: CHAIN_REFERENCE.EthereumMainnet,
15
+ assetNamespace: 'erc20',
16
+ assetReference: platforms[CoingeckoAssetPlatform.Ethereum],
17
+ });
18
+ prev[ethChainId][assetId] = id;
19
+ }
20
+ catch {
21
+ // unable to create assetId, skip token
22
+ }
23
+ }
24
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Avalanche)) {
25
+ try {
26
+ const assetId = toAssetId({
27
+ chainNamespace: CHAIN_NAMESPACE.Evm,
28
+ chainReference: CHAIN_REFERENCE.AvalancheCChain,
29
+ assetNamespace: 'erc20',
30
+ assetReference: platforms[CoingeckoAssetPlatform.Avalanche],
31
+ });
32
+ prev[avalancheChainId][assetId] = id;
33
+ }
34
+ catch {
35
+ // unable to create assetId, skip token
36
+ }
37
+ }
38
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Optimism)) {
39
+ try {
40
+ const assetId = toAssetId({
41
+ chainNamespace: CHAIN_NAMESPACE.Evm,
42
+ chainReference: CHAIN_REFERENCE.OptimismMainnet,
43
+ assetNamespace: 'erc20',
44
+ assetReference: platforms[CoingeckoAssetPlatform.Optimism],
45
+ });
46
+ prev[optimismChainId][assetId] = id;
47
+ }
48
+ catch {
49
+ // unable to create assetId, skip token
50
+ }
51
+ }
52
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.BnbSmartChain)) {
53
+ try {
54
+ const assetId = toAssetId({
55
+ chainNamespace: CHAIN_NAMESPACE.Evm,
56
+ chainReference: CHAIN_REFERENCE.BnbSmartChainMainnet,
57
+ assetNamespace: 'erc20',
58
+ assetReference: platforms[CoingeckoAssetPlatform.BnbSmartChain],
59
+ });
60
+ prev[bscChainId][assetId] = id;
61
+ }
62
+ catch {
63
+ // unable to create assetId, skip token
64
+ }
65
+ }
66
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Polygon)) {
67
+ try {
68
+ const assetId = toAssetId({
69
+ chainNamespace: CHAIN_NAMESPACE.Evm,
70
+ chainReference: CHAIN_REFERENCE.PolygonMainnet,
71
+ assetNamespace: 'erc20',
72
+ assetReference: platforms[CoingeckoAssetPlatform.Polygon],
73
+ });
74
+ prev[polygonChainId][assetId] = id;
75
+ }
76
+ catch (err) {
77
+ // unable to create assetId, skip token
78
+ }
79
+ }
80
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Gnosis)) {
81
+ try {
82
+ const assetId = toAssetId({
83
+ chainNamespace: CHAIN_NAMESPACE.Evm,
84
+ chainReference: CHAIN_REFERENCE.GnosisMainnet,
85
+ assetNamespace: 'erc20',
86
+ assetReference: platforms[CoingeckoAssetPlatform.Gnosis],
87
+ });
88
+ prev[gnosisChainId][assetId] = id;
89
+ }
90
+ catch (err) {
91
+ // unable to create assetId, skip token
92
+ }
93
+ }
94
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Arbitrum)) {
95
+ try {
96
+ const assetId = toAssetId({
97
+ chainNamespace: CHAIN_NAMESPACE.Evm,
98
+ chainReference: CHAIN_REFERENCE.ArbitrumMainnet,
99
+ assetNamespace: 'erc20',
100
+ assetReference: platforms[CoingeckoAssetPlatform.Arbitrum],
101
+ });
102
+ prev[arbitrumChainId][assetId] = id;
103
+ }
104
+ catch (err) {
105
+ // unable to create assetId, skip token
106
+ }
107
+ }
108
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.ArbitrumNova)) {
109
+ try {
110
+ const assetId = toAssetId({
111
+ chainNamespace: CHAIN_NAMESPACE.Evm,
112
+ chainReference: CHAIN_REFERENCE.ArbitrumNovaMainnet,
113
+ assetNamespace: 'erc20',
114
+ assetReference: platforms[CoingeckoAssetPlatform.ArbitrumNova],
115
+ });
116
+ prev[arbitrumNovaChainId][assetId] = id;
117
+ }
118
+ catch (err) {
119
+ // unable to create assetId, skip token
120
+ }
121
+ }
122
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Base)) {
123
+ try {
124
+ const assetId = toAssetId({
125
+ chainNamespace: CHAIN_NAMESPACE.Evm,
126
+ chainReference: CHAIN_REFERENCE.BaseMainnet,
127
+ assetNamespace: 'erc20',
128
+ assetReference: platforms[CoingeckoAssetPlatform.Base],
129
+ });
130
+ prev[baseChainId][assetId] = id;
131
+ }
132
+ catch {
133
+ // unable to create assetId, skip token
134
+ }
135
+ }
136
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Solana)) {
137
+ try {
138
+ const assetId = toAssetId({
139
+ chainNamespace: CHAIN_NAMESPACE.Solana,
140
+ chainReference: CHAIN_REFERENCE.SolanaMainnet,
141
+ assetNamespace: 'token',
142
+ assetReference: platforms[CoingeckoAssetPlatform.Solana],
143
+ });
144
+ prev[solanaChainId][assetId] = id;
145
+ }
146
+ catch {
147
+ // unable to create assetId, skip token
148
+ }
149
+ }
150
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Tron)) {
151
+ try {
152
+ const assetId = toAssetId({
153
+ chainNamespace: CHAIN_NAMESPACE.Tron,
154
+ chainReference: CHAIN_REFERENCE.TronMainnet,
155
+ assetNamespace: 'trc20',
156
+ assetReference: platforms[CoingeckoAssetPlatform.Tron],
157
+ });
158
+ prev[tronChainId][assetId] = id;
159
+ }
160
+ catch {
161
+ // unable to create assetId, skip token
162
+ }
163
+ }
164
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Sui)) {
165
+ try {
166
+ const assetId = toAssetId({
167
+ chainNamespace: CHAIN_NAMESPACE.Sui,
168
+ chainReference: CHAIN_REFERENCE.SuiMainnet,
169
+ assetNamespace: ASSET_NAMESPACE.suiCoin,
170
+ assetReference: platforms[CoingeckoAssetPlatform.Sui],
171
+ });
172
+ prev[suiChainId][assetId] = id;
173
+ }
174
+ catch {
175
+ // unable to create assetId, skip token
176
+ }
177
+ }
178
+ if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Monad)) {
179
+ try {
180
+ const assetId = toAssetId({
181
+ chainNamespace: CHAIN_NAMESPACE.Evm,
182
+ chainReference: CHAIN_REFERENCE.MonadMainnet,
183
+ assetNamespace: 'erc20',
184
+ assetReference: platforms[CoingeckoAssetPlatform.Monad],
185
+ });
186
+ prev[monadChainId][assetId] = id;
187
+ }
188
+ catch {
189
+ // unable to create assetId, skip token
190
+ }
191
+ }
192
+ return prev;
193
+ }, {
194
+ [ethChainId]: { [ethAssetId]: 'ethereum' },
195
+ [avalancheChainId]: { [avalancheAssetId]: 'avalanche-2' },
196
+ [optimismChainId]: { [optimismAssetId]: 'ethereum' },
197
+ [bscChainId]: { [bscAssetId]: 'binancecoin' },
198
+ [polygonChainId]: { [polygonAssetId]: 'matic-network' },
199
+ [gnosisChainId]: { [gnosisAssetId]: 'xdai' },
200
+ [arbitrumChainId]: { [arbitrumAssetId]: 'ethereum' },
201
+ [arbitrumNovaChainId]: { [arbitrumNovaAssetId]: 'ethereum' },
202
+ [baseChainId]: { [baseAssetId]: 'ethereum' },
203
+ [monadChainId]: { [monadAssetId]: 'monad' },
204
+ [solanaChainId]: { [solAssetId]: 'solana' },
205
+ [tronChainId]: { [tronAssetId]: 'tron' },
206
+ [suiChainId]: { [suiAssetId]: 'sui' },
207
+ });
208
+ return {
209
+ ...assetMap,
210
+ [btcChainId]: bitcoinAssetMap,
211
+ [bchChainId]: bitcoinCashAssetMap,
212
+ [dogeChainId]: dogecoinAssetMap,
213
+ [ltcChainId]: litecoinAssetMap,
214
+ [cosmosChainId]: cosmosAssetMap,
215
+ [thorchainChainId]: thorchainAssetMap,
216
+ [mayachainChainId]: mayachainAssetMap,
217
+ };
218
+ };
219
+ export const writeFiles = async (data) => {
220
+ await Promise.all(Object.entries(data).map(async ([chainId, assets]) => {
221
+ const dirPath = `./src/adapters/coingecko/generated/${chainId}`.replace(':', '_');
222
+ await fs.promises.mkdir(dirPath, { recursive: true });
223
+ await fs.promises.writeFile(`${dirPath}/adapter.json`, JSON.stringify(assets));
224
+ }));
225
+ console.info('Generated CoinGecko AssetId adapter data.');
226
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,197 @@
1
+ import realFs from 'fs';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ import { bitcoinAssetMap, cosmosAssetMap } from '../../utils.js';
4
+ import { parseData, writeFiles } from './utils.js';
5
+ const makeEthMockCoingeckoResponse = () => ({
6
+ id: 'ethereum',
7
+ symbol: 'eth',
8
+ platforms: {},
9
+ });
10
+ const makeWethMockCoingeckoResponse = () => ({
11
+ id: 'weth',
12
+ symbol: 'weth',
13
+ name: 'WETH',
14
+ platforms: {
15
+ ethereum: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
16
+ 'optimistic-ethereum': '0x4200000000000000000000000000000000000006',
17
+ avalanche: '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab',
18
+ 'binance-smart-chain': '0x2170ed0880ac9a755fd29b2688956bd959f933f8',
19
+ 'polygon-pos': '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',
20
+ xdai: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1',
21
+ 'arbitrum-one': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
22
+ 'arbitrum-nova': '0x722e8bdd2ce80a4422e880164f2079488e115365',
23
+ base: '0x4200000000000000000000000000000000000006',
24
+ },
25
+ });
26
+ const makeAvalancheMockCoingeckoResponse = () => ({
27
+ id: 'avalanche-2',
28
+ symbol: 'avax',
29
+ platforms: {},
30
+ });
31
+ const makeFoxMockCoingeckoResponse = () => ({
32
+ id: 'shapeshift-fox-token',
33
+ symbol: 'fox',
34
+ platforms: {
35
+ ethereum: '0xc770eefad204b5180df6a14ee197d99d808ee52d',
36
+ },
37
+ });
38
+ const makeBtcMockCoingeckoResponse = () => ({
39
+ id: 'bitcoin',
40
+ symbol: 'btc',
41
+ platforms: {},
42
+ });
43
+ const makeCosmosMockCoingeckoResponse = () => ({
44
+ id: 'cosmos',
45
+ symbol: 'atom',
46
+ platforms: {},
47
+ });
48
+ const makePolygonMockCoingeckoResponse = () => ({
49
+ id: 'polygon-pos',
50
+ symbol: 'matic',
51
+ platforms: {},
52
+ });
53
+ const makeGnosisMockCoingeckoResponse = () => ({
54
+ id: 'gnosis',
55
+ symbol: 'xDai',
56
+ platforms: {},
57
+ });
58
+ const makeThorchainMockCoingeckoResponse = () => ({
59
+ id: 'thorchain',
60
+ symbol: 'rune',
61
+ platforms: {
62
+ thorchain: '',
63
+ },
64
+ });
65
+ vi.mock('fs', () => ({
66
+ default: {
67
+ promises: {
68
+ writeFile: vi.fn(() => undefined),
69
+ mkdir: vi.fn(() => undefined),
70
+ },
71
+ },
72
+ }));
73
+ describe('adapters:coingecko:utils', () => {
74
+ describe('makeData', () => {
75
+ it('can make btc data', () => {
76
+ const result = bitcoinAssetMap;
77
+ const expected = { 'bip122:000000000019d6689c085ae165831e93/slip44:0': 'bitcoin' };
78
+ expect(result).toEqual(expected);
79
+ });
80
+ it('can make cosmos data', () => {
81
+ const result = cosmosAssetMap;
82
+ const expected = { 'cosmos:cosmoshub-4/slip44:118': 'cosmos' };
83
+ expect(result).toEqual(expected);
84
+ });
85
+ });
86
+ describe('parseData', () => {
87
+ it('can parse all data', () => {
88
+ const result = parseData([
89
+ makeEthMockCoingeckoResponse(),
90
+ makeWethMockCoingeckoResponse(),
91
+ makeFoxMockCoingeckoResponse(),
92
+ makeBtcMockCoingeckoResponse(),
93
+ makeCosmosMockCoingeckoResponse(),
94
+ makeThorchainMockCoingeckoResponse(),
95
+ makeAvalancheMockCoingeckoResponse(),
96
+ makePolygonMockCoingeckoResponse(),
97
+ makeGnosisMockCoingeckoResponse(),
98
+ ]);
99
+ const expected = {
100
+ 'bip122:000000000019d6689c085ae165831e93': {
101
+ 'bip122:000000000019d6689c085ae165831e93/slip44:0': 'bitcoin',
102
+ },
103
+ 'bip122:000000000000000000651ef99cb9fcbe': {
104
+ 'bip122:000000000000000000651ef99cb9fcbe/slip44:145': 'bitcoin-cash',
105
+ },
106
+ 'bip122:00000000001a91e3dace36e2be3bf030': {
107
+ 'bip122:00000000001a91e3dace36e2be3bf030/slip44:3': 'dogecoin',
108
+ },
109
+ 'bip122:12a765e31ffd4059bada1e25190f6e98': {
110
+ 'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2': 'litecoin',
111
+ },
112
+ 'cosmos:cosmoshub-4': {
113
+ 'cosmos:cosmoshub-4/slip44:118': 'cosmos',
114
+ },
115
+ 'cosmos:thorchain-1': {
116
+ 'cosmos:thorchain-1/slip44:931': 'thorchain',
117
+ },
118
+ 'cosmos:mayachain-mainnet-v1': {
119
+ 'cosmos:mayachain-mainnet-v1/slip44:931': 'cacao',
120
+ },
121
+ 'eip155:1': {
122
+ 'eip155:1/slip44:60': 'ethereum',
123
+ 'eip155:1/erc20:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': 'weth',
124
+ 'eip155:1/erc20:0xc770eefad204b5180df6a14ee197d99d808ee52d': 'shapeshift-fox-token',
125
+ },
126
+ 'eip155:43114': {
127
+ 'eip155:43114/slip44:60': 'avalanche-2',
128
+ 'eip155:43114/erc20:0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab': 'weth',
129
+ },
130
+ 'eip155:56': {
131
+ 'eip155:56/slip44:60': 'binancecoin',
132
+ 'eip155:56/erc20:0x2170ed0880ac9a755fd29b2688956bd959f933f8': 'weth',
133
+ },
134
+ 'eip155:10': {
135
+ 'eip155:10/slip44:60': 'ethereum',
136
+ 'eip155:10/erc20:0x4200000000000000000000000000000000000006': 'weth',
137
+ },
138
+ 'eip155:137': {
139
+ 'eip155:137/slip44:60': 'matic-network',
140
+ 'eip155:137/erc20:0x7ceb23fd6bc0add59e62ac25578270cff1b9f619': 'weth',
141
+ },
142
+ 'eip155:100': {
143
+ 'eip155:100/slip44:60': 'xdai',
144
+ 'eip155:100/erc20:0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1': 'weth',
145
+ },
146
+ 'eip155:42161': {
147
+ 'eip155:42161/slip44:60': 'ethereum',
148
+ 'eip155:42161/erc20:0x82af49447d8a07e3bd95bd0d56f35241523fbab1': 'weth',
149
+ },
150
+ 'eip155:42170': {
151
+ 'eip155:42170/slip44:60': 'ethereum',
152
+ 'eip155:42170/erc20:0x722e8bdd2ce80a4422e880164f2079488e115365': 'weth',
153
+ },
154
+ 'eip155:8453': {
155
+ 'eip155:8453/slip44:60': 'ethereum',
156
+ 'eip155:8453/erc20:0x4200000000000000000000000000000000000006': 'weth',
157
+ },
158
+ 'eip155:143': {
159
+ 'eip155:143/slip44:60': 'monad',
160
+ },
161
+ 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': {
162
+ 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': 'solana',
163
+ },
164
+ 'sui:35834a8a': {
165
+ 'sui:35834a8a/slip44:784': 'sui',
166
+ },
167
+ 'tron:0x2b6653dc': {
168
+ 'tron:0x2b6653dc/slip44:195': 'tron',
169
+ },
170
+ };
171
+ expect(result).toEqual(expected);
172
+ });
173
+ });
174
+ describe('writeFiles', () => {
175
+ it('can writeFiles', async () => {
176
+ const data = {
177
+ foo: {
178
+ assetIdAbc: 'bitcorn',
179
+ assetIdDef: 'efferium',
180
+ },
181
+ bar: {
182
+ assetIdGhi: 'fox',
183
+ assetIdJkl: 'shib',
184
+ },
185
+ };
186
+ const fooAssetIds = JSON.stringify(data.foo);
187
+ const barAssetIds = JSON.stringify(data.bar);
188
+ console.info = vi.fn();
189
+ await writeFiles(data);
190
+ expect(realFs.promises.mkdir).toHaveBeenNthCalledWith(1, './src/adapters/coingecko/generated/foo', { recursive: true });
191
+ expect(realFs.promises.writeFile).toHaveBeenNthCalledWith(1, './src/adapters/coingecko/generated/foo/adapter.json', fooAssetIds);
192
+ expect(realFs.promises.mkdir).toHaveBeenNthCalledWith(2, './src/adapters/coingecko/generated/bar', { recursive: true });
193
+ expect(realFs.promises.writeFile).toHaveBeenNthCalledWith(2, './src/adapters/coingecko/generated/bar/adapter.json', barAssetIds);
194
+ expect(console.info).toBeCalledWith('Generated CoinGecko AssetId adapter data.');
195
+ });
196
+ });
197
+ });
@@ -0,0 +1,6 @@
1
+ export * from './coingecko/index.js';
2
+ export * from './coincap/index.js';
3
+ export * from './banxa/index.js';
4
+ export * from './coinbase/index.js';
5
+ export * from './mtpelerin/index.js';
6
+ export * from './onramper/index.js';
@@ -0,0 +1,6 @@
1
+ export * from './coingecko/index.js';
2
+ export * from './coincap/index.js';
3
+ export * from './banxa/index.js';
4
+ export * from './coinbase/index.js';
5
+ export * from './mtpelerin/index.js';
6
+ export * from './onramper/index.js';
@@ -0,0 +1,10 @@
1
+ import type { AssetId } from '../../assetId/assetId.js';
2
+ export declare const mtPelerinSymbolToAssetIds: (id: string) => AssetId[];
3
+ export declare const assetIdToMtPelerinSymbol: (assetId: AssetId) => string | undefined;
4
+ /**
5
+ * Convert a mtPelerin asset identifier to a MtPelerin chain identifier for use in MtPelerin HTTP URLs
6
+ *
7
+ * @param {string} assetId - an assetId string referencing a specific asset; e.g., ethAssetId
8
+ * @returns {string} - a MtPelerin network identifier; e.g., 'mainnet'
9
+ */
10
+ export declare const getMtPelerinNetFromAssetId: (assetId: AssetId) => string | undefined;
@@ -0,0 +1,121 @@
1
+ import { fromAssetId } from '../../assetId/assetId.js';
2
+ import { arbitrumAssetId, arbitrumChainId, avalancheAssetId, avalancheChainId, baseAssetId, baseChainId, bscAssetId, bscChainId, btcAssetId, btcChainId, ethAssetId, ethChainId, gnosisAssetId, gnosisChainId, optimismAssetId, optimismChainId, polygonAssetId, polygonChainId, } from '../../constants.js';
3
+ /**
4
+ * provided from https://api.mtPelerin.com/currencies/tokens
5
+ */
6
+ const MtPelerinSymbolToAssetIds = {
7
+ ETH: [ethAssetId, optimismAssetId, arbitrumAssetId, baseAssetId],
8
+ POL: [polygonAssetId],
9
+ XDAI: [gnosisAssetId],
10
+ BTC: [btcAssetId],
11
+ BNB: [bscAssetId],
12
+ DAI: ['eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f'],
13
+ USDT: [
14
+ 'eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7',
15
+ 'eip155:10/erc20:0x94b008aa00579c1307b0ef2c499ad98a8ce58e58',
16
+ 'eip155:56/erc20:0x55d398326f99059ff775485246999027b3197955',
17
+ 'eip155:100/erc20:0x4ecaba5870353805a9f068101a40e0f32ed605c6',
18
+ 'eip155:137/erc20:0xc2132d05d31c914a87c6611c10748aeb04b58e8f',
19
+ 'eip155:42161/erc20:0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9',
20
+ ],
21
+ USDC: [
22
+ 'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
23
+ 'eip155:10/erc20:0x0b2c639c533813f4aa9d7837caf62653d097ff85',
24
+ 'eip155:56/erc20:0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',
25
+ 'eip155:137/erc20:0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
26
+ 'eip155:100/erc20:0xddafbb505ad214d7b80b1f830fccc89b60fb7a83',
27
+ 'eip155:42161/erc20:0xaf88d065e77c8cc2239327c5edb3a432268e5831',
28
+ 'eip155:43114/erc20:0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',
29
+ 'eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
30
+ ],
31
+ 'USDC.e': [
32
+ 'eip155:10/erc20:0x7f5c764cbc14f9669b88837ca1490cca17c31607',
33
+ 'eip155:137/erc20:0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
34
+ 'eip155:42161/erc20:0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
35
+ 'eip155:43114/erc20:0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664',
36
+ ],
37
+ WBTC: [
38
+ 'eip155:1/erc20:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
39
+ 'eip155:10/erc20:0x68f180fcce6836688e9084f035309e29bf0a2095',
40
+ 'eip155:100/erc20:0x8e5bbbb09ed1ebde8674cda39a0c169401db4252',
41
+ 'eip155:137/erc20:0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6',
42
+ 'eip155:42161/erc20:0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f',
43
+ ],
44
+ AVAX: [avalancheAssetId],
45
+ 'BTC.b': ['eip155:43114/erc20:0x152b9d0fdc40c096757f570a51e494bd4b943e50'],
46
+ cbBTC: [
47
+ 'eip155:1/erc20:0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf',
48
+ 'eip155:8453/erc20:0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf',
49
+ ],
50
+ EURA: [
51
+ 'eip155:42161/erc20:0xfa5ed56a203466cbbc2430a43c66b9d8723528e7',
52
+ 'eip155:137/erc20:0xe0b52e49357fd4daf2c15e02058dce6bc0057db4',
53
+ ],
54
+ EURC: [
55
+ 'eip155:1/erc20:0x1abaea1f7c830bd89acc67ec4af516284b1bc33c',
56
+ 'eip155:8453/erc20:0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42',
57
+ 'eip155:43114/erc20:0xc891eb4cbdeff6e073e859e987815ed1505c2acd',
58
+ ],
59
+ EURS: [
60
+ 'eip155:1/erc20:0xdb25f211ab05b1c97d595516f45794528a807ad8',
61
+ 'eip155:137/erc20:0xe111178a87a3bff0c8d18decba5798827539ae99',
62
+ ],
63
+ FRAX: [
64
+ 'eip155:1/erc20:0x853d955acef822db058eb8505911ed77f175b99e',
65
+ 'eip155:137/erc20:0x45c32fa6df82ead1e2ef74d17b76547eddfaff89',
66
+ 'eip155:43114/erc20:0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64',
67
+ ],
68
+ GHO: ['eip155:1/erc20:0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f'],
69
+ LUSD: [
70
+ 'eip155:1/erc20:0x5f98805a4e8be255a32880fdec7f6728c6568ba0',
71
+ 'eip155:10/erc20:0xc40f949f8a4e094d1b49a23ea9241d289b7b2819',
72
+ ],
73
+ PAXG: ['eip155:1/erc20:0x45804880de22913dafe09f4980848ece6ecbaf78'],
74
+ WETH: [
75
+ 'eip155:56/erc20:0x2170ed0880ac9a755fd29b2688956bd959f933f8',
76
+ 'eip155:100/erc20:0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1',
77
+ 'eip155:137/erc20:0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',
78
+ ],
79
+ BTCB: ['eip155:56/erc20:0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c'],
80
+ crvUSD: ['eip155:1/erc20:0xf939e0a03fb07f59a73314e73794be0e57ac1b4e'],
81
+ XAUt: ['eip155:1/erc20:0x68749665ff8d2d112fa859aa293f07a622782f38'],
82
+ ZCHF: [
83
+ 'eip155:1/erc20:0xb58e61c3098d85632df34eecfb899a1ed80921cb',
84
+ 'eip155:100/erc20:0xd4dd9e2f021bb459d5a5f6c24c12fe09c5d45553',
85
+ ],
86
+ };
87
+ export const mtPelerinSymbolToAssetIds = (id) => MtPelerinSymbolToAssetIds[id];
88
+ export const assetIdToMtPelerinSymbol = (assetId) => {
89
+ return Object.entries(MtPelerinSymbolToAssetIds)
90
+ .filter(([, assetIds]) => assetIds.includes(assetId))
91
+ .map(([key]) => key)[0];
92
+ };
93
+ /**
94
+ * map ChainIds to MtPelerin network,
95
+ * since some MtPelerin assets could be on multiple chains and their default
96
+ * chain won't be exactly the same as ours.
97
+ *
98
+ * https://developers.mtPelerin.com/integration-guides/options -> "net"
99
+ * source of truth per MtPelerin
100
+ */
101
+ const chainIdToMtPelerinNetworkCodeMap = {
102
+ [ethChainId]: 'mainnet',
103
+ [btcChainId]: 'bitcoin_mainnet',
104
+ [avalancheChainId]: 'avalanche_mainnet',
105
+ [optimismChainId]: 'optimism_mainnet',
106
+ [polygonChainId]: 'matic_mainnet',
107
+ [gnosisChainId]: 'xdai_mainnet',
108
+ [bscChainId]: 'bsc_mainnet',
109
+ [arbitrumChainId]: 'arbitrum_mainnet',
110
+ [baseChainId]: 'base_mainnet',
111
+ };
112
+ /**
113
+ * Convert a mtPelerin asset identifier to a MtPelerin chain identifier for use in MtPelerin HTTP URLs
114
+ *
115
+ * @param {string} assetId - an assetId string referencing a specific asset; e.g., ethAssetId
116
+ * @returns {string} - a MtPelerin network identifier; e.g., 'mainnet'
117
+ */
118
+ export const getMtPelerinNetFromAssetId = (assetId) => {
119
+ const { chainId } = fromAssetId(assetId);
120
+ return chainIdToMtPelerinNetworkCodeMap[chainId];
121
+ };
@@ -0,0 +1,6 @@
1
+ import type { AssetId } from '../../assetId/assetId.js';
2
+ type OnRamperTokenId = string;
3
+ export declare const NativeAssetIdToOnRamperIdMap: Record<AssetId, OnRamperTokenId[]>;
4
+ export declare const onRamperTokenIdToAssetId: (tokenId: OnRamperTokenId) => AssetId | undefined;
5
+ export declare const assetIdToOnRamperTokenList: (assetId: AssetId) => OnRamperTokenId[] | undefined;
6
+ export {};
@@ -0,0 +1,31 @@
1
+ import entries from 'lodash/entries';
2
+ import { arbitrumAssetId, avalancheAssetId, baseAssetId, bchAssetId, bscAssetId, btcAssetId, cosmosAssetId, dogeAssetId, ethAssetId, gnosisAssetId, ltcAssetId, optimismAssetId, polygonAssetId, solAssetId, thorchainAssetId, } from '../../constants.js';
3
+ // Native assets only - tokens are fetched dynamically
4
+ export const NativeAssetIdToOnRamperIdMap = {
5
+ [bscAssetId]: ['bnb_bsc'],
6
+ [dogeAssetId]: ['doge_dogecoin'],
7
+ [ethAssetId]: ['eth'],
8
+ [arbitrumAssetId]: ['eth_arbitrum'],
9
+ [optimismAssetId]: ['eth_optimism'],
10
+ [baseAssetId]: ['eth_base'],
11
+ [ltcAssetId]: ['ltc_litecoin'],
12
+ [polygonAssetId]: ['matic_polygon'],
13
+ [thorchainAssetId]: ['rune_thorchain'],
14
+ [avalancheAssetId]: ['avax_avaxc'],
15
+ [btcAssetId]: ['btc'],
16
+ [bchAssetId]: ['bch_bitcoincash'],
17
+ [cosmosAssetId]: ['atom_cosmos'],
18
+ [gnosisAssetId]: ['xdai_gnosis'],
19
+ [solAssetId]: ['sol'],
20
+ };
21
+ // explodes and inverts the assetId => tokenId[] map by creating a 1to1 token => assetId mapping
22
+ const invertMap = () => {
23
+ const invertedMap = {};
24
+ entries(NativeAssetIdToOnRamperIdMap).flatMap(([assetId, idList]) => idList.forEach(id => {
25
+ invertedMap[id] = assetId;
26
+ }));
27
+ return invertedMap;
28
+ };
29
+ const OnRamperIdToAssetIdMap = invertMap();
30
+ export const onRamperTokenIdToAssetId = (tokenId) => OnRamperIdToAssetIdMap[tokenId];
31
+ export const assetIdToOnRamperTokenList = (assetId) => NativeAssetIdToOnRamperIdMap[assetId];
@@ -0,0 +1,36 @@
1
+ import type { ChainId, ChainNamespace, ChainReference } from '../chainId/chainId.js';
2
+ import type { ASSET_NAMESPACE, ASSET_REFERENCE } from '../constants.js';
3
+ import type { Nominal } from '../utils.js';
4
+ export type AssetId = Nominal<string, 'AssetId'>;
5
+ export type AssetNamespace = (typeof ASSET_NAMESPACE)[keyof typeof ASSET_NAMESPACE];
6
+ export type AssetReference = (typeof ASSET_REFERENCE)[keyof typeof ASSET_REFERENCE];
7
+ type ToAssetIdWithChainId = {
8
+ chainNamespace?: never;
9
+ chainReference?: never;
10
+ chainId: ChainId;
11
+ assetNamespace: AssetNamespace;
12
+ assetReference: AssetReference | string;
13
+ };
14
+ type ToAssetIdWithChainIdParts = {
15
+ chainNamespace: ChainNamespace;
16
+ chainReference: ChainReference;
17
+ chainId?: never;
18
+ assetNamespace: AssetNamespace;
19
+ assetReference: AssetReference | string;
20
+ };
21
+ export type ToAssetIdArgs = ToAssetIdWithChainId | ToAssetIdWithChainIdParts;
22
+ type ToAssetId = (args: ToAssetIdArgs) => AssetId;
23
+ export declare const toAssetId: ToAssetId;
24
+ type FromAssetIdReturn = {
25
+ chainNamespace: ChainNamespace;
26
+ chainReference: ChainReference;
27
+ chainId: ChainId;
28
+ assetNamespace: AssetNamespace;
29
+ assetReference: AssetReference;
30
+ };
31
+ export type FromAssetId = (assetId: AssetId) => FromAssetIdReturn;
32
+ export declare const fromAssetId: FromAssetId;
33
+ export declare const isNft: (assetId: AssetId) => boolean;
34
+ export declare const toCAIP19: ToAssetId;
35
+ export declare const fromCAIP19: FromAssetId;
36
+ export {};