@sentio/sdk 2.0.0-rc.1 → 2.0.0-rc.11

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 (313) hide show
  1. package/lib/builtin/eacaggregatorproxy/index.d.ts +3 -2
  2. package/lib/builtin/eacaggregatorproxy/index.js +3 -5
  3. package/lib/builtin/eacaggregatorproxy/index.js.map +1 -1
  4. package/lib/builtin/eacaggregatorproxy/test-utils.d.ts +1 -1
  5. package/lib/builtin/eacaggregatorproxy/test-utils.js +9 -16
  6. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -1
  7. package/lib/builtin/erc1155/index.d.ts +3 -2
  8. package/lib/builtin/erc1155/index.js +3 -5
  9. package/lib/builtin/erc1155/index.js.map +1 -1
  10. package/lib/builtin/erc1155/test-utils.d.ts +1 -1
  11. package/lib/builtin/erc1155/test-utils.js +9 -16
  12. package/lib/builtin/erc1155/test-utils.js.map +1 -1
  13. package/lib/builtin/erc20/index.d.ts +3 -2
  14. package/lib/builtin/erc20/index.js +3 -5
  15. package/lib/builtin/erc20/index.js.map +1 -1
  16. package/lib/builtin/erc20/test-utils.d.ts +1 -1
  17. package/lib/builtin/erc20/test-utils.js +7 -13
  18. package/lib/builtin/erc20/test-utils.js.map +1 -1
  19. package/lib/builtin/erc20bytes/index.d.ts +3 -2
  20. package/lib/builtin/erc20bytes/index.js +3 -5
  21. package/lib/builtin/erc20bytes/index.js.map +1 -1
  22. package/lib/builtin/erc20bytes/test-utils.d.ts +1 -1
  23. package/lib/builtin/erc20bytes/test-utils.js +5 -10
  24. package/lib/builtin/erc20bytes/test-utils.js.map +1 -1
  25. package/lib/builtin/erc721/index.d.ts +3 -2
  26. package/lib/builtin/erc721/index.js +3 -5
  27. package/lib/builtin/erc721/index.js.map +1 -1
  28. package/lib/builtin/erc721/test-utils.d.ts +1 -1
  29. package/lib/builtin/erc721/test-utils.js +7 -13
  30. package/lib/builtin/erc721/test-utils.js.map +1 -1
  31. package/lib/builtin/index.d.ts +8 -4
  32. package/lib/builtin/index.js +8 -8
  33. package/lib/builtin/index.js.map +1 -1
  34. package/lib/builtin/internal/EACAggregatorProxy.d.ts +6 -6
  35. package/lib/builtin/internal/EACAggregatorProxy.js +1 -2
  36. package/lib/builtin/internal/EACAggregatorProxy.js.map +1 -1
  37. package/lib/builtin/internal/ERC1155.d.ts +6 -6
  38. package/lib/builtin/internal/ERC1155.js +1 -2
  39. package/lib/builtin/internal/ERC1155.js.map +1 -1
  40. package/lib/builtin/internal/ERC20.d.ts +5 -5
  41. package/lib/builtin/internal/ERC20.js +1 -2
  42. package/lib/builtin/internal/ERC20.js.map +1 -1
  43. package/lib/builtin/internal/ERC20Bytes.d.ts +4 -4
  44. package/lib/builtin/internal/ERC20Bytes.js +1 -2
  45. package/lib/builtin/internal/ERC20Bytes.js.map +1 -1
  46. package/lib/builtin/internal/ERC721.d.ts +5 -5
  47. package/lib/builtin/internal/ERC721.js +1 -2
  48. package/lib/builtin/internal/ERC721.js.map +1 -1
  49. package/lib/builtin/internal/WETH9.d.ts +6 -6
  50. package/lib/builtin/internal/WETH9.js +1 -2
  51. package/lib/builtin/internal/WETH9.js.map +1 -1
  52. package/lib/builtin/internal/common.d.ts +4 -2
  53. package/lib/builtin/internal/common.js +1 -2
  54. package/lib/builtin/internal/common.js.map +1 -1
  55. package/lib/builtin/internal/eacaggregatorproxy_processor.d.ts +2 -2
  56. package/lib/builtin/internal/eacaggregatorproxy_processor.js +69 -77
  57. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -1
  58. package/lib/builtin/internal/erc1155_processor.d.ts +2 -2
  59. package/lib/builtin/internal/erc1155_processor.js +30 -38
  60. package/lib/builtin/internal/erc1155_processor.js.map +1 -1
  61. package/lib/builtin/internal/erc20_processor.d.ts +2 -2
  62. package/lib/builtin/internal/erc20_processor.js +39 -47
  63. package/lib/builtin/internal/erc20_processor.js.map +1 -1
  64. package/lib/builtin/internal/erc20bytes_processor.d.ts +2 -2
  65. package/lib/builtin/internal/erc20bytes_processor.js +33 -41
  66. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -1
  67. package/lib/builtin/internal/erc721_processor.d.ts +2 -2
  68. package/lib/builtin/internal/erc721_processor.js +42 -50
  69. package/lib/builtin/internal/erc721_processor.js.map +1 -1
  70. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +1 -1
  71. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js +4 -8
  72. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -1
  73. package/lib/builtin/internal/factories/ERC1155__factory.d.ts +1 -1
  74. package/lib/builtin/internal/factories/ERC1155__factory.js +4 -8
  75. package/lib/builtin/internal/factories/ERC1155__factory.js.map +1 -1
  76. package/lib/builtin/internal/factories/ERC20Bytes__factory.d.ts +1 -1
  77. package/lib/builtin/internal/factories/ERC20Bytes__factory.js +4 -8
  78. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -1
  79. package/lib/builtin/internal/factories/ERC20__factory.d.ts +1 -1
  80. package/lib/builtin/internal/factories/ERC20__factory.js +4 -8
  81. package/lib/builtin/internal/factories/ERC20__factory.js.map +1 -1
  82. package/lib/builtin/internal/factories/ERC721__factory.d.ts +1 -1
  83. package/lib/builtin/internal/factories/ERC721__factory.js +4 -8
  84. package/lib/builtin/internal/factories/ERC721__factory.js.map +1 -1
  85. package/lib/builtin/internal/factories/WETH9__factory.d.ts +1 -1
  86. package/lib/builtin/internal/factories/WETH9__factory.js +4 -8
  87. package/lib/builtin/internal/factories/WETH9__factory.js.map +1 -1
  88. package/lib/builtin/internal/factories/index.d.ts +6 -6
  89. package/lib/builtin/internal/factories/index.js +6 -15
  90. package/lib/builtin/internal/factories/index.js.map +1 -1
  91. package/lib/builtin/internal/index.d.ts +13 -13
  92. package/lib/builtin/internal/index.js +7 -17
  93. package/lib/builtin/internal/index.js.map +1 -1
  94. package/lib/builtin/internal/weth9_processor.d.ts +2 -2
  95. package/lib/builtin/internal/weth9_processor.js +33 -41
  96. package/lib/builtin/internal/weth9_processor.js.map +1 -1
  97. package/lib/builtin/weth9/index.d.ts +3 -2
  98. package/lib/builtin/weth9/index.js +3 -5
  99. package/lib/builtin/weth9/index.js.map +1 -1
  100. package/lib/builtin/weth9/test-utils.d.ts +1 -1
  101. package/lib/builtin/weth9/test-utils.js +9 -16
  102. package/lib/builtin/weth9/test-utils.js.map +1 -1
  103. package/lib/core/base-context.d.ts +4 -4
  104. package/lib/core/base-context.js +7 -11
  105. package/lib/core/base-context.js.map +1 -1
  106. package/lib/core/big-decimal.js +3 -7
  107. package/lib/core/big-decimal.js.map +1 -1
  108. package/lib/core/bind-options.js +6 -13
  109. package/lib/core/bind-options.js.map +1 -1
  110. package/lib/core/context.d.ts +5 -5
  111. package/lib/core/context.js +14 -23
  112. package/lib/core/context.js.map +1 -1
  113. package/lib/core/core-plugin.js +9 -13
  114. package/lib/core/core-plugin.js.map +1 -1
  115. package/lib/core/event-tracker.d.ts +2 -2
  116. package/lib/core/event-tracker.js +6 -13
  117. package/lib/core/event-tracker.js.map +1 -1
  118. package/lib/core/exporter.d.ts +2 -2
  119. package/lib/core/exporter.js +4 -9
  120. package/lib/core/exporter.js.map +1 -1
  121. package/lib/core/index.d.ts +12 -9
  122. package/lib/core/index.js +12 -32
  123. package/lib/core/index.js.map +1 -1
  124. package/lib/core/logger.d.ts +2 -2
  125. package/lib/core/logger.js +7 -11
  126. package/lib/core/logger.js.map +1 -1
  127. package/lib/core/metadata.d.ts +4 -0
  128. package/lib/core/metadata.js +21 -7
  129. package/lib/core/metadata.js.map +1 -1
  130. package/lib/core/meter.d.ts +3 -7
  131. package/lib/core/meter.js +22 -57
  132. package/lib/core/meter.js.map +1 -1
  133. package/lib/core/meter.test.js.map +1 -1
  134. package/lib/core/numberish.d.ts +1 -1
  135. package/lib/core/numberish.js +12 -18
  136. package/lib/core/numberish.js.map +1 -1
  137. package/lib/core/numberish.test.js.map +1 -1
  138. package/lib/core/sui-plugin.js +12 -16
  139. package/lib/core/sui-plugin.js.map +1 -1
  140. package/lib/core/sui-processor.d.ts +1 -1
  141. package/lib/core/sui-processor.js +6 -12
  142. package/lib/core/sui-processor.js.map +1 -1
  143. package/lib/error.d.ts +1 -1
  144. package/lib/error.js +2 -7
  145. package/lib/error.js.map +1 -1
  146. package/lib/eth/account-processor-state.d.ts +1 -1
  147. package/lib/eth/account-processor-state.js +2 -6
  148. package/lib/eth/account-processor-state.js.map +1 -1
  149. package/lib/eth/account-processor.d.ts +7 -7
  150. package/lib/eth/account-processor.js +23 -27
  151. package/lib/eth/account-processor.js.map +1 -1
  152. package/lib/eth/base-processor-template.d.ts +9 -9
  153. package/lib/eth/base-processor-template.js +8 -17
  154. package/lib/eth/base-processor-template.js.map +1 -1
  155. package/lib/eth/base-processor.d.ts +8 -8
  156. package/lib/eth/base-processor.js +22 -31
  157. package/lib/eth/base-processor.js.map +1 -1
  158. package/lib/eth/binds.d.ts +3 -3
  159. package/lib/eth/binds.js +11 -19
  160. package/lib/eth/binds.js.map +1 -1
  161. package/lib/eth/eth-event.d.ts +5 -0
  162. package/lib/eth/eth-event.js +2 -0
  163. package/lib/eth/eth-event.js.map +1 -0
  164. package/lib/eth/eth-plugin.js +30 -34
  165. package/lib/eth/eth-plugin.js.map +1 -1
  166. package/lib/eth/generic-processor.d.ts +3 -3
  167. package/lib/eth/generic-processor.js +9 -13
  168. package/lib/eth/generic-processor.js.map +1 -1
  169. package/lib/{core → eth}/generic-processor.test.d.ts +0 -0
  170. package/lib/eth/generic-processor.test.js.map +1 -0
  171. package/lib/eth/index.d.ts +7 -6
  172. package/lib/eth/index.js +6 -14
  173. package/lib/eth/index.js.map +1 -1
  174. package/lib/eth/provider.js +12 -17
  175. package/lib/eth/provider.js.map +1 -1
  176. package/lib/eth/trace.js +1 -2
  177. package/lib/eth/trace.js.map +1 -1
  178. package/lib/index.d.ts +4 -5
  179. package/lib/index.js +5 -16
  180. package/lib/index.js.map +1 -1
  181. package/lib/promise-or-void.js +1 -2
  182. package/lib/target-ethers-sentio/{event-handler.js → event-handler.cjs} +4 -4
  183. package/lib/target-ethers-sentio/event-handler.cjs.map +1 -0
  184. package/lib/target-ethers-sentio/{event-handler.d.ts → event-handler.d.cts} +0 -0
  185. package/lib/target-ethers-sentio/{file.js → file.cjs} +19 -18
  186. package/lib/target-ethers-sentio/file.cjs.map +1 -0
  187. package/lib/target-ethers-sentio/{file.d.ts → file.d.cts} +0 -0
  188. package/lib/target-ethers-sentio/{functions-handler.js → functions-handler.cjs} +6 -7
  189. package/lib/target-ethers-sentio/functions-handler.cjs.map +1 -0
  190. package/lib/target-ethers-sentio/{functions-handler.d.ts → functions-handler.d.cts} +0 -0
  191. package/lib/target-ethers-sentio/{index.js → index.cjs} +8 -5
  192. package/lib/target-ethers-sentio/index.cjs.map +1 -0
  193. package/lib/target-ethers-sentio/{index.d.ts → index.d.cts} +0 -0
  194. package/lib/target-ethers-sentio/{types.js → types.cjs} +1 -1
  195. package/lib/target-ethers-sentio/types.cjs.map +1 -0
  196. package/lib/target-ethers-sentio/{types.d.ts → types.d.cts} +0 -0
  197. package/lib/target-ethers-sentio/{view-function.js → view-function.cjs} +5 -5
  198. package/lib/target-ethers-sentio/view-function.cjs.map +1 -0
  199. package/lib/target-ethers-sentio/{view-function.d.ts → view-function.d.cts} +0 -0
  200. package/lib/testing/index.d.ts +3 -2
  201. package/lib/testing/index.js +3 -10
  202. package/lib/testing/index.js.map +1 -1
  203. package/lib/testing/metric-utils.d.ts +1 -1
  204. package/lib/testing/metric-utils.js +7 -13
  205. package/lib/testing/metric-utils.js.map +1 -1
  206. package/lib/testing/test-processor-server.d.ts +3 -4
  207. package/lib/testing/test-processor-server.js +24 -29
  208. package/lib/testing/test-processor-server.js.map +1 -1
  209. package/lib/testing/test-provider.js +5 -9
  210. package/lib/testing/test-provider.js.map +1 -1
  211. package/lib/tsup.config.ts +28 -0
  212. package/lib/utils/chain.js +7 -12
  213. package/lib/utils/chain.js.map +1 -1
  214. package/lib/utils/conversion.d.ts +0 -5
  215. package/lib/utils/conversion.js +22 -27
  216. package/lib/utils/conversion.js.map +1 -1
  217. package/lib/utils/dex-price.js +14 -19
  218. package/lib/utils/dex-price.js.map +1 -1
  219. package/lib/utils/dex-price.test.js.map +1 -1
  220. package/lib/utils/erc20.test.js.map +1 -1
  221. package/lib/utils/index.d.ts +4 -4
  222. package/lib/utils/index.js +4 -8
  223. package/lib/utils/index.js.map +1 -1
  224. package/lib/utils/price.d.ts +11 -11
  225. package/lib/utils/price.js +10 -16
  226. package/lib/utils/price.js.map +1 -1
  227. package/lib/utils/token.d.ts +1 -1
  228. package/lib/utils/token.js +15 -21
  229. package/lib/utils/token.js.map +1 -1
  230. package/package.json +23 -19
  231. package/src/builtin/eacaggregatorproxy/index.ts +3 -2
  232. package/src/builtin/eacaggregatorproxy/test-utils.ts +1 -1
  233. package/src/builtin/erc1155/index.ts +3 -2
  234. package/src/builtin/erc1155/test-utils.ts +1 -1
  235. package/src/builtin/erc20/index.ts +3 -2
  236. package/src/builtin/erc20/test-utils.ts +1 -1
  237. package/src/builtin/erc20bytes/index.ts +3 -2
  238. package/src/builtin/erc20bytes/test-utils.ts +1 -1
  239. package/src/builtin/erc721/index.ts +3 -2
  240. package/src/builtin/erc721/test-utils.ts +1 -1
  241. package/src/builtin/index.ts +8 -4
  242. package/src/builtin/internal/EACAggregatorProxy.ts +6 -10
  243. package/src/builtin/internal/ERC1155.ts +6 -10
  244. package/src/builtin/internal/ERC20.ts +5 -8
  245. package/src/builtin/internal/ERC20Bytes.ts +4 -6
  246. package/src/builtin/internal/ERC721.ts +5 -8
  247. package/src/builtin/internal/WETH9.ts +6 -10
  248. package/src/builtin/internal/common.ts +5 -29
  249. package/src/builtin/internal/eacaggregatorproxy_processor.ts +2 -2
  250. package/src/builtin/internal/erc1155_processor.ts +2 -2
  251. package/src/builtin/internal/erc20_processor.ts +2 -2
  252. package/src/builtin/internal/erc20bytes_processor.ts +2 -2
  253. package/src/builtin/internal/erc721_processor.ts +2 -2
  254. package/src/builtin/internal/factories/EACAggregatorProxy__factory.ts +1 -1
  255. package/src/builtin/internal/factories/ERC1155__factory.ts +1 -1
  256. package/src/builtin/internal/factories/ERC20Bytes__factory.ts +1 -1
  257. package/src/builtin/internal/factories/ERC20__factory.ts +1 -1
  258. package/src/builtin/internal/factories/ERC721__factory.ts +1 -1
  259. package/src/builtin/internal/factories/WETH9__factory.ts +1 -1
  260. package/src/builtin/internal/factories/index.ts +6 -6
  261. package/src/builtin/internal/index.ts +13 -13
  262. package/src/builtin/internal/weth9_processor.ts +2 -2
  263. package/src/builtin/weth9/index.ts +3 -2
  264. package/src/builtin/weth9/test-utils.ts +1 -1
  265. package/src/core/base-context.ts +4 -4
  266. package/src/core/context.ts +5 -6
  267. package/src/core/core-plugin.ts +3 -3
  268. package/src/core/event-tracker.ts +2 -2
  269. package/src/core/exporter.ts +3 -3
  270. package/src/core/index.ts +12 -9
  271. package/src/core/logger.ts +2 -2
  272. package/src/core/metadata.ts +23 -2
  273. package/src/core/meter.ts +3 -26
  274. package/src/core/numberish.ts +1 -1
  275. package/src/core/sui-plugin.ts +2 -2
  276. package/src/core/sui-processor.ts +1 -1
  277. package/src/error.ts +1 -1
  278. package/src/eth/account-processor-state.ts +1 -1
  279. package/src/eth/account-processor.ts +11 -11
  280. package/src/eth/base-processor-template.ts +8 -11
  281. package/src/eth/base-processor.ts +14 -28
  282. package/src/eth/binds.ts +3 -3
  283. package/src/eth/eth-event.ts +6 -0
  284. package/src/eth/eth-plugin.ts +3 -3
  285. package/src/eth/generic-processor.ts +5 -5
  286. package/src/eth/index.ts +8 -6
  287. package/src/index.ts +4 -6
  288. package/src/target-ethers-sentio/{event-handler.ts → event-handler.cts} +1 -1
  289. package/src/target-ethers-sentio/{file.ts → file.cts} +10 -9
  290. package/src/target-ethers-sentio/{functions-handler.ts → functions-handler.cts} +3 -4
  291. package/src/target-ethers-sentio/{index.ts → index.cts} +4 -1
  292. package/src/target-ethers-sentio/tsconfig.json +1 -1
  293. package/src/target-ethers-sentio/{types.ts → types.cts} +0 -0
  294. package/src/target-ethers-sentio/{view-function.ts → view-function.cts} +1 -1
  295. package/src/testing/index.ts +3 -3
  296. package/src/testing/metric-utils.ts +2 -2
  297. package/src/testing/test-processor-server.ts +5 -5
  298. package/src/testing/test-provider.ts +1 -1
  299. package/src/tsup.config.ts +28 -0
  300. package/src/utils/conversion.ts +21 -25
  301. package/src/utils/dex-price.ts +4 -5
  302. package/src/utils/index.ts +4 -4
  303. package/src/utils/price.ts +1 -1
  304. package/src/utils/token.ts +6 -6
  305. package/lib/core/generic-processor.test.js.map +0 -1
  306. package/lib/target-ethers-sentio/event-handler.js.map +0 -1
  307. package/lib/target-ethers-sentio/file.js.map +0 -1
  308. package/lib/target-ethers-sentio/functions-handler.js.map +0 -1
  309. package/lib/target-ethers-sentio/index.js.map +0 -1
  310. package/lib/target-ethers-sentio/types.js.map +0 -1
  311. package/lib/target-ethers-sentio/view-function.js.map +0 -1
  312. package/lib/webpack.config.js +0 -50
  313. package/src/webpack.config.js +0 -50
