@shapeshiftoss/caip 8.16.1 → 9.0.0-alpha.0

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 (204) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/accountId/accountId.js +44 -0
  3. package/dist/cjs/accountId/accountId.test.js +109 -0
  4. package/dist/cjs/adapters/banxa/index.js +118 -0
  5. package/dist/cjs/adapters/coinbase/generate.js +9 -0
  6. package/dist/cjs/adapters/coinbase/generated/index.js +8 -0
  7. package/dist/cjs/adapters/coinbase/index.js +16 -0
  8. package/dist/cjs/adapters/coinbase/utils.js +55 -0
  9. package/dist/cjs/adapters/coincap/generate.js +10 -0
  10. package/dist/cjs/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  11. package/dist/cjs/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  12. package/dist/cjs/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  13. package/dist/cjs/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  14. package/dist/cjs/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  15. package/dist/cjs/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  16. package/dist/cjs/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  17. package/dist/{adapters → cjs/adapters}/coincap/generated/index.d.ts +11 -4
  18. package/dist/cjs/adapters/coincap/generated/index.js +34 -0
  19. package/dist/cjs/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  20. package/dist/{adapters → cjs/adapters}/coincap/index.d.ts +1 -1
  21. package/dist/cjs/adapters/coincap/index.js +44 -0
  22. package/dist/cjs/adapters/coincap/index.test.js +90 -0
  23. package/dist/{adapters → cjs/adapters}/coincap/utils.d.ts +3 -1
  24. package/dist/cjs/adapters/coincap/utils.js +146 -0
  25. package/dist/cjs/adapters/coincap/utils.test.js +173 -0
  26. package/dist/cjs/adapters/coingecko/generate.js +10 -0
  27. package/dist/cjs/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  28. package/dist/cjs/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  29. package/dist/cjs/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  30. package/dist/cjs/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  31. package/dist/cjs/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  32. package/dist/cjs/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  33. package/dist/cjs/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  34. package/dist/cjs/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  35. package/dist/cjs/adapters/coingecko/generated/index.js +40 -0
  36. package/dist/cjs/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  37. package/dist/cjs/adapters/coingecko/index.js +163 -0
  38. package/dist/cjs/adapters/coingecko/index.test.js +276 -0
  39. package/dist/cjs/adapters/coingecko/utils.js +190 -0
  40. package/dist/cjs/adapters/coingecko/utils.test.js +193 -0
  41. package/dist/cjs/adapters/index.js +22 -0
  42. package/dist/cjs/adapters/mtpelerin/index.js +142 -0
  43. package/dist/cjs/adapters/onramper/index.js +1505 -0
  44. package/dist/cjs/assetId/assetId.js +126 -0
  45. package/dist/cjs/assetId/assetId.test.js +324 -0
  46. package/dist/cjs/chainId/chainId.js +25 -0
  47. package/dist/cjs/chainId/chainId.test.js +90 -0
  48. package/dist/{constants.d.ts → cjs/constants.d.ts} +1 -1
  49. package/dist/cjs/constants.js +173 -0
  50. package/dist/cjs/index.js +36 -0
  51. package/dist/cjs/package.json +1 -0
  52. package/dist/cjs/typeGuards.js +56 -0
  53. package/dist/{utils.d.ts → cjs/utils.d.ts} +1 -1
  54. package/dist/cjs/utils.js +56 -0
  55. package/dist/cjs/utils.test.js +160 -0
  56. package/dist/esm/.tsbuildinfo +1 -0
  57. package/dist/esm/accountId/accountId.d.ts +29 -0
  58. package/dist/esm/accountId/accountId.test.d.ts +1 -0
  59. package/dist/esm/adapters/banxa/index.d.ts +14 -0
  60. package/dist/esm/adapters/coinbase/generate.d.ts +1 -0
  61. package/dist/esm/adapters/coinbase/generated/adapter.json +153 -0
  62. package/dist/esm/adapters/coinbase/generated/index.js +2 -0
  63. package/dist/esm/adapters/coinbase/index.d.ts +3 -0
  64. package/dist/esm/adapters/coinbase/utils.d.ts +12 -0
  65. package/dist/esm/adapters/coincap/generate.d.ts +1 -0
  66. package/dist/esm/adapters/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  67. package/dist/esm/adapters/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  68. package/dist/esm/adapters/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  69. package/dist/esm/adapters/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  70. package/dist/esm/adapters/coincap/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  71. package/dist/esm/adapters/coincap/generated/cosmos_thorchain-1/adapter.json +1 -0
  72. package/dist/esm/adapters/coincap/generated/eip155_1/adapter.json +1 -0
  73. package/dist/esm/adapters/coincap/generated/eip155_10/adapter.json +1 -0
  74. package/dist/esm/adapters/coincap/generated/eip155_137/adapter.json +1 -0
  75. package/dist/esm/adapters/coincap/generated/eip155_42161/adapter.json +1 -0
  76. package/dist/esm/adapters/coincap/generated/eip155_43114/adapter.json +1 -0
  77. package/dist/esm/adapters/coincap/generated/eip155_56/adapter.json +1 -0
  78. package/dist/esm/adapters/coincap/generated/eip155_8453/adapter.json +1 -0
  79. package/dist/esm/adapters/coincap/generated/index.d.ts +15 -0
  80. package/dist/{adapters → esm/adapters}/coincap/generated/index.js +11 -4
  81. package/dist/esm/adapters/coincap/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  82. package/dist/esm/adapters/coincap/index.d.ts +4 -0
  83. package/dist/{adapters → esm/adapters}/coincap/index.js +3 -3
  84. package/dist/esm/adapters/coincap/index.test.d.ts +1 -0
  85. package/dist/{adapters → esm/adapters}/coincap/index.test.js +8 -12
  86. package/dist/esm/adapters/coincap/utils.d.ts +24 -0
  87. package/dist/esm/adapters/coincap/utils.js +135 -0
  88. package/dist/esm/adapters/coincap/utils.test.d.ts +4 -0
  89. package/dist/{adapters → esm/adapters}/coincap/utils.test.js +5 -0
  90. package/dist/esm/adapters/coingecko/generate.d.ts +1 -0
  91. package/dist/esm/adapters/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +1 -0
  92. package/dist/esm/adapters/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +1 -0
  93. package/dist/esm/adapters/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +1 -0
  94. package/dist/esm/adapters/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +1 -0
  95. package/dist/esm/adapters/coingecko/generated/cosmos_cosmoshub-4/adapter.json +1 -0
  96. package/dist/esm/adapters/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +1 -0
  97. package/dist/esm/adapters/coingecko/generated/cosmos_thorchain-1/adapter.json +1 -0
  98. package/dist/esm/adapters/coingecko/generated/eip155_1/adapter.json +1 -0
  99. package/dist/esm/adapters/coingecko/generated/eip155_10/adapter.json +1 -0
  100. package/dist/esm/adapters/coingecko/generated/eip155_100/adapter.json +1 -0
  101. package/dist/esm/adapters/coingecko/generated/eip155_137/adapter.json +1 -0
  102. package/dist/esm/adapters/coingecko/generated/eip155_42161/adapter.json +1 -0
  103. package/dist/esm/adapters/coingecko/generated/eip155_42170/adapter.json +1 -0
  104. package/dist/esm/adapters/coingecko/generated/eip155_43114/adapter.json +1 -0
  105. package/dist/esm/adapters/coingecko/generated/eip155_56/adapter.json +1 -0
  106. package/dist/esm/adapters/coingecko/generated/eip155_8453/adapter.json +1 -0
  107. package/dist/esm/adapters/coingecko/generated/index.js +18 -0
  108. package/dist/esm/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +1 -0
  109. package/dist/esm/adapters/coingecko/index.d.ts +26 -0
  110. package/dist/esm/adapters/coingecko/index.test.d.ts +1 -0
  111. package/dist/esm/adapters/coingecko/utils.d.ts +11 -0
  112. package/dist/esm/adapters/coingecko/utils.test.d.ts +1 -0
  113. package/dist/esm/adapters/index.js +6 -0
  114. package/dist/esm/adapters/mtpelerin/index.d.ts +10 -0
  115. package/dist/esm/adapters/onramper/index.d.ts +7 -0
  116. package/dist/esm/assetId/assetId.d.ts +36 -0
  117. package/dist/esm/assetId/assetId.test.d.ts +1 -0
  118. package/dist/{assetId → esm/assetId}/assetId.test.js +0 -14
  119. package/dist/esm/chainId/chainId.d.ts +20 -0
  120. package/dist/esm/chainId/chainId.test.d.ts +1 -0
  121. package/dist/esm/constants.d.ts +121 -0
  122. package/dist/{constants.js → esm/constants.js} +2 -2
  123. package/dist/esm/index.js +7 -0
  124. package/dist/esm/typeGuards.d.ts +16 -0
  125. package/dist/esm/utils.d.ts +33 -0
  126. package/dist/{utils.js → esm/utils.js} +11 -14
  127. package/dist/esm/utils.test.d.ts +1 -0
  128. package/dist/{utils.test.js → esm/utils.test.js} +15 -19
  129. package/package.json +17 -7
  130. package/CHANGELOG.md +0 -726
  131. package/dist/adapters/coincap/generated/eip155_1/adapter.json +0 -1
  132. package/dist/adapters/coincap/utils.js +0 -40
  133. package/dist/adapters/coingecko/generated/eip155_1/adapter.json +0 -1
  134. package/dist/adapters/coingecko/generated/eip155_10/adapter.json +0 -1
  135. package/dist/adapters/coingecko/generated/eip155_100/adapter.json +0 -1
  136. package/dist/adapters/coingecko/generated/eip155_137/adapter.json +0 -1
  137. package/dist/adapters/coingecko/generated/eip155_42161/adapter.json +0 -1
  138. package/dist/adapters/coingecko/generated/eip155_43114/adapter.json +0 -1
  139. package/dist/adapters/coingecko/generated/eip155_56/adapter.json +0 -1
  140. package/dist/adapters/coingecko/generated/eip155_8453/adapter.json +0 -1
  141. package/dist/adapters/coingecko/generated/solana_5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/adapter.json +0 -1
  142. /package/dist/{accountId → cjs/accountId}/accountId.d.ts +0 -0
  143. /package/dist/{accountId → cjs/accountId}/accountId.test.d.ts +0 -0
  144. /package/dist/{adapters → cjs/adapters}/banxa/index.d.ts +0 -0
  145. /package/dist/{adapters → cjs/adapters}/coinbase/generate.d.ts +0 -0
  146. /package/dist/{adapters → cjs/adapters}/coinbase/generated/adapter.json +0 -0
  147. /package/dist/{adapters → cjs/adapters}/coinbase/generated/index.d.ts +0 -0
  148. /package/dist/{adapters → cjs/adapters}/coinbase/index.d.ts +0 -0
  149. /package/dist/{adapters → cjs/adapters}/coinbase/utils.d.ts +0 -0
  150. /package/dist/{adapters → cjs/adapters}/coincap/generate.d.ts +0 -0
  151. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  152. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  153. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  154. /package/dist/{adapters → cjs/adapters}/coincap/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  155. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  156. /package/dist/{adapters → cjs/adapters}/coincap/generated/cosmos_thorchain-1/adapter.json +0 -0
  157. /package/dist/{adapters → cjs/adapters}/coincap/index.test.d.ts +0 -0
  158. /package/dist/{adapters → cjs/adapters}/coincap/utils.test.d.ts +0 -0
  159. /package/dist/{adapters → cjs/adapters}/coingecko/generate.d.ts +0 -0
  160. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000000000000651ef99cb9fcbe/adapter.json +0 -0
  161. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_000000000019d6689c085ae165831e93/adapter.json +0 -0
  162. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_00000000001a91e3dace36e2be3bf030/adapter.json +0 -0
  163. /package/dist/{adapters → cjs/adapters}/coingecko/generated/bip122_12a765e31ffd4059bada1e25190f6e98/adapter.json +0 -0
  164. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_cosmoshub-4/adapter.json +0 -0
  165. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_mayachain-mainnet-v1/adapter.json +0 -0
  166. /package/dist/{adapters → cjs/adapters}/coingecko/generated/cosmos_thorchain-1/adapter.json +0 -0
  167. /package/dist/{adapters → cjs/adapters}/coingecko/generated/eip155_42170/adapter.json +0 -0
  168. /package/dist/{adapters → cjs/adapters}/coingecko/generated/index.d.ts +0 -0
  169. /package/dist/{adapters → cjs/adapters}/coingecko/index.d.ts +0 -0
  170. /package/dist/{adapters → cjs/adapters}/coingecko/index.test.d.ts +0 -0
  171. /package/dist/{adapters → cjs/adapters}/coingecko/utils.d.ts +0 -0
  172. /package/dist/{adapters → cjs/adapters}/coingecko/utils.test.d.ts +0 -0
  173. /package/dist/{adapters → cjs/adapters}/index.d.ts +0 -0
  174. /package/dist/{adapters → cjs/adapters}/mtpelerin/index.d.ts +0 -0
  175. /package/dist/{adapters → cjs/adapters}/onramper/index.d.ts +0 -0
  176. /package/dist/{assetId → cjs/assetId}/assetId.d.ts +0 -0
  177. /package/dist/{assetId → cjs/assetId}/assetId.test.d.ts +0 -0
  178. /package/dist/{chainId → cjs/chainId}/chainId.d.ts +0 -0
  179. /package/dist/{chainId → cjs/chainId}/chainId.test.d.ts +0 -0
  180. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  181. /package/dist/{typeGuards.d.ts → cjs/typeGuards.d.ts} +0 -0
  182. /package/dist/{utils.test.d.ts → cjs/utils.test.d.ts} +0 -0
  183. /package/dist/{accountId → esm/accountId}/accountId.js +0 -0
  184. /package/dist/{accountId → esm/accountId}/accountId.test.js +0 -0
  185. /package/dist/{adapters → esm/adapters}/banxa/index.js +0 -0
  186. /package/dist/{adapters → esm/adapters}/coinbase/generate.js +0 -0
  187. /package/dist/{adapters/coinbase/generated/index.js → esm/adapters/coinbase/generated/index.d.ts} +0 -0
  188. /package/dist/{adapters → esm/adapters}/coinbase/index.js +0 -0
  189. /package/dist/{adapters → esm/adapters}/coinbase/utils.js +0 -0
  190. /package/dist/{adapters → esm/adapters}/coincap/generate.js +0 -0
  191. /package/dist/{adapters → esm/adapters}/coingecko/generate.js +0 -0
  192. /package/dist/{adapters/coingecko/generated/index.js → esm/adapters/coingecko/generated/index.d.ts} +0 -0
  193. /package/dist/{adapters → esm/adapters}/coingecko/index.js +0 -0
  194. /package/dist/{adapters → esm/adapters}/coingecko/index.test.js +0 -0
  195. /package/dist/{adapters → esm/adapters}/coingecko/utils.js +0 -0
  196. /package/dist/{adapters → esm/adapters}/coingecko/utils.test.js +0 -0
  197. /package/dist/{adapters/index.js → esm/adapters/index.d.ts} +0 -0
  198. /package/dist/{adapters → esm/adapters}/mtpelerin/index.js +0 -0
  199. /package/dist/{adapters → esm/adapters}/onramper/index.js +0 -0
  200. /package/dist/{assetId → esm/assetId}/assetId.js +0 -0
  201. /package/dist/{chainId → esm/chainId}/chainId.js +0 -0
  202. /package/dist/{chainId → esm/chainId}/chainId.test.js +0 -0
  203. /package/dist/{index.js → esm/index.d.ts} +0 -0
  204. /package/dist/{typeGuards.js → esm/typeGuards.js} +0 -0