@@ -1,19 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoerliDexPrice = exports.EthereumDexPrice = exports.PriceUnit = void 0;
4
- const tslib_1 = require("tslib");
5
- const eacaggregatorproxy_processor_1 = require("../builtin/internal/eacaggregatorproxy_processor");
6
- const path_1 = tslib_1.__importDefault(require("path"));
7
- const fs_1 = tslib_1.__importDefault(require("fs"));
8
- // @ts-ignore type def not provided
9
- const sync_1 = require("csv-parse/sync");
10
- const token_1 = require("./token");
11
- var PriceUnit;
1
+ import { getEACAggregatorProxyContract } from '../builtin/internal/eacaggregatorproxy_processor.js';
2
+ import fs from 'fs';
3
+ import { parse } from 'csv-parse/sync';
4
+ import { scaleDown } from './token.js';
5
+ import url from 'url';
6
+ export var PriceUnit;
12
7
  (function (PriceUnit) {
13
8
  PriceUnit[PriceUnit["USD"] = 0] = "USD";
14
9
  PriceUnit[PriceUnit["ETH"] = 1] = "ETH";
15
10
  PriceUnit[PriceUnit["BTC"] = 2] = "BTC";
16
- })(PriceUnit = exports.PriceUnit || (exports.PriceUnit = {}));
11
+ })(PriceUnit || (PriceUnit = {}));
17
12
  // Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum
18
13
  // and then use EACAggregatorProxy contract to get price
19
14
  class DexPrice {
@@ -24,10 +19,10 @@ class DexPrice {
24
19
  chainId;
25
20
  constructor(csvFileName, chainId) {
26
21
  this.chainId = chainId;
27
- const csvFilePath = path_1.default.resolve(__dirname, csvFileName);
28
- const fileContent = fs_1.default.readFileSync(csvFilePath, { encoding: 'utf-8' });
22
+ const csvFilePath = url.fileURLToPath(new URL('./' + csvFileName, import.meta.url));
23
+ const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' });
29
24
  const headers = ['Pair', 'Asset', 'Type', 'Address'];
30
- const records = (0, sync_1.parse)(fileContent, {
25
+ const records = parse(fileContent, {
31
26
  delimiter: ',',
32
27
  columns: headers,
33
28
  skip_empty_lines: true,
@@ -80,7 +75,7 @@ class DexPrice {
80
75
  error: 'No price feed found for asset',
81
76
  };
82
77
  }
83
- const contract = (0, eacaggregatorproxy_processor_1.getEACAggregatorProxyContract)(addr, this.chainId);
78
+ const contract = getEACAggregatorProxyContract(addr, this.chainId);
84
79
  try {
85
80
  const price = await contract.latestAnswer({
86
81
  blockTag: blockTag,
@@ -91,7 +86,7 @@ class DexPrice {
91
86
  this.ASSETS_INFOS.set(asset, decimal);
92
87
  }
93
88
  return {
94
- price: (0, token_1.scaleDown)(price, decimal).toNumber(),
89
+ price: scaleDown(price, decimal).toNumber(),
95
90
  };
96
91
  }
97
92
  catch (e) {
@@ -108,6 +103,6 @@ class DexPrice {
108
103
  }
109
104
  }
110
105
  }
111
- exports.EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1);
112
- exports.GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5);
106
+ export const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1);
107
+ export const GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5);
113
108
  //# sourceMappingURL=dex-price.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dex-price.js","sourceRoot":"","sources":["../../src/utils/dex-price.ts"],"names":[],"mappings":"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","sourcesContent":["import { getEACAggregatorProxyContract } from '../builtin/internal/eacaggregatorproxy_processor'\nimport path from 'path'\nimport fs from 'fs'\n// @ts-ignore type def not provided\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from 'ethers/providers'\nimport { scaleDown } from './token'\n\ntype OralceRecord = {\n Pair: string\n Asset: string\n Type: string\n Address: string\n}\n\nexport enum PriceUnit {\n USD = 0,\n ETH = 1,\n BTC = 2,\n}\n\nexport interface DexPriceResult {\n price?: number\n error?: string\n}\n\n// Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum\n// and then use EACAggregatorProxy contract to get price\nclass DexPrice {\n USD_ORACLE_MAP = new Map<string, string>()\n ETH_ORACLE_MAP = new Map<string, string>()\n BTC_ORACLE_MAP = new Map<string, string>()\n ASSETS_INFOS = new Map<string, number>()\n\n readonly chainId: number\n\n constructor(csvFileName: string, chainId: number) {\n this.chainId = chainId\n const csvFilePath = path.resolve(__dirname, csvFileName)\n const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' })\n const headers = ['Pair', 'Asset', 'Type', 'Address']\n\n const records: OralceRecord[] = parse(fileContent, {\n delimiter: ',',\n columns: headers,\n skip_empty_lines: true,\n })\n\n for (const record of records) {\n const pair = record.Pair.split('/')\n const asset = pair[0].trim().toLowerCase()\n const target = pair[1].trim().toLowerCase()\n const address = record.Address.toLowerCase()\n if (target === 'usd') {\n this.USD_ORACLE_MAP.set(asset, address)\n } else if (target === 'eth') {\n this.ETH_ORACLE_MAP.set(asset, address)\n } else if (target == 'btc') {\n this.BTC_ORACLE_MAP.set(asset, address)\n } else {\n console.error('wrong asset record:' + JSON.stringify(record))\n }\n\n // console.log(asset, target, address)\n }\n }\n\n // asset: symbol of the asset\n // unit: usd, eth or btc\n // blockTag: blockNumber of block symbol like \"latest\"\n // returns the asset price,\n // throw exception if calling to price feed failed, e.g. due to a invalid block number\n async getPrice(\n asset: string,\n blockTag: BlockTag = 'latest',\n unit: PriceUnit = PriceUnit.USD\n ): Promise<DexPriceResult> {\n // if (chainId !== 1 && chainId !== 5) {\n // return {\n // error: \"current dex price only support chain 1 (mainnet) or 5 (goerli)\"\n // }\n // }\n\n let oracleMap = this.USD_ORACLE_MAP\n switch (unit) {\n case PriceUnit.ETH:\n oracleMap = this.ETH_ORACLE_MAP\n break\n case PriceUnit.BTC:\n oracleMap = this.BTC_ORACLE_MAP\n break\n default:\n }\n\n asset = asset.trim().toLowerCase()\n\n const addr = oracleMap.get(asset)\n if (!addr) {\n return {\n error: 'No price feed found for asset',\n }\n }\n\n const contract = getEACAggregatorProxyContract(addr, this.chainId)\n try {\n const price = await contract.latestAnswer({\n blockTag: blockTag,\n })\n\n let decimal = this.ASSETS_INFOS.get(asset)\n if (!decimal) {\n decimal = Number(await contract.decimals())\n this.ASSETS_INFOS.set(asset, decimal)\n }\n\n return {\n price: scaleDown(price, decimal).toNumber(),\n }\n } catch (e) {\n return {\n error:\n 'Price query error for ' +\n asset +\n ' failed at ' +\n addr +\n ' at chain ' +\n this.chainId +\n '. Details: ' +\n e.toString(),\n }\n }\n }\n}\n\nexport const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1)\nexport const GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5)\n"]}
1
+ {"version":3,"file":"dex-price.js","sourceRoot":"","sources":["../../src/utils/dex-price.ts"],"names":[],"mappings":"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","sourcesContent":["import { getEACAggregatorProxyContract } from '../builtin/internal/eacaggregatorproxy_processor.js'\nimport fs from 'fs'\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from 'ethers/providers'\nimport { scaleDown } from './token.js'\nimport url from 'url'\n\ntype OralceRecord = {\n Pair: string\n Asset: string\n Type: string\n Address: string\n}\n\nexport enum PriceUnit {\n USD = 0,\n ETH = 1,\n BTC = 2,\n}\n\nexport interface DexPriceResult {\n price?: number\n error?: string\n}\n\n// Load price feed from https://docs.chain.link/docs/data-feeds/price-feeds/addresses/?network=ethereum\n// and then use EACAggregatorProxy contract to get price\nclass DexPrice {\n USD_ORACLE_MAP = new Map<string, string>()\n ETH_ORACLE_MAP = new Map<string, string>()\n BTC_ORACLE_MAP = new Map<string, string>()\n ASSETS_INFOS = new Map<string, number>()\n\n readonly chainId: number\n\n constructor(csvFileName: string, chainId: number) {\n this.chainId = chainId\n const csvFilePath = url.fileURLToPath(new URL('./' + csvFileName, import.meta.url))\n const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' })\n const headers = ['Pair', 'Asset', 'Type', 'Address']\n\n const records: OralceRecord[] = parse(fileContent, {\n delimiter: ',',\n columns: headers,\n skip_empty_lines: true,\n })\n\n for (const record of records) {\n const pair = record.Pair.split('/')\n const asset = pair[0].trim().toLowerCase()\n const target = pair[1].trim().toLowerCase()\n const address = record.Address.toLowerCase()\n if (target === 'usd') {\n this.USD_ORACLE_MAP.set(asset, address)\n } else if (target === 'eth') {\n this.ETH_ORACLE_MAP.set(asset, address)\n } else if (target == 'btc') {\n this.BTC_ORACLE_MAP.set(asset, address)\n } else {\n console.error('wrong asset record:' + JSON.stringify(record))\n }\n\n // console.log(asset, target, address)\n }\n }\n\n // asset: symbol of the asset\n // unit: usd, eth or btc\n // blockTag: blockNumber of block symbol like \"latest\"\n // returns the asset price,\n // throw exception if calling to price feed failed, e.g. due to a invalid block number\n async getPrice(\n asset: string,\n blockTag: BlockTag = 'latest',\n unit: PriceUnit = PriceUnit.USD\n ): Promise<DexPriceResult> {\n // if (chainId !== 1 && chainId !== 5) {\n // return {\n // error: \"current dex price only support chain 1 (mainnet) or 5 (goerli)\"\n // }\n // }\n\n let oracleMap = this.USD_ORACLE_MAP\n switch (unit) {\n case PriceUnit.ETH:\n oracleMap = this.ETH_ORACLE_MAP\n break\n case PriceUnit.BTC:\n oracleMap = this.BTC_ORACLE_MAP\n break\n default:\n }\n\n asset = asset.trim().toLowerCase()\n\n const addr = oracleMap.get(asset)\n if (!addr) {\n return {\n error: 'No price feed found for asset',\n }\n }\n\n const contract = getEACAggregatorProxyContract(addr, this.chainId)\n try {\n const price = await contract.latestAnswer({\n blockTag: blockTag,\n })\n\n let decimal = this.ASSETS_INFOS.get(asset)\n if (!decimal) {\n decimal = Number(await contract.decimals())\n this.ASSETS_INFOS.set(asset, decimal)\n }\n\n return {\n price: scaleDown(price, decimal).toNumber(),\n }\n } catch (e) {\n return {\n error:\n 'Price query error for ' +\n asset +\n ' failed at ' +\n addr +\n ' at chain ' +\n this.chainId +\n '. Details: ' +\n e.toString(),\n }\n }\n }\n}\n\nexport const EthereumDexPrice = new DexPrice('chainlink-oracles.csv', 1)\nexport const GoerliDexPrice = new DexPrice('chainlink-oracles-goerli.csv', 5)\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dex-price.test.js","sourceRoot":"","sources":["../../src/utils/dex-price.test.ts"],"names":[],"mappings":";;AAAA,2CAA8D;AAC9D,6CAAkD;AAClD,4DAAmE;AAEnE,+BAA6B;AAE7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,eAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,IAAA,wCAAwB,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,4BAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC9D,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAEjC,MAAM,QAAQ,GAAG,MAAM,4BAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClE,IAAA,aAAM,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,0BAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACzD,IAAA,aAAM,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { EthereumDexPrice, GoerliDexPrice } from './dex-price'\nimport { State, Endpoints } from '@sentio/runtime'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider'\n\nimport { expect } from 'chai'\n\ndescribe('dex price tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv(['1', '5'])\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('get price at mainnet', async () => {\n const usdc = await EthereumDexPrice.getPrice('usdc', 15677823)\n expect(usdc.price).eq(0.99991649)\n\n const compound = await EthereumDexPrice.getPrice('COMP', 15677823)\n expect(compound.price).eq(60.27)\n })\n\n testIf('get price at goerli', async () => {\n const dai = await GoerliDexPrice.getPrice('DAI', 7712734)\n expect(dai.price).eq(0.99971281)\n })\n})\n"]}
1
+ {"version":3,"file":"dex-price.test.js","sourceRoot":"","sources":["../../src/utils/dex-price.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,KAAK,EAAa,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,wBAAwB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC9D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAEjC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACzD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { EthereumDexPrice, GoerliDexPrice } from './dex-price.js'\nimport { State, Endpoints } from '@sentio/runtime'\nimport { loadTestProvidersFromEnv } from '@sentio/sdk/testing'\n\nimport { expect } from 'chai'\n\ndescribe('dex price tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv(['1', '5'])\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('get price at mainnet', async () => {\n const usdc = await EthereumDexPrice.getPrice('usdc', 15677823)\n expect(usdc.price).eq(0.99991649)\n\n const compound = await EthereumDexPrice.getPrice('COMP', 15677823)\n expect(compound.price).eq(60.27)\n })\n\n testIf('get price at goerli', async () => {\n const dai = await GoerliDexPrice.getPrice('DAI', 7712734)\n expect(dai.price).eq(0.99971281)\n })\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/utils/erc20.test.ts"],"names":[],"mappings":";;AAAA,6CAAkD;AAClD,mCAA2C;AAC3C,4DAAmE;AAEnE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,eAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,IAAA,wCAAwB,EAAC,GAAG,CAAC,CAAA;IAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAiB,EAAC,4CAA4C,CAAC,CAAA;QAElF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAiB,EAAC,4CAA4C,CAAC,CAAA;QAElF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { State, Endpoints } from '@sentio/runtime'\nimport { getERC20TokenInfo } from './token'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider'\n\ndescribe('erc20 tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv('1')\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('test bytes32', async () => {\n const info = await getERC20TokenInfo('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2')\n\n expect(info.decimal).toEqual(18)\n expect(info.symbol).toEqual('MKR')\n expect(info.name).toEqual('Maker')\n })\n\n testIf('test normal', async () => {\n const info = await getERC20TokenInfo('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48')\n\n expect(info.decimal).toEqual(6)\n expect(info.symbol).toEqual('USDC')\n expect(info.name).toEqual('USD Coin')\n })\n})\n"]}
1
+ {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/utils/erc20.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAEtE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,4CAA4C,CAAC,CAAA;QAElF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,4CAA4C,CAAC,CAAA;QAElF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { State, Endpoints } from '@sentio/runtime'\nimport { getERC20TokenInfo } from './token.js'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider.js'\n\ndescribe('erc20 tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv('1')\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('test bytes32', async () => {\n const info = await getERC20TokenInfo('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2')\n\n expect(info.decimal).toEqual(18)\n expect(info.symbol).toEqual('MKR')\n expect(info.name).toEqual('Maker')\n })\n\n testIf('test normal', async () => {\n const info = await getERC20TokenInfo('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48')\n\n expect(info.decimal).toEqual(6)\n expect(info.symbol).toEqual('USDC')\n expect(info.name).toEqual('USD Coin')\n })\n})\n"]}
@@ -1,4 +1,4 @@
1
- export * as chain from './chain';
2
- export * as conversion from './conversion';
3
- export * as token from './token';
4
- export * as dexPrice from './dex-price';
1
+ export * from './chain.js';
2
+ export * from './conversion.js';
3
+ export * from './token.js';
4
+ export * from './dex-price.js';
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dexPrice = exports.token = exports.conversion = exports.chain = void 0;
4
- const tslib_1 = require("tslib");
5
- exports.chain = tslib_1.__importStar(require("./chain"));
6
- exports.conversion = tslib_1.__importStar(require("./conversion"));
7
- exports.token = tslib_1.__importStar(require("./token"));
8
- exports.dexPrice = tslib_1.__importStar(require("./dex-price"));
1
+ export * from './chain.js';
2
+ export * from './conversion.js';
3
+ export * from './token.js';
4
+ export * from './dex-price.js';
9
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;AAAA,yDAAgC;AAChC,mEAA0C;AAC1C,yDAAgC;AAChC,gEAAuC","sourcesContent":["export * as chain from './chain'\nexport * as conversion from './conversion'\nexport * as token from './token'\nexport * as dexPrice from './dex-price'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA","sourcesContent":["export * from './chain.js'\nexport * from './conversion.js'\nexport * from './token.js'\nexport * from './dex-price.js'\n"]}
@@ -1,15 +1,15 @@
1
1
  import { RetryOptions } from 'nice-grpc-client-middleware-retry';
2
- export declare function getPriceClient(address?: string): import("nice-grpc").RawClient<import("nice-grpc/lib/service-definitions/ts-proto").FromTsProtoServiceDefinition<{
2
+ export declare function getPriceClient(address?: string): import("nice-grpc").RawClient<import("nice-grpc/lib/service-definitions/ts-proto.js").FromTsProtoServiceDefinition<{
3
3
  readonly name: "PriceService";
4
4
  readonly fullName: "price_service.PriceService";
5
5
  readonly methods: {
6
6
  readonly getPrice: {
7
7
  readonly name: "GetPrice";
8
8
  readonly requestType: {
9
- encode(message: import("@sentio/protos/lib/service/price/protos/price").GetPriceRequest, writer?: import("protobufjs").Writer | undefined): import("protobufjs").Writer;
10
- decode(input: Uint8Array | import("protobufjs").Reader, length?: number | undefined): import("@sentio/protos/lib/service/price/protos/price").GetPriceRequest;
11
- fromJSON(object: any): import("@sentio/protos/lib/service/price/protos/price").GetPriceRequest;
12
- toJSON(message: import("@sentio/protos/lib/service/price/protos/price").GetPriceRequest): unknown;
9
+ encode(message: import("@sentio/protos/price").GetPriceRequest, writer?: import("protobufjs").Writer | undefined): import("protobufjs").Writer;
10
+ decode(input: Uint8Array | import("protobufjs").Reader, length?: number | undefined): import("@sentio/protos/price").GetPriceRequest;
11
+ fromJSON(object: any): import("@sentio/protos/price").GetPriceRequest;
12
+ toJSON(message: import("@sentio/protos/price").GetPriceRequest): unknown;
13
13
  fromPartial(object: {
14
14
  timestamp?: Date | undefined;
15
15
  coinId?: {
@@ -19,18 +19,18 @@ export declare function getPriceClient(address?: string): import("nice-grpc").Ra
19
19
  chain?: string | undefined;
20
20
  } | undefined;
21
21
  } | undefined;
22
- }): import("@sentio/protos/lib/service/price/protos/price").GetPriceRequest;
22
+ }): import("@sentio/protos/price").GetPriceRequest;
23
23
  };
24
24
  readonly requestStream: false;
25
25
  readonly responseType: {
26
- encode(message: import("@sentio/protos/lib/service/price/protos/price").GetPriceResponse, writer?: import("protobufjs").Writer | undefined): import("protobufjs").Writer;
27
- decode(input: Uint8Array | import("protobufjs").Reader, length?: number | undefined): import("@sentio/protos/lib/service/price/protos/price").GetPriceResponse;
28
- fromJSON(object: any): import("@sentio/protos/lib/service/price/protos/price").GetPriceResponse;
29
- toJSON(message: import("@sentio/protos/lib/service/price/protos/price").GetPriceResponse): unknown;
26
+ encode(message: import("@sentio/protos/price").GetPriceResponse, writer?: import("protobufjs").Writer | undefined): import("protobufjs").Writer;
27
+ decode(input: Uint8Array | import("protobufjs").Reader, length?: number | undefined): import("@sentio/protos/price").GetPriceResponse;
28
+ fromJSON(object: any): import("@sentio/protos/price").GetPriceResponse;
29
+ toJSON(message: import("@sentio/protos/price").GetPriceResponse): unknown;
30
30
  fromPartial(object: {
31
31
  price?: number | undefined;
32
32
  timestamp?: Date | undefined;
33
- }): import("@sentio/protos/lib/service/price/protos/price").GetPriceResponse;
33
+ }): import("@sentio/protos/price").GetPriceResponse;
34
34
  };
35
35
  readonly responseStream: false;
36
36
  readonly options: {};
@@ -1,18 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPriceBySymbol = exports.getPriceByType = exports.getPriceClient = void 0;
4
- const price_1 = require("@sentio/protos/lib/service/price/protos/price");
5
- const nice_grpc_1 = require("nice-grpc");
6
- const nice_grpc_client_middleware_retry_1 = require("nice-grpc-client-middleware-retry");
7
- const runtime_1 = require("@sentio/runtime");
8
- function getPriceClient(address) {
1
+ import { PriceServiceDefinition } from '@sentio/protos/price';
2
+ import { createChannel, createClientFactory } from 'nice-grpc';
3
+ import { retryMiddleware } from 'nice-grpc-client-middleware-retry';
4
+ import { Endpoints } from '@sentio/runtime';
5
+ export function getPriceClient(address) {
9
6
  if (!address) {
10
- address = runtime_1.Endpoints.INSTANCE.priceFeedAPI;
7
+ address = Endpoints.INSTANCE.priceFeedAPI;
11
8
  }
12
- const channel = (0, nice_grpc_1.createChannel)(address);
13
- return (0, nice_grpc_1.createClientFactory)().use(nice_grpc_client_middleware_retry_1.retryMiddleware).create(price_1.PriceServiceDefinition, channel);
9
+ const channel = createChannel(address);
10
+ return createClientFactory().use(retryMiddleware).create(PriceServiceDefinition, channel);
14
11
  }
15
- exports.getPriceClient = getPriceClient;
16
12
  const priceMap = new Map();
17
13
  let priceClient;
18
14
  async function getPriceByTypeOrSymbol(date, coinId) {
@@ -60,7 +56,7 @@ async function getPriceByTypeOrSymbol(date, coinId) {
60
56
  * @param coinType
61
57
  * @param date
62
58
  */
63
- async function getPriceByType(chainId, coinType, date) {
59
+ export async function getPriceByType(chainId, coinType, date) {
64
60
  return getPriceByTypeOrSymbol(date, {
65
61
  address: {
66
62
  chain: chainId,
@@ -68,16 +64,14 @@ async function getPriceByType(chainId, coinType, date) {
68
64
  },
69
65
  });
70
66
  }
71
- exports.getPriceByType = getPriceByType;
72
67
  /**
73
68
  *
74
69
  * @param symbol token symbol like BTC, etc
75
70
  * @param date
76
71
  */
77
- async function getPriceBySymbol(symbol, date) {
72
+ export async function getPriceBySymbol(symbol, date) {
78
73
  return getPriceByTypeOrSymbol(date, { symbol });
79
74
  }
80
- exports.getPriceBySymbol = getPriceBySymbol;
81
75
  function dateString(date) {
82
76
  return [date.getUTCDate(), date.getUTCMonth() + 1, date.getUTCFullYear()].join('-');
83
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"price.js","sourceRoot":"","sources":["../../src/utils/price.ts"],"names":[],"mappings":";;;AAAA,yEAAkH;AAClH,yCAA8D;AAC9D,yFAAiF;AACjF,6CAA2C;AAE3C,SAAgB,cAAc,CAAC,OAAgB;IAC7C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,mBAAS,CAAC,QAAQ,CAAC,YAAY,CAAA;KAC1C;IACD,MAAM,OAAO,GAAG,IAAA,yBAAa,EAAC,OAAO,CAAC,CAAA;IAEtC,OAAO,IAAA,+BAAmB,GAAE,CAAC,GAAG,CAAC,mDAAe,CAAC,CAAC,MAAM,CAAC,8BAAsB,EAAE,OAAO,CAAC,CAAA;AAC3F,CAAC;AAPD,wCAOC;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAA;AACnD,IAAI,WAA6C,CAAA;AAEjD,KAAK,UAAU,sBAAsB,CAAC,IAAU,EAAE,MAAc;IAC9D,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,cAAc,EAAE,CAAA;KAC/B;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAE9C,IAAI,GAAW,CAAA;IACf,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,EAAE,CAAA;KACpC;SAAM;QACL,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,CAAA;KACvE;IACD,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,KAAK,EAAE;QACT,OAAO,KAAK,CAAA;KACb;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CACnC;QACE,SAAS,EAAE,IAAI;QACf,MAAM;KACP,EACD;QACE,KAAK,EAAE,IAAI;QACX,gBAAgB,EAAE,CAAC;KACpB,CACF,CAAA;IACD,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,SAAS,EAAE;YACjB,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACpD,IAAI,kBAAkB,KAAK,OAAO,IAAI,kBAAkB,KAAK,eAAe,EAAE;gBAC5E,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aACrB;SACF;aAAM;YACL,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACrB;QACD,OAAO,GAAG,CAAC,KAAK,CAAA;IAClB,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,QAAgB,EAAE,IAAU;IAChF,OAAO,sBAAsB,CAAC,IAAI,EAAE;QAClC,OAAO,EAAE;YACP,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,QAAQ;SAClB;KACF,CAAC,CAAA;AACJ,CAAC;AAPD,wCAOC;AAED;;;;GAIG;AACI,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,IAAU;IAC/D,OAAO,sBAAsB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;AACjD,CAAC;AAFD,4CAEC;AAED,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACrF,CAAC","sourcesContent":["import { CoinID, PriceServiceClient, PriceServiceDefinition } from '@sentio/protos/lib/service/price/protos/price'\nimport { createChannel, createClientFactory } from 'nice-grpc'\nimport { retryMiddleware, RetryOptions } from 'nice-grpc-client-middleware-retry'\nimport { Endpoints } from '@sentio/runtime'\n\nexport function getPriceClient(address?: string) {\n if (!address) {\n address = Endpoints.INSTANCE.priceFeedAPI\n }\n const channel = createChannel(address)\n\n return createClientFactory().use(retryMiddleware).create(PriceServiceDefinition, channel)\n}\n\nconst priceMap = new Map<string, Promise<number>>()\nlet priceClient: PriceServiceClient<RetryOptions>\n\nasync function getPriceByTypeOrSymbol(date: Date, coinId: CoinID): Promise<number> {\n if (!priceClient) {\n priceClient = getPriceClient()\n }\n\n const dateStr = dateString(date)\n const todayDateString = dateString(new Date())\n\n let key: string\n if (coinId.symbol) {\n key = `${coinId.symbol}-${dateStr}`\n } else {\n key = `${coinId.address?.address}-${coinId.address?.chain}-${dateStr}`\n }\n let price = priceMap.get(key)\n if (price) {\n return price\n }\n\n const response = priceClient.getPrice(\n {\n timestamp: date,\n coinId,\n },\n {\n retry: true,\n retryMaxAttempts: 8,\n }\n )\n price = response.then((res) => {\n if (res.timestamp) {\n const responseDateString = dateString(res.timestamp)\n if (responseDateString !== dateStr || responseDateString !== todayDateString) {\n priceMap.delete(key)\n }\n } else {\n priceMap.delete(key)\n }\n return res.price\n })\n priceMap.set(key, price)\n return price\n}\n\n/**\n *\n * @param chainId chain id refers to CHAIN_MAP\n * @param coinType\n * @param date\n */\nexport async function getPriceByType(chainId: string, coinType: string, date: Date): Promise<number> {\n return getPriceByTypeOrSymbol(date, {\n address: {\n chain: chainId,\n address: coinType,\n },\n })\n}\n\n/**\n *\n * @param symbol token symbol like BTC, etc\n * @param date\n */\nexport async function getPriceBySymbol(symbol: string, date: Date): Promise<number> {\n return getPriceByTypeOrSymbol(date, { symbol })\n}\n\nfunction dateString(date: Date) {\n return [date.getUTCDate(), date.getUTCMonth() + 1, date.getUTCFullYear()].join('-')\n}\n"]}
1
+ {"version":3,"file":"price.js","sourceRoot":"","sources":["../../src/utils/price.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoinID, PriceServiceClient, PriceServiceDefinition } from '@sentio/protos/price'\nimport { createChannel, createClientFactory } from 'nice-grpc'\nimport { retryMiddleware, RetryOptions } from 'nice-grpc-client-middleware-retry'\nimport { Endpoints } from '@sentio/runtime'\n\nexport function getPriceClient(address?: string) {\n if (!address) {\n address = Endpoints.INSTANCE.priceFeedAPI\n }\n const channel = createChannel(address)\n\n return createClientFactory().use(retryMiddleware).create(PriceServiceDefinition, channel)\n}\n\nconst priceMap = new Map<string, Promise<number>>()\nlet priceClient: PriceServiceClient<RetryOptions>\n\nasync function getPriceByTypeOrSymbol(date: Date, coinId: CoinID): Promise<number> {\n if (!priceClient) {\n priceClient = getPriceClient()\n }\n\n const dateStr = dateString(date)\n const todayDateString = dateString(new Date())\n\n let key: string\n if (coinId.symbol) {\n key = `${coinId.symbol}-${dateStr}`\n } else {\n key = `${coinId.address?.address}-${coinId.address?.chain}-${dateStr}`\n }\n let price = priceMap.get(key)\n if (price) {\n return price\n }\n\n const response = priceClient.getPrice(\n {\n timestamp: date,\n coinId,\n },\n {\n retry: true,\n retryMaxAttempts: 8,\n }\n )\n price = response.then((res) => {\n if (res.timestamp) {\n const responseDateString = dateString(res.timestamp)\n if (responseDateString !== dateStr || responseDateString !== todayDateString) {\n priceMap.delete(key)\n }\n } else {\n priceMap.delete(key)\n }\n return res.price\n })\n priceMap.set(key, price)\n return price\n}\n\n/**\n *\n * @param chainId chain id refers to CHAIN_MAP\n * @param coinType\n * @param date\n */\nexport async function getPriceByType(chainId: string, coinType: string, date: Date): Promise<number> {\n return getPriceByTypeOrSymbol(date, {\n address: {\n chain: chainId,\n address: coinType,\n },\n })\n}\n\n/**\n *\n * @param symbol token symbol like BTC, etc\n * @param date\n */\nexport async function getPriceBySymbol(symbol: string, date: Date): Promise<number> {\n return getPriceByTypeOrSymbol(date, { symbol })\n}\n\nfunction dateString(date: Date) {\n return [date.getUTCDate(), date.getUTCMonth() + 1, date.getUTCFullYear()].join('-')\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BigDecimal } from '../core/big-decimal';
1
+ import { BigDecimal } from '../core/big-decimal.js';
2
2
  export interface TokenInfo {
3
3
  symbol: string;
4
4
  name: string;
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scaleDown = exports.getER20NormalizedAmount = exports.getERC20TokenInfo = exports.NATIVE_ETH = void 0;
4
- const error_1 = require("../error");
5
- const erc20_1 = require("../builtin/erc20");
6
- const erc20bytes_processor_1 = require("../builtin/internal/erc20bytes_processor");
7
- const big_decimal_1 = require("../core/big-decimal");
8
- const ethers_1 = require("ethers");
9
- exports.NATIVE_ETH = {
1
+ import { transformEtherError } from '../error.js';
2
+ import { getERC20Contract } from '../builtin/erc20/index.js';
3
+ import { getERC20BytesContract } from '../builtin/internal/erc20bytes_processor.js';
4
+ import { BigDecimal } from '../core/big-decimal.js';
5
+ import { decodeBytes32String } from 'ethers';
6
+ export const NATIVE_ETH = {
10
7
  symbol: 'ETH',
11
8
  decimal: 18,
12
9
  name: 'Native ETH',
@@ -19,14 +16,14 @@ async function getTokenInfoPromise(symbol, name, decimal) {
19
16
  decimal: Number(await decimal),
20
17
  };
21
18
  }
22
- async function getERC20TokenInfo(tokenAddress, chainId = 1) {
19
+ export async function getERC20TokenInfo(tokenAddress, chainId = 1) {
23
20
  const key = chainId + tokenAddress;
24
21
  const res = TOKEN_INFOS.get(key);
25
22
  if (res) {
26
23
  return res;
27
24
  }
28
- const contract = (0, erc20_1.getERC20Contract)(tokenAddress, chainId);
29
- const bytesContract = (0, erc20bytes_processor_1.getERC20BytesContract)(tokenAddress, chainId);
25
+ const contract = getERC20Contract(tokenAddress, chainId);
26
+ const bytesContract = getERC20BytesContract(tokenAddress, chainId);
30
27
  try {
31
28
  // TODO maybe not do try catch, just do raw call the parse results
32
29
  let name = '';
@@ -34,14 +31,14 @@ async function getERC20TokenInfo(tokenAddress, chainId = 1) {
34
31
  name = await contract.name();
35
32
  }
36
33
  catch (e) {
37
- name = (0, ethers_1.decodeBytes32String)(await bytesContract.name());
34
+ name = decodeBytes32String(await bytesContract.name());
38
35
  }
39
36
  let symbol = '';
40
37
  try {
41
38
  symbol = await contract.symbol();
42
39
  }
43
40
  catch (e) {
44
- symbol = (0, ethers_1.decodeBytes32String)(await bytesContract.symbol());
41
+ symbol = decodeBytes32String(await bytesContract.symbol());
45
42
  }
46
43
  const decimal = await contract.decimals();
47
44
  const info = getTokenInfoPromise(symbol, name, decimal);
@@ -49,18 +46,15 @@ async function getERC20TokenInfo(tokenAddress, chainId = 1) {
49
46
  return info;
50
47
  }
51
48
  catch (e) {
52
- throw (0, error_1.transformEtherError)(e, undefined);
49
+ throw transformEtherError(e, undefined);
53
50
  }
54
51
  }
55
- exports.getERC20TokenInfo = getERC20TokenInfo;
56
- async function getER20NormalizedAmount(tokenAddress, amount, chainId) {
52
+ export async function getER20NormalizedAmount(tokenAddress, amount, chainId) {
57
53
  const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId);
58
54
  return scaleDown(amount, tokenInfo.decimal);
59
55
  }
60
- exports.getER20NormalizedAmount = getER20NormalizedAmount;
61
- function scaleDown(amount, decimal) {
62
- const divider = new big_decimal_1.BigDecimal(10).pow(Number(decimal));
56
+ export function scaleDown(amount, decimal) {
57
+ const divider = new BigDecimal(10).pow(Number(decimal));
63
58
  return amount.asBigDecimal().dividedBy(divider);
64
59
  }
65
- exports.scaleDown = scaleDown;
66
60
  //# sourceMappingURL=token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":";;;AAAA,oCAA8C;AAC9C,4CAAmD;AACnD,mFAAgF;AAChF,qDAAgD;AAIhD,mCAA4C;AAQ/B,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,YAAY;CACnB,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAA;AAEzD,KAAK,UAAU,mBAAmB,CAChC,MAAuC,EACvC,IAAqC,EACrC,OAA+B;IAE/B,OAAO;QACL,MAAM,EAAE,MAAM,MAAM;QACpB,IAAI,EAAE,MAAM,IAAI;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,OAAO,CAAC;KAC/B,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,YAAoB,EAAE,OAAO,GAAG,CAAC;IACvE,MAAM,GAAG,GAAG,OAAO,GAAG,YAAY,CAAA;IAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAA;KACX;IACD,MAAM,QAAQ,GAAG,IAAA,wBAAgB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,IAAA,4CAAqB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAElE,IAAI;QACF,kEAAkE;QAClE,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,IAAI;YACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;SAC7B;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,GAAG,IAAA,4BAAmB,EAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;SACvD;QAED,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI;YACF,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,IAAA,4BAAmB,EAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;SAC3D;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAEvD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAA,2BAAmB,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;KACxC;AACH,CAAC;AAjCD,8CAiCC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,MAAc,EACd,OAAe;IAEf,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAChE,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC;AAPD,0DAOC;AAED,SAAgB,SAAS,CAAC,MAAc,EAAE,OAAwB;IAChE,MAAM,OAAO,GAAG,IAAI,wBAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC;AAHD,8BAGC","sourcesContent":["import { transformEtherError } from '../error'\nimport { getERC20Contract } from '../builtin/erc20'\nimport { getERC20BytesContract } from '../builtin/internal/erc20bytes_processor'\nimport { BigDecimal } from '../core/big-decimal'\nimport { toBigDecimal } from './conversion'\n// import { utils } from 'ethers'\nimport { PromiseOrValue } from '../builtin/internal/common'\nimport { decodeBytes32String } from 'ethers'\n\nexport interface TokenInfo {\n symbol: string\n name: string\n decimal: number\n}\n\nexport const NATIVE_ETH = {\n symbol: 'ETH',\n decimal: 18,\n name: 'Native ETH',\n}\n\nconst TOKEN_INFOS = new Map<string, Promise<TokenInfo>>()\n\nasync function getTokenInfoPromise(\n symbol: PromiseOrValue<string> | string,\n name: PromiseOrValue<string> | string,\n decimal: PromiseOrValue<bigint>\n): Promise<TokenInfo> {\n return {\n symbol: await symbol,\n name: await name,\n decimal: Number(await decimal),\n }\n}\n\nexport async function getERC20TokenInfo(tokenAddress: string, chainId = 1): Promise<TokenInfo> {\n const key = chainId + tokenAddress\n const res = TOKEN_INFOS.get(key)\n if (res) {\n return res\n }\n const contract = getERC20Contract(tokenAddress, chainId)\n const bytesContract = getERC20BytesContract(tokenAddress, chainId)\n\n try {\n // TODO maybe not do try catch, just do raw call the parse results\n let name = ''\n try {\n name = await contract.name()\n } catch (e) {\n name = decodeBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = decodeBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info = getTokenInfoPromise(symbol, name, decimal)\n\n TOKEN_INFOS.set(key, info)\n return info\n } catch (e) {\n throw transformEtherError(e, undefined)\n }\n}\n\nexport async function getER20NormalizedAmount(\n tokenAddress: string,\n amount: bigint,\n chainId: number\n): Promise<BigDecimal> {\n const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId)\n return scaleDown(amount, tokenInfo.decimal)\n}\n\nexport function scaleDown(amount: bigint, decimal: number | bigint) {\n const divider = new BigDecimal(10).pow(Number(decimal))\n return amount.asBigDecimal().dividedBy(divider)\n}\n"]}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAQ5C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,YAAY;CACnB,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAA;AAEzD,KAAK,UAAU,mBAAmB,CAChC,MAAuC,EACvC,IAAqC,EACrC,OAA+B;IAE/B,OAAO;QACL,MAAM,EAAE,MAAM,MAAM;QACpB,IAAI,EAAE,MAAM,IAAI;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,OAAO,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,YAAoB,EAAE,OAAO,GAAG,CAAC;IACvE,MAAM,GAAG,GAAG,OAAO,GAAG,YAAY,CAAA;IAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAA;KACX;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAElE,IAAI;QACF,kEAAkE;QAClE,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,IAAI;YACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;SAC7B;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,GAAG,mBAAmB,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;SACvD;QAED,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI;YACF,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,mBAAmB,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;SAC3D;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAEvD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;KACxC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,MAAc,EACd,OAAe;IAEf,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAChE,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,OAAwB;IAChE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC","sourcesContent":["import { transformEtherError } from '../error.js'\nimport { getERC20Contract } from '../builtin/erc20/index.js'\nimport { getERC20BytesContract } from '../builtin/internal/erc20bytes_processor.js'\nimport { BigDecimal } from '../core/big-decimal.js'\n// import { toBigDecimal } from './conversion'\n// import { utils } from 'ethers'\nimport { PromiseOrValue } from '../builtin/internal/common.js'\nimport { decodeBytes32String } from 'ethers'\n\nexport interface TokenInfo {\n symbol: string\n name: string\n decimal: number\n}\n\nexport const NATIVE_ETH = {\n symbol: 'ETH',\n decimal: 18,\n name: 'Native ETH',\n}\n\nconst TOKEN_INFOS = new Map<string, Promise<TokenInfo>>()\n\nasync function getTokenInfoPromise(\n symbol: PromiseOrValue<string> | string,\n name: PromiseOrValue<string> | string,\n decimal: PromiseOrValue<bigint>\n): Promise<TokenInfo> {\n return {\n symbol: await symbol,\n name: await name,\n decimal: Number(await decimal),\n }\n}\n\nexport async function getERC20TokenInfo(tokenAddress: string, chainId = 1): Promise<TokenInfo> {\n const key = chainId + tokenAddress\n const res = TOKEN_INFOS.get(key)\n if (res) {\n return res\n }\n const contract = getERC20Contract(tokenAddress, chainId)\n const bytesContract = getERC20BytesContract(tokenAddress, chainId)\n\n try {\n // TODO maybe not do try catch, just do raw call the parse results\n let name = ''\n try {\n name = await contract.name()\n } catch (e) {\n name = decodeBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = decodeBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info = getTokenInfoPromise(symbol, name, decimal)\n\n TOKEN_INFOS.set(key, info)\n return info\n } catch (e) {\n throw transformEtherError(e, undefined)\n }\n}\n\nexport async function getER20NormalizedAmount(\n tokenAddress: string,\n amount: bigint,\n chainId: number\n): Promise<BigDecimal> {\n const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId)\n return scaleDown(amount, tokenInfo.decimal)\n}\n\nexport function scaleDown(amount: bigint, decimal: number | bigint) {\n const divider = new BigDecimal(10).pow(Number(decimal))\n return amount.asBigDecimal().dividedBy(divider)\n}\n"]}
package/package.json CHANGED
@@ -1,39 +1,43 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "2.0.0-rc.1",
4
+ "version": "2.0.0-rc.11",
5
+ "type": "module",
5
6
  "scripts": {
6
7
  "compile_target": "yarn tsc -b src/target-ethers-sentio/tsconfig.json",
7
- "compile": "tsc -p . && cp src/utils/*.csv lib/utils && cp src/webpack.config.js lib",
8
+ "compile": "tsc -p . && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
8
9
  "build": "yarn gen && yarn compile",
9
10
  "build_all": "yarn lerna run --scope=@sentio/sdk build --include-dependencies",
10
- "start_ts": "ts-node --files ../runtime/src/processor-runner.ts --log-format=json ../../examples/x2y2/src/processor.ts",
11
- "start": "ts-node --files ../runtime/src/processor-runner.ts ../../examples/aptos/dist/lib.js",
12
- "start_js": "node lib/processor-runner.js ../examples/aptos/dist/lib.js",
13
- "ts-start": "ts-node --files ../runtime/src/processor-runner.ts ./src/anyswap/src/processor.ts",
14
- "test": "jest",
15
- "test-nocache": "yarn jest --clearCache && yarn jest",
11
+ "test": "NODE_OPTIONS=--experimental-vm-modules yarn jest",
16
12
  "gen": "yarn compile_target && yarn gen_bultin_evm",
17
- "gen_bultin_evm": "typechain --target lib/target-ethers-sentio --out-dir src/builtin/internal 'src/abis/*.json'"
13
+ "gen_bultin_evm": "typechain --target lib/target-ethers-sentio/index.cjs --out-dir src/builtin/internal 'src/abis/*.json'"
18
14
  },
19
15
  "dependencies": {
20
16
  "@sentio/bigdecimal": "^9.1.1-patch.3",
21
- "@sentio/ethers-v6": "^1.0.15",
22
- "@sentio/protos": "^2.0.0-rc.1",
23
- "@sentio/runtime": "^2.0.0-rc.1",
17
+ "@sentio/ethers-v6": "^1.0.24",
18
+ "@sentio/protos": "^2.0.0-rc.11",
19
+ "@sentio/runtime": "^2.0.0-rc.11",
24
20
  "csv-parse": "^5.3.0",
25
- "ethers": "npm:@sentio/ethers@6.0.0-beta-exports.14",
21
+ "ethers": "6.0.0",
26
22
  "google-protobuf": "^3.15.8",
27
23
  "nice-grpc": "^2.0.0",
28
- "typechain": "^8.0.0",
29
- "winston": "^3.8.2"
24
+ "p-queue": "^7.3.0",
25
+ "typechain": "^8.0.0"
30
26
  },
31
27
  "devDependencies": {
32
28
  "@types/google-protobuf": "^3.15.6"
33
29
  },
34
- "main": "./lib/index.js",
35
- "types": "./lib/index.d.ts",
36
- "module": "./lib/index.js",
30
+ "exports": {
31
+ ".": "./lib/index.js",
32
+ "./testing": "./lib/testing/index.js",
33
+ "./builtin": "./lib/builtin/index.js",
34
+ "./builtin/erc20": "./lib/builtin/erc20/index.js",
35
+ "./builtin/erc721": "./lib/builtin/erc721/index.js",
36
+ "./builtin/erc1155": "./lib/builtin/erc1155/index.js",
37
+ "./builtin/eacaggregatorproxy": "./lib/builtin/eacaggregatorproxy/index.js",
38
+ "./builtin/weth9": "./lib/builtin/weth9/index.js",
39
+ "./utils": "./lib/utils/index.js"
40
+ },
37
41
  "files": [
38
42
  "{lib,src}",
39
43
  "!{lib,src}/tests",
@@ -45,5 +49,5 @@
45
49
  "typedoc": {
46
50
  "entryPoint": "./src/index.ts"
47
51
  },
48
- "gitHead": "d8a9e6499f5499527bfbcc624e982f30b1e15cad"
52
+ "gitHead": "0392ac911d914510f38cb4161f8eeceea2042ecf"
49
53
  }
@@ -2,5 +2,6 @@
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
4
 
5
- export * from "../internal/eacaggregatorproxy_processor";
6
- export * from "../internal/EACAggregatorProxy";
5
+ export * from "../internal/eacaggregatorproxy_processor.js";
6
+ export * from "../internal/EACAggregatorProxy.js";
7
+ export * from "./test-utils.js";
@@ -8,7 +8,7 @@ import {
8
8
  NewRoundEventObject,
9
9
  OwnershipTransferRequestedEventObject,
10
10
  OwnershipTransferredEventObject,
11
- } from ".";
11
+ } from "./index.js";
12
12
  const mockField = {
13
13
  blockHash:
14
14
  "0x0000000000000000000000000000000000000000000000000000000000000000",
@@ -2,5 +2,6 @@
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
4
 
5
- export * from "../internal/erc1155_processor";
6
- export * from "../internal/ERC1155";
5
+ export * from "../internal/erc1155_processor.js";
6
+ export * from "../internal/ERC1155.js";
7
+ export * from "./test-utils.js";
@@ -8,7 +8,7 @@ import {
8
8
  TransferBatchEventObject,
9
9
  TransferSingleEventObject,
10
10
  URIEventObject,
11
- } from ".";
11
+ } from "./index.js";
12
12
  const mockField = {
13
13
  blockHash:
14
14
  "0x0000000000000000000000000000000000000000000000000000000000000000",
@@ -2,5 +2,6 @@
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
4
 
5
- export * from "../internal/erc20_processor";
6
- export * from "../internal/ERC20";
5
+ export * from "../internal/erc20_processor.js";
6
+ export * from "../internal/ERC20.js";
7
+ export * from "./test-utils.js";
@@ -7,7 +7,7 @@ import {
7
7
  ApprovalEventObject,
8
8
  OwnershipTransferredEventObject,
9
9
  TransferEventObject,
10
- } from ".";
10
+ } from "./index.js";
11
11
  const mockField = {
12
12
  blockHash:
13
13
  "0x0000000000000000000000000000000000000000000000000000000000000000",
@@ -2,5 +2,6 @@
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
4
 
5
- export * from "../internal/erc20bytes_processor";
6
- export * from "../internal/ERC20Bytes";
5
+ export * from "../internal/erc20bytes_processor.js";
6
+ export * from "../internal/ERC20Bytes.js";
7
+ export * from "./test-utils.js";
@@ -6,7 +6,7 @@ import {
6
6
  getERC20BytesContract,
7
7
  ApprovalEventObject,
8
8
  TransferEventObject,
9
- } from ".";
9
+ } from "./index.js";
10
10
  const mockField = {
11
11
  blockHash:
12
12
  "0x0000000000000000000000000000000000000000000000000000000000000000",
@@ -2,5 +2,6 @@
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
4
 
5
- export * from "../internal/erc721_processor";
6
- export * from "../internal/ERC721";
5
+ export * from "../internal/erc721_processor.js";
6
+ export * from "../internal/ERC721.js";
7
+ export * from "./test-utils.js";
@@ -7,7 +7,7 @@ import {
7
7
  ApprovalEventObject,
8
8
  ApprovalForAllEventObject,
9
9
  TransferEventObject,
10
- } from ".";
10
+ } from "./index.js";
11
11
  const mockField = {
12
12
  blockHash:
13
13
  "0x0000000000000000000000000000000000000000000000000000000000000000",
@@ -1,4 +1,8 @@
1
- export * as eacaggregatorproxy from './eacaggregatorproxy'
2
- export * as erc20 from './erc20'
3
- export * as erc20bytes from './erc20bytes'
4
- export * as weth9 from './weth9'
1
+ export * as eacaggregatorproxy from './eacaggregatorproxy/index.js'
2
+ export { EACAggregatorProxyProcessor, EACAggregatorProxyProcessorTemplate } from './eacaggregatorproxy/index.js'
3
+ export * as erc20 from './erc20/index.js'
4
+ export { ERC20Processor, ERC20ProcessorTemplate } from './erc20/index.js'
5
+ export * as erc20bytes from './erc20bytes/index.js'
6
+ export { ERC20BytesProcessor, ERC20BytesProcessorTemplate } from './erc20bytes/index.js'
7
+ export * as weth9 from './weth9/index.js'
8
+ export { WETH9Processor, WETH9ProcessorTemplate } from './weth9/index.js'