@@ -0,0 +1,163 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.makeCoingeckoAssetUrl = exports.coingeckoAssetPlatformToChainId = exports.chainIdToCoingeckoAssetPlatform = exports.assetIdToCoingecko = exports.coingeckoToAssetIds = exports.coingeckoUrl = exports.coingeckoBaseUrl = exports.CoingeckoAssetPlatform = exports.parseCoingeckoData = exports.fetchCoingeckoData = void 0;
30
+ const invertBy_1 = __importDefault(require("lodash/invertBy"));
31
+ const assetId_1 = require("../../assetId/assetId");
32
+ const chainId_1 = require("../../chainId/chainId");
33
+ const constants_1 = require("../../constants");
34
+ const adapters = __importStar(require("./generated"));
35
+ var utils_1 = require("./utils");
36
+ Object.defineProperty(exports, "fetchCoingeckoData", { enumerable: true, get: function () { return utils_1.fetchData; } });
37
+ Object.defineProperty(exports, "parseCoingeckoData", { enumerable: true, get: function () { return utils_1.parseData; } });
38
+ // https://api.coingecko.com/api/v3/asset_platforms
39
+ var CoingeckoAssetPlatform;
40
+ (function (CoingeckoAssetPlatform) {
41
+ CoingeckoAssetPlatform["Ethereum"] = "ethereum";
42
+ CoingeckoAssetPlatform["Cosmos"] = "cosmos";
43
+ CoingeckoAssetPlatform["Polygon"] = "polygon-pos";
44
+ CoingeckoAssetPlatform["Gnosis"] = "xdai";
45
+ CoingeckoAssetPlatform["Avalanche"] = "avalanche";
46
+ CoingeckoAssetPlatform["Thorchain"] = "thorchain";
47
+ CoingeckoAssetPlatform["Mayachain"] = "cacao";
48
+ CoingeckoAssetPlatform["Optimism"] = "optimistic-ethereum";
49
+ CoingeckoAssetPlatform["BnbSmartChain"] = "binance-smart-chain";
50
+ CoingeckoAssetPlatform["Arbitrum"] = "arbitrum-one";
51
+ CoingeckoAssetPlatform["ArbitrumNova"] = "arbitrum-nova";
52
+ CoingeckoAssetPlatform["Base"] = "base";
53
+ CoingeckoAssetPlatform["Solana"] = "solana";
54
+ })(CoingeckoAssetPlatform || (exports.CoingeckoAssetPlatform = CoingeckoAssetPlatform = {}));
55
+ exports.coingeckoBaseUrl = 'https://api.proxy.shapeshift.com/api/v1/markets';
56
+ exports.coingeckoUrl = `${exports.coingeckoBaseUrl}/coins/list?include_platform=true`;
57
+ const assetIdToCoinGeckoIdMapByChain = Object.values(adapters);
58
+ const generatedAssetIdToCoingeckoMap = assetIdToCoinGeckoIdMapByChain.reduce((acc, cur) => ({
59
+ ...acc,
60
+ ...cur,
61
+ }));
62
+ const generatedCoingeckoToAssetIdsMap = (0, invertBy_1.default)(generatedAssetIdToCoingeckoMap);
63
+ const coingeckoToAssetIds = (id) => generatedCoingeckoToAssetIdsMap[id];
64
+ exports.coingeckoToAssetIds = coingeckoToAssetIds;
65
+ const assetIdToCoingecko = (assetId) => generatedAssetIdToCoingeckoMap[assetId];
66
+ exports.assetIdToCoingecko = assetIdToCoingecko;
67
+ // https://www.coingecko.com/en/api/documentation - See asset_platforms
68
+ const chainIdToCoingeckoAssetPlatform = (chainId) => {
69
+ const { chainNamespace, chainReference } = (0, chainId_1.fromChainId)(chainId);
70
+ switch (chainNamespace) {
71
+ case constants_1.CHAIN_NAMESPACE.Evm:
72
+ switch (chainReference) {
73
+ case constants_1.CHAIN_REFERENCE.EthereumMainnet:
74
+ return CoingeckoAssetPlatform.Ethereum;
75
+ case constants_1.CHAIN_REFERENCE.AvalancheCChain:
76
+ return CoingeckoAssetPlatform.Avalanche;
77
+ case constants_1.CHAIN_REFERENCE.OptimismMainnet:
78
+ return CoingeckoAssetPlatform.Optimism;
79
+ case constants_1.CHAIN_REFERENCE.BnbSmartChainMainnet:
80
+ return CoingeckoAssetPlatform.BnbSmartChain;
81
+ case constants_1.CHAIN_REFERENCE.PolygonMainnet:
82
+ return CoingeckoAssetPlatform.Polygon;
83
+ case constants_1.CHAIN_REFERENCE.GnosisMainnet:
84
+ return CoingeckoAssetPlatform.Gnosis;
85
+ case constants_1.CHAIN_REFERENCE.ArbitrumMainnet:
86
+ return CoingeckoAssetPlatform.Arbitrum;
87
+ case constants_1.CHAIN_REFERENCE.ArbitrumNovaMainnet:
88
+ return CoingeckoAssetPlatform.ArbitrumNova;
89
+ case constants_1.CHAIN_REFERENCE.BaseMainnet:
90
+ return CoingeckoAssetPlatform.Base;
91
+ default:
92
+ throw new Error(`chainNamespace ${chainNamespace}, chainReference ${chainReference} not supported.`);
93
+ }
94
+ case constants_1.CHAIN_NAMESPACE.CosmosSdk:
95
+ switch (chainReference) {
96
+ case constants_1.CHAIN_REFERENCE.CosmosHubMainnet:
97
+ return CoingeckoAssetPlatform.Cosmos;
98
+ case constants_1.CHAIN_REFERENCE.ThorchainMainnet:
99
+ return CoingeckoAssetPlatform.Thorchain;
100
+ case constants_1.CHAIN_REFERENCE.MayachainMainnet:
101
+ return CoingeckoAssetPlatform.Mayachain;
102
+ default:
103
+ throw new Error(`chainNamespace ${chainNamespace}, chainReference ${chainReference} not supported.`);
104
+ }
105
+ case constants_1.CHAIN_NAMESPACE.Solana:
106
+ switch (chainReference) {
107
+ case constants_1.CHAIN_REFERENCE.SolanaMainnet:
108
+ return CoingeckoAssetPlatform.Solana;
109
+ default:
110
+ throw new Error(`chainNamespace ${chainNamespace}, chainReference ${chainReference} not supported.`);
111
+ }
112
+ // No valid asset platform: https://api.coingecko.com/api/v3/asset_platforms
113
+ case constants_1.CHAIN_NAMESPACE.Utxo:
114
+ default:
115
+ throw new Error(`chainNamespace ${chainNamespace} not supported.`);
116
+ }
117
+ };
118
+ exports.chainIdToCoingeckoAssetPlatform = chainIdToCoingeckoAssetPlatform;
119
+ const coingeckoAssetPlatformToChainId = (platform) => {
120
+ switch (platform) {
121
+ case CoingeckoAssetPlatform.Ethereum:
122
+ return constants_1.ethChainId;
123
+ case CoingeckoAssetPlatform.Avalanche:
124
+ return constants_1.avalancheChainId;
125
+ case CoingeckoAssetPlatform.Optimism:
126
+ return constants_1.optimismChainId;
127
+ case CoingeckoAssetPlatform.BnbSmartChain:
128
+ return constants_1.bscChainId;
129
+ case CoingeckoAssetPlatform.Polygon:
130
+ return constants_1.polygonChainId;
131
+ case CoingeckoAssetPlatform.Gnosis:
132
+ return constants_1.gnosisChainId;
133
+ case CoingeckoAssetPlatform.Arbitrum:
134
+ return constants_1.arbitrumChainId;
135
+ case CoingeckoAssetPlatform.ArbitrumNova:
136
+ return constants_1.arbitrumNovaChainId;
137
+ case CoingeckoAssetPlatform.Base:
138
+ return constants_1.baseChainId;
139
+ case CoingeckoAssetPlatform.Cosmos:
140
+ return constants_1.cosmosChainId;
141
+ case CoingeckoAssetPlatform.Thorchain:
142
+ return constants_1.thorchainChainId;
143
+ case CoingeckoAssetPlatform.Mayachain:
144
+ return constants_1.mayachainChainId;
145
+ case CoingeckoAssetPlatform.Solana:
146
+ return constants_1.solanaChainId;
147
+ default:
148
+ return undefined;
149
+ }
150
+ };
151
+ exports.coingeckoAssetPlatformToChainId = coingeckoAssetPlatformToChainId;
152
+ const makeCoingeckoAssetUrl = (assetId) => {
153
+ const id = (0, exports.assetIdToCoingecko)(assetId);
154
+ if (!id)
155
+ return;
156
+ const { chainNamespace, chainReference, assetNamespace, assetReference } = (0, assetId_1.fromAssetId)(assetId);
157
+ if (assetNamespace === 'erc20') {
158
+ const assetPlatform = (0, exports.chainIdToCoingeckoAssetPlatform)((0, chainId_1.toChainId)({ chainNamespace, chainReference }));
159
+ return `${exports.coingeckoBaseUrl}/coins/${assetPlatform}/contract/${assetReference}`;
160
+ }
161
+ return `${exports.coingeckoBaseUrl}/coins/${id}`;
162
+ };
163
+ exports.makeCoingeckoAssetUrl = makeCoingeckoAssetUrl;
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const assetId_1 = require("../../assetId/assetId");
5
+ const constants_1 = require("../../constants");
6
+ const _1 = require(".");
7
+ (0, vitest_1.describe)('adapters:coingecko', () => {
8
+ (0, vitest_1.describe)('coingeckoToAssetIds', () => {
9
+ (0, vitest_1.it)('can get AssetIds for bitcoin', () => {
10
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Utxo;
11
+ const chainReference = constants_1.CHAIN_REFERENCE.BitcoinMainnet;
12
+ const assetId = (0, assetId_1.toAssetId)({
13
+ chainNamespace,
14
+ chainReference,
15
+ assetNamespace: 'slip44',
16
+ assetReference: constants_1.ASSET_REFERENCE.Bitcoin,
17
+ });
18
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('bitcoin')).toEqual([assetId]);
19
+ });
20
+ (0, vitest_1.it)('can get AssetIds id for ethereum', () => {
21
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
22
+ const ethOnEthereum = (0, assetId_1.toAssetId)({
23
+ chainNamespace,
24
+ chainReference: constants_1.CHAIN_REFERENCE.EthereumMainnet,
25
+ assetNamespace: 'slip44',
26
+ assetReference: constants_1.ASSET_REFERENCE.Ethereum,
27
+ });
28
+ const ethOnOptimism = (0, assetId_1.toAssetId)({
29
+ chainNamespace,
30
+ chainReference: constants_1.CHAIN_REFERENCE.OptimismMainnet,
31
+ assetNamespace: 'slip44',
32
+ assetReference: constants_1.ASSET_REFERENCE.Optimism,
33
+ });
34
+ const ethOnArbitrum = (0, assetId_1.toAssetId)({
35
+ chainNamespace,
36
+ chainReference: constants_1.CHAIN_REFERENCE.ArbitrumMainnet,
37
+ assetNamespace: 'slip44',
38
+ assetReference: constants_1.ASSET_REFERENCE.Arbitrum,
39
+ });
40
+ const ethOnArbitrumNova = (0, assetId_1.toAssetId)({
41
+ chainNamespace,
42
+ chainReference: constants_1.CHAIN_REFERENCE.ArbitrumNovaMainnet,
43
+ assetNamespace: 'slip44',
44
+ assetReference: constants_1.ASSET_REFERENCE.ArbitrumNova,
45
+ });
46
+ const ethOnBase = (0, assetId_1.toAssetId)({
47
+ chainNamespace,
48
+ chainReference: constants_1.CHAIN_REFERENCE.BaseMainnet,
49
+ assetNamespace: 'slip44',
50
+ assetReference: constants_1.ASSET_REFERENCE.Base,
51
+ });
52
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('ethereum')).toEqual([
53
+ ethOnEthereum,
54
+ ethOnOptimism,
55
+ ethOnArbitrum,
56
+ ethOnArbitrumNova,
57
+ ethOnBase,
58
+ ]);
59
+ });
60
+ (0, vitest_1.it)('can get AssetIds id for FOX', () => {
61
+ const assetNamespace = 'erc20';
62
+ const foxOnEthereum = (0, assetId_1.toAssetId)({
63
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
64
+ chainReference: constants_1.CHAIN_REFERENCE.EthereumMainnet,
65
+ assetNamespace,
66
+ assetReference: '0xc770eefad204b5180df6a14ee197d99d808ee52d',
67
+ });
68
+ const foxOnPolygon = (0, assetId_1.toAssetId)({
69
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
70
+ chainReference: constants_1.CHAIN_REFERENCE.PolygonMainnet,
71
+ assetNamespace,
72
+ assetReference: '0x65a05db8322701724c197af82c9cae41195b0aa8',
73
+ });
74
+ const foxOnGnosis = (0, assetId_1.toAssetId)({
75
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
76
+ chainReference: constants_1.CHAIN_REFERENCE.GnosisMainnet,
77
+ assetNamespace,
78
+ assetReference: '0x21a42669643f45bc0e086b8fc2ed70c23d67509d',
79
+ });
80
+ const foxOnOptimism = (0, assetId_1.toAssetId)({
81
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
82
+ chainReference: constants_1.CHAIN_REFERENCE.OptimismMainnet,
83
+ assetNamespace,
84
+ assetReference: '0xf1a0da3367bc7aa04f8d94ba57b862ff37ced174',
85
+ });
86
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('shapeshift-fox-token')).toEqual([
87
+ foxOnEthereum,
88
+ foxOnOptimism,
89
+ foxOnPolygon,
90
+ foxOnGnosis,
91
+ constants_1.foxOnArbitrumOneAssetId,
92
+ ]);
93
+ });
94
+ (0, vitest_1.it)('can get AssetIds for cosmos', () => {
95
+ const atomOnCosmos = (0, assetId_1.toAssetId)({
96
+ chainNamespace: constants_1.CHAIN_NAMESPACE.CosmosSdk,
97
+ chainReference: constants_1.CHAIN_REFERENCE.CosmosHubMainnet,
98
+ assetNamespace: 'slip44',
99
+ assetReference: constants_1.ASSET_REFERENCE.Cosmos,
100
+ });
101
+ const atomOnBsc = (0, assetId_1.toAssetId)({
102
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
103
+ chainReference: constants_1.CHAIN_REFERENCE.BnbSmartChainMainnet,
104
+ assetNamespace: 'bep20',
105
+ assetReference: '0x0eb3a705fc54725037cc9e008bdede697f62f335',
106
+ });
107
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('cosmos')).toEqual([atomOnBsc, atomOnCosmos]);
108
+ });
109
+ (0, vitest_1.it)('can get AssetIds for USD Coin on Solana and EVM chains using coingecko', () => {
110
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
111
+ const assetNamespace = 'erc20';
112
+ const usdcOnEthereum = (0, assetId_1.toAssetId)({
113
+ chainNamespace,
114
+ chainReference: constants_1.CHAIN_REFERENCE.EthereumMainnet,
115
+ assetNamespace,
116
+ assetReference: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
117
+ });
118
+ const usdcOnAvalanche = (0, assetId_1.toAssetId)({
119
+ chainNamespace,
120
+ chainReference: constants_1.CHAIN_REFERENCE.AvalancheCChain,
121
+ assetNamespace,
122
+ assetReference: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',
123
+ });
124
+ const usdcOnOptimism = (0, assetId_1.toAssetId)({
125
+ chainNamespace,
126
+ chainReference: constants_1.CHAIN_REFERENCE.OptimismMainnet,
127
+ assetNamespace,
128
+ assetReference: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
129
+ });
130
+ const usdcOnPolygon = (0, assetId_1.toAssetId)({
131
+ chainNamespace,
132
+ chainReference: constants_1.CHAIN_REFERENCE.PolygonMainnet,
133
+ assetNamespace,
134
+ assetReference: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
135
+ });
136
+ const usdcOnArbitrum = (0, assetId_1.toAssetId)({
137
+ chainNamespace,
138
+ chainReference: constants_1.CHAIN_REFERENCE.ArbitrumMainnet,
139
+ assetNamespace,
140
+ assetReference: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',
141
+ });
142
+ const usdcOnBase = (0, assetId_1.toAssetId)({
143
+ chainNamespace,
144
+ chainReference: constants_1.CHAIN_REFERENCE.BaseMainnet,
145
+ assetNamespace,
146
+ assetReference: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
147
+ });
148
+ const usdcOnSolana = (0, assetId_1.toAssetId)({
149
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Solana,
150
+ chainReference: constants_1.CHAIN_REFERENCE.SolanaMainnet,
151
+ assetNamespace: 'token',
152
+ assetReference: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
153
+ });
154
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('usd-coin')).toEqual([
155
+ usdcOnEthereum,
156
+ usdcOnAvalanche,
157
+ usdcOnOptimism,
158
+ usdcOnPolygon,
159
+ usdcOnArbitrum,
160
+ usdcOnBase,
161
+ usdcOnSolana,
162
+ ]);
163
+ });
164
+ (0, vitest_1.it)('can get AssetIds for bridged USD Coin on EVM Chains', () => {
165
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
166
+ const assetNamespace = 'erc20';
167
+ const usdcOnBscBridged = (0, assetId_1.toAssetId)({
168
+ chainNamespace,
169
+ chainReference: constants_1.CHAIN_REFERENCE.BnbSmartChainMainnet,
170
+ assetNamespace: 'bep20',
171
+ assetReference: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',
172
+ });
173
+ const usdcOnPolygonBridged = (0, assetId_1.toAssetId)({
174
+ chainNamespace,
175
+ chainReference: constants_1.CHAIN_REFERENCE.PolygonMainnet,
176
+ assetNamespace,
177
+ assetReference: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',
178
+ });
179
+ const usdcOnArbitrumNovaBridged = (0, assetId_1.toAssetId)({
180
+ chainNamespace,
181
+ chainReference: constants_1.CHAIN_REFERENCE.ArbitrumNovaMainnet,
182
+ assetNamespace,
183
+ assetReference: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b',
184
+ });
185
+ const usdcOnGnosisBridged = (0, assetId_1.toAssetId)({
186
+ chainNamespace,
187
+ chainReference: constants_1.CHAIN_REFERENCE.GnosisMainnet,
188
+ assetNamespace,
189
+ assetReference: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83',
190
+ });
191
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('binance-bridged-usdc-bnb-smart-chain')).toEqual([
192
+ usdcOnBscBridged,
193
+ ]);
194
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('bridged-usdc-polygon-pos-bridge')).toEqual([usdcOnPolygonBridged]);
195
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('gnosis-xdai-bridged-usdc-gnosis')).toEqual([usdcOnGnosisBridged]);
196
+ (0, vitest_1.expect)((0, _1.coingeckoToAssetIds)('official-arbitrum-bridged-usdc-arbitrum-nova')).toEqual([
197
+ usdcOnArbitrumNovaBridged,
198
+ ]);
199
+ });
200
+ });
201
+ (0, vitest_1.describe)('assetIdToCoingecko', () => {
202
+ (0, vitest_1.it)('can get CoinGecko id for bitcoin AssetId', () => {
203
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Utxo;
204
+ const chainReference = constants_1.CHAIN_REFERENCE.BitcoinMainnet;
205
+ const assetId = (0, assetId_1.toAssetId)({
206
+ chainNamespace,
207
+ chainReference,
208
+ assetNamespace: 'slip44',
209
+ assetReference: constants_1.ASSET_REFERENCE.Bitcoin,
210
+ });
211
+ (0, vitest_1.expect)((0, _1.assetIdToCoingecko)(assetId)).toEqual('bitcoin');
212
+ });
213
+ (0, vitest_1.it)('can get CoinGecko id for ethereum AssetId', () => {
214
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
215
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
216
+ const assetId = (0, assetId_1.toAssetId)({
217
+ chainNamespace,
218
+ chainReference,
219
+ assetNamespace: 'slip44',
220
+ assetReference: constants_1.ASSET_REFERENCE.Ethereum,
221
+ });
222
+ (0, vitest_1.expect)((0, _1.assetIdToCoingecko)(assetId)).toEqual('ethereum');
223
+ });
224
+ (0, vitest_1.it)('can get CoinGecko id for FOX', () => {
225
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
226
+ const chainReference = constants_1.CHAIN_REFERENCE.EthereumMainnet;
227
+ const assetNamespace = 'erc20';
228
+ const assetReference = '0xc770eefad204b5180df6a14ee197d99d808ee52d';
229
+ const assetId = (0, assetId_1.toAssetId)({ chainNamespace, chainReference, assetNamespace, assetReference });
230
+ (0, vitest_1.expect)((0, _1.assetIdToCoingecko)(assetId)).toEqual('shapeshift-fox-token');
231
+ });
232
+ (0, vitest_1.it)('can get CoinGecko id for cosmos AssetId', () => {
233
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.CosmosSdk;
234
+ const chainReference = constants_1.CHAIN_REFERENCE.CosmosHubMainnet;
235
+ const assetId = (0, assetId_1.toAssetId)({
236
+ chainNamespace,
237
+ chainReference,
238
+ assetNamespace: 'slip44',
239
+ assetReference: constants_1.ASSET_REFERENCE.Cosmos,
240
+ });
241
+ (0, vitest_1.expect)((0, _1.assetIdToCoingecko)(assetId)).toEqual('cosmos');
242
+ });
243
+ (0, vitest_1.it)('can get CoinGecko id for polygon AssetId', () => {
244
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
245
+ const chainReference = constants_1.CHAIN_REFERENCE.PolygonMainnet;
246
+ const assetId = (0, assetId_1.toAssetId)({
247
+ chainNamespace,
248
+ chainReference,
249
+ assetNamespace: 'slip44',
250
+ assetReference: constants_1.ASSET_REFERENCE.Polygon,
251
+ });
252
+ (0, vitest_1.expect)((0, _1.assetIdToCoingecko)(assetId)).toEqual('matic-network');
253
+ });
254
+ (0, vitest_1.it)('can get CoinGecko id for gnosis AssetId', () => {
255
+ const chainNamespace = constants_1.CHAIN_NAMESPACE.Evm;
256
+ const chainReference = constants_1.CHAIN_REFERENCE.GnosisMainnet;
257
+ const assetId = (0, assetId_1.toAssetId)({
258
+ chainNamespace,
259
+ chainReference,
260
+ assetNamespace: 'slip44',
261
+ assetReference: constants_1.ASSET_REFERENCE.Gnosis,
262
+ });
263
+ (0, vitest_1.expect)((0, _1.assetIdToCoingecko)(assetId)).toEqual('xdai');
264
+ });
265
+ });
266
+ (0, vitest_1.describe)('chainIdToCoingeckoAssetPlatform', () => {
267
+ (0, vitest_1.it)('can get CoinGecko asset platform from ChainId', () => {
268
+ const chainId = constants_1.ethChainId;
269
+ (0, vitest_1.expect)((0, _1.chainIdToCoingeckoAssetPlatform)(chainId)).toEqual(_1.CoingeckoAssetPlatform.Ethereum);
270
+ });
271
+ (0, vitest_1.it)('throws on invalid ChainId', () => {
272
+ const chainId = constants_1.btcChainId;
273
+ (0, vitest_1.expect)(() => (0, _1.chainIdToCoingeckoAssetPlatform)(chainId)).toThrow();
274
+ });
275
+ });
276
+ });
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.writeFiles = exports.parseData = exports.fetchData = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const assetId_1 = require("../../assetId/assetId");
10
+ const constants_1 = require("../../constants");
11
+ const utils_1 = require("../../utils");
12
+ const _1 = require(".");
13
+ const fetchData = async (URL) => (await axios_1.default.get(URL)).data;
14
+ exports.fetchData = fetchData;
15
+ const parseData = (coins) => {
16
+ const assetMap = coins.reduce((prev, { id, platforms }) => {
17
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Ethereum)) {
18
+ try {
19
+ const assetId = (0, assetId_1.toAssetId)({
20
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
21
+ chainReference: constants_1.CHAIN_REFERENCE.EthereumMainnet,
22
+ assetNamespace: 'erc20',
23
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Ethereum],
24
+ });
25
+ prev[constants_1.ethChainId][assetId] = id;
26
+ }
27
+ catch {
28
+ // unable to create assetId, skip token
29
+ }
30
+ }
31
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Avalanche)) {
32
+ try {
33
+ const assetId = (0, assetId_1.toAssetId)({
34
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
35
+ chainReference: constants_1.CHAIN_REFERENCE.AvalancheCChain,
36
+ assetNamespace: 'erc20',
37
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Avalanche],
38
+ });
39
+ prev[constants_1.avalancheChainId][assetId] = id;
40
+ }
41
+ catch {
42
+ // unable to create assetId, skip token
43
+ }
44
+ }
45
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Optimism)) {
46
+ try {
47
+ const assetId = (0, assetId_1.toAssetId)({
48
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
49
+ chainReference: constants_1.CHAIN_REFERENCE.OptimismMainnet,
50
+ assetNamespace: 'erc20',
51
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Optimism],
52
+ });
53
+ prev[constants_1.optimismChainId][assetId] = id;
54
+ }
55
+ catch {
56
+ // unable to create assetId, skip token
57
+ }
58
+ }
59
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.BnbSmartChain)) {
60
+ try {
61
+ const assetId = (0, assetId_1.toAssetId)({
62
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
63
+ chainReference: constants_1.CHAIN_REFERENCE.BnbSmartChainMainnet,
64
+ assetNamespace: 'bep20',
65
+ assetReference: platforms[_1.CoingeckoAssetPlatform.BnbSmartChain],
66
+ });
67
+ prev[constants_1.bscChainId][assetId] = id;
68
+ }
69
+ catch {
70
+ // unable to create assetId, skip token
71
+ }
72
+ }
73
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Polygon)) {
74
+ try {
75
+ const assetId = (0, assetId_1.toAssetId)({
76
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
77
+ chainReference: constants_1.CHAIN_REFERENCE.PolygonMainnet,
78
+ assetNamespace: 'erc20',
79
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Polygon],
80
+ });
81
+ prev[constants_1.polygonChainId][assetId] = id;
82
+ }
83
+ catch (err) {
84
+ // unable to create assetId, skip token
85
+ }
86
+ }
87
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Gnosis)) {
88
+ try {
89
+ const assetId = (0, assetId_1.toAssetId)({
90
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
91
+ chainReference: constants_1.CHAIN_REFERENCE.GnosisMainnet,
92
+ assetNamespace: 'erc20',
93
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Gnosis],
94
+ });
95
+ prev[constants_1.gnosisChainId][assetId] = id;
96
+ }
97
+ catch (err) {
98
+ // unable to create assetId, skip token
99
+ }
100
+ }
101
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Arbitrum)) {
102
+ try {
103
+ const assetId = (0, assetId_1.toAssetId)({
104
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
105
+ chainReference: constants_1.CHAIN_REFERENCE.ArbitrumMainnet,
106
+ assetNamespace: 'erc20',
107
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Arbitrum],
108
+ });
109
+ prev[constants_1.arbitrumChainId][assetId] = id;
110
+ }
111
+ catch (err) {
112
+ // unable to create assetId, skip token
113
+ }
114
+ }
115
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.ArbitrumNova)) {
116
+ try {
117
+ const assetId = (0, assetId_1.toAssetId)({
118
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
119
+ chainReference: constants_1.CHAIN_REFERENCE.ArbitrumNovaMainnet,
120
+ assetNamespace: 'erc20',
121
+ assetReference: platforms[_1.CoingeckoAssetPlatform.ArbitrumNova],
122
+ });
123
+ prev[constants_1.arbitrumNovaChainId][assetId] = id;
124
+ }
125
+ catch (err) {
126
+ // unable to create assetId, skip token
127
+ }
128
+ }
129
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Base)) {
130
+ try {
131
+ const assetId = (0, assetId_1.toAssetId)({
132
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Evm,
133
+ chainReference: constants_1.CHAIN_REFERENCE.BaseMainnet,
134
+ assetNamespace: 'erc20',
135
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Base],
136
+ });
137
+ prev[constants_1.baseChainId][assetId] = id;
138
+ }
139
+ catch {
140
+ // unable to create assetId, skip token
141
+ }
142
+ }
143
+ if (Object.keys(platforms).includes(_1.CoingeckoAssetPlatform.Solana)) {
144
+ try {
145
+ const assetId = (0, assetId_1.toAssetId)({
146
+ chainNamespace: constants_1.CHAIN_NAMESPACE.Solana,
147
+ chainReference: constants_1.CHAIN_REFERENCE.SolanaMainnet,
148
+ assetNamespace: 'token',
149
+ assetReference: platforms[_1.CoingeckoAssetPlatform.Solana],
150
+ });
151
+ prev[constants_1.solanaChainId][assetId] = id;
152
+ }
153
+ catch {
154
+ // unable to create assetId, skip token
155
+ }
156
+ }
157
+ return prev;
158
+ }, {
159
+ [constants_1.ethChainId]: { [constants_1.ethAssetId]: 'ethereum' },
160
+ [constants_1.avalancheChainId]: { [constants_1.avalancheAssetId]: 'avalanche-2' },
161
+ [constants_1.optimismChainId]: { [constants_1.optimismAssetId]: 'ethereum' },
162
+ [constants_1.bscChainId]: { [constants_1.bscAssetId]: 'binancecoin' },
163
+ [constants_1.polygonChainId]: { [constants_1.polygonAssetId]: 'matic-network' },
164
+ [constants_1.gnosisChainId]: { [constants_1.gnosisAssetId]: 'xdai' },
165
+ [constants_1.arbitrumChainId]: { [constants_1.arbitrumAssetId]: 'ethereum' },
166
+ [constants_1.arbitrumNovaChainId]: { [constants_1.arbitrumNovaAssetId]: 'ethereum' },
167
+ [constants_1.baseChainId]: { [constants_1.baseAssetId]: 'ethereum' },
168
+ [constants_1.solanaChainId]: { [constants_1.solAssetId]: 'solana' },
169
+ });
170
+ return {
171
+ ...assetMap,
172
+ [constants_1.btcChainId]: utils_1.bitcoinAssetMap,
173
+ [constants_1.bchChainId]: utils_1.bitcoinCashAssetMap,
174
+ [constants_1.dogeChainId]: utils_1.dogecoinAssetMap,
175
+ [constants_1.ltcChainId]: utils_1.litecoinAssetMap,
176
+ [constants_1.cosmosChainId]: utils_1.cosmosAssetMap,
177
+ [constants_1.thorchainChainId]: utils_1.thorchainAssetMap,
178
+ [constants_1.mayachainChainId]: utils_1.mayachainAssetMap,
179
+ };
180
+ };
181
+ exports.parseData = parseData;
182
+ const writeFiles = async (data) => {
183
+ await Promise.all(Object.entries(data).map(async ([chainId, assets]) => {
184
+ const dirPath = `./src/adapters/coingecko/generated/${chainId}`.replace(':', '_');
185
+ await fs_1.default.promises.mkdir(dirPath, { recursive: true });
186
+ await fs_1.default.promises.writeFile(`${dirPath}/adapter.json`, JSON.stringify(assets));
187
+ }));
188
+ console.info('Generated CoinGecko AssetId adapter data.');
189
+ };
190
+ exports.writeFiles = writeFiles;