@sentio/sdk 1.17.2 → 1.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/lib/binds.d.ts +2 -3
  2. package/lib/binds.js +1 -1
  3. package/lib/binds.js.map +1 -1
  4. package/lib/builtin/eacaggregatorproxy/test-utils.js +4 -4
  5. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -1
  6. package/lib/builtin/erc20/test-utils.js +3 -3
  7. package/lib/builtin/erc20/test-utils.js.map +1 -1
  8. package/lib/builtin/erc20bytes/test-utils.js +2 -2
  9. package/lib/builtin/erc20bytes/test-utils.js.map +1 -1
  10. package/lib/builtin/index.d.ts +5 -0
  11. package/lib/builtin/index.js +32 -0
  12. package/lib/builtin/index.js.map +1 -0
  13. package/lib/{solana/builtin → builtin/solana}/index.d.ts +0 -0
  14. package/lib/{solana/builtin → builtin/solana}/index.js +0 -0
  15. package/lib/{solana/builtin → builtin/solana}/index.js.map +1 -1
  16. package/lib/{solana/builtin → builtin/solana}/spl-token-processor.d.ts +1 -3
  17. package/lib/{solana/builtin → builtin/solana}/spl-token-processor.js +2 -2
  18. package/lib/builtin/solana/spl-token-processor.js.map +1 -0
  19. package/lib/{solana/builtin → builtin/solana}/types.d.ts +27 -27
  20. package/lib/{solana/builtin → builtin/solana}/types.js +0 -0
  21. package/lib/{solana/builtin → builtin/solana}/types.js.map +1 -1
  22. package/lib/{solana/builtin → builtin/solana}/wormhole-processor.d.ts +1 -3
  23. package/lib/{solana/builtin → builtin/solana}/wormhole-processor.js +2 -2
  24. package/lib/builtin/solana/wormhole-processor.js.map +1 -0
  25. package/lib/builtin/weth9/test-utils.js +4 -4
  26. package/lib/builtin/weth9/test-utils.js.map +1 -1
  27. package/lib/cli/webpack.config.js +1 -1
  28. package/lib/{aptos-processor.d.ts → core/aptos-processor.d.ts} +3 -2
  29. package/lib/{aptos-processor.js → core/aptos-processor.js} +4 -2
  30. package/lib/core/aptos-processor.js.map +1 -0
  31. package/lib/{base-processor-template.d.ts → core/base-processor-template.d.ts} +1 -1
  32. package/lib/{base-processor-template.js → core/base-processor-template.js} +0 -0
  33. package/lib/core/base-processor-template.js.map +1 -0
  34. package/lib/{base-processor.d.ts → core/base-processor.d.ts} +2 -2
  35. package/lib/{base-processor.js → core/base-processor.js} +0 -0
  36. package/lib/core/base-processor.js.map +1 -0
  37. package/lib/{bind-options.d.ts → core/bind-options.d.ts} +0 -0
  38. package/lib/{bind-options.js → core/bind-options.js} +0 -0
  39. package/lib/core/bind-options.js.map +1 -0
  40. package/lib/{context.d.ts → core/context.d.ts} +7 -4
  41. package/lib/{context.js → core/context.js} +12 -6
  42. package/lib/core/context.js.map +1 -0
  43. package/lib/{generic-processor.d.ts → core/generic-processor.d.ts} +0 -0
  44. package/lib/{generic-processor.js → core/generic-processor.js} +2 -2
  45. package/lib/core/generic-processor.js.map +1 -0
  46. package/lib/{test → core}/generic-processor.test.d.ts +0 -0
  47. package/lib/{test → core}/generic-processor.test.js +4 -5
  48. package/lib/core/generic-processor.test.js.map +1 -0
  49. package/lib/core/index.d.ts +12 -0
  50. package/lib/core/index.js +38 -0
  51. package/lib/core/index.js.map +1 -0
  52. package/lib/{meter.d.ts → core/meter.d.ts} +1 -1
  53. package/lib/{meter.js → core/meter.js} +11 -14
  54. package/lib/core/meter.js.map +1 -0
  55. package/lib/{meter.test.d.ts → core/meter.test.d.ts} +0 -0
  56. package/lib/{meter.test.js → core/meter.test.js} +0 -0
  57. package/lib/core/meter.test.js.map +1 -0
  58. package/lib/{numberish.d.ts → core/numberish.d.ts} +1 -1
  59. package/lib/{numberish.js → core/numberish.js} +1 -1
  60. package/lib/core/numberish.js.map +1 -0
  61. package/lib/{numberish.test.d.ts → core/numberish.test.d.ts} +0 -0
  62. package/lib/{numberish.test.js → core/numberish.test.js} +4 -4
  63. package/lib/core/numberish.test.js.map +1 -0
  64. package/lib/{solana-processor.d.ts → core/solana-processor.d.ts} +2 -2
  65. package/lib/{solana-processor.js → core/solana-processor.js} +2 -2
  66. package/lib/core/solana-processor.js.map +1 -0
  67. package/lib/{sui-processor.d.ts → core/sui-processor.d.ts} +2 -2
  68. package/lib/{sui-processor.js → core/sui-processor.js} +2 -2
  69. package/lib/core/sui-processor.js.map +1 -0
  70. package/lib/{trace.d.ts → core/trace.d.ts} +0 -0
  71. package/lib/{trace.js → core/trace.js} +0 -0
  72. package/lib/core/trace.js.map +1 -0
  73. package/lib/error.d.ts +1 -1
  74. package/lib/error.js.map +1 -1
  75. package/lib/index.d.ts +1 -12
  76. package/lib/index.js +2 -34
  77. package/lib/index.js.map +1 -1
  78. package/lib/processor-state.d.ts +1 -6
  79. package/lib/processor-state.js.map +1 -1
  80. package/lib/service.js +21 -54
  81. package/lib/service.js.map +1 -1
  82. package/lib/target-ethers-sentio/codegen.js +2 -1
  83. package/lib/target-ethers-sentio/codegen.js.map +1 -1
  84. package/lib/{test → testing}/index.d.ts +0 -1
  85. package/lib/{test → testing}/index.js +2 -3
  86. package/lib/testing/index.js.map +1 -0
  87. package/lib/{test → testing}/metric-utils.d.ts +1 -1
  88. package/lib/{test → testing}/metric-utils.js +0 -0
  89. package/lib/testing/metric-utils.js.map +1 -0
  90. package/lib/{test → testing}/test-processor-server.d.ts +1 -1
  91. package/lib/{test → testing}/test-processor-server.js +2 -2
  92. package/lib/testing/test-processor-server.js.map +1 -0
  93. package/lib/{test → testing}/test-provider.d.ts +0 -0
  94. package/lib/{test → testing}/test-provider.js +5 -3
  95. package/lib/testing/test-provider.js.map +1 -0
  96. package/lib/{test → tests}/aptos.test.d.ts +0 -0
  97. package/lib/{test → tests}/aptos.test.js +10 -3
  98. package/lib/tests/aptos.test.js.map +1 -0
  99. package/lib/{test → tests}/codegen.test.d.ts +0 -0
  100. package/lib/{test → tests}/codegen.test.js +0 -0
  101. package/lib/tests/codegen.test.js.map +1 -0
  102. package/lib/{test → tests}/erc20-template.test.d.ts +0 -0
  103. package/lib/{test → tests}/erc20-template.test.js +2 -2
  104. package/lib/tests/erc20-template.test.js.map +1 -0
  105. package/lib/{test → tests}/erc20.d.ts +0 -0
  106. package/lib/{test → tests}/erc20.js +0 -0
  107. package/lib/tests/erc20.js.map +1 -0
  108. package/lib/{test → tests}/erc20.test.d.ts +0 -0
  109. package/lib/{test → tests}/erc20.test.js +6 -7
  110. package/lib/tests/erc20.test.js.map +1 -0
  111. package/lib/{test → tests}/error-capture.test.d.ts +0 -0
  112. package/lib/{test → tests}/error-capture.test.js +4 -4
  113. package/lib/tests/error-capture.test.js.map +1 -0
  114. package/lib/{test → tests}/solana.test.d.ts +0 -0
  115. package/lib/{test → tests}/solana.test.js +6 -7
  116. package/lib/tests/solana.test.js.map +1 -0
  117. package/lib/{test → tests}/souffl3.d.ts +0 -0
  118. package/lib/{test → tests}/souffl3.js +2 -2
  119. package/lib/tests/souffl3.js.map +1 -0
  120. package/lib/{test → tests}/sui.test.d.ts +0 -0
  121. package/lib/{test → tests}/sui.test.js +10 -4
  122. package/lib/tests/sui.test.js.map +1 -0
  123. package/lib/{test → tests}/types/basic_1.d.ts +0 -0
  124. package/lib/{test → tests}/types/basic_1.js +0 -0
  125. package/lib/tests/types/basic_1.js.map +1 -0
  126. package/lib/{test → tests}/types/basic_1_processor.d.ts +0 -0
  127. package/lib/{test → tests}/types/basic_1_processor.js +0 -0
  128. package/lib/tests/types/basic_1_processor.js.map +1 -0
  129. package/lib/{test → tests}/wormhole-token-bridge.d.ts +0 -0
  130. package/lib/{test → tests}/wormhole-token-bridge.js +3 -4
  131. package/lib/tests/wormhole-token-bridge.js.map +1 -0
  132. package/lib/utils/chain.d.ts +7 -0
  133. package/lib/utils/{chainmap.js → chain.js} +12 -5
  134. package/lib/utils/chain.js.map +1 -0
  135. package/lib/utils/{convert.d.ts → conversion.d.ts} +1 -1
  136. package/lib/utils/{convert.js → conversion.js} +1 -1
  137. package/lib/utils/conversion.js.map +1 -0
  138. package/lib/utils/dex-price.d.ts +5 -5
  139. package/lib/utils/dex-price.js +2 -2
  140. package/lib/utils/dex-price.js.map +1 -1
  141. package/lib/utils/dex-price.test.js +2 -2
  142. package/lib/utils/dex-price.test.js.map +1 -1
  143. package/lib/utils/erc20.test.js +6 -5
  144. package/lib/utils/erc20.test.js.map +1 -1
  145. package/lib/utils/index.d.ts +4 -5
  146. package/lib/utils/index.js +28 -16
  147. package/lib/utils/index.js.map +1 -1
  148. package/lib/utils/{erc20.d.ts → token.d.ts} +1 -1
  149. package/lib/utils/{erc20.js → token.js} +4 -10
  150. package/lib/utils/token.js.map +1 -0
  151. package/package.json +5 -3
  152. package/src/binds.ts +2 -3
  153. package/src/builtin/eacaggregatorproxy/test-utils.ts +4 -4
  154. package/src/builtin/erc20/test-utils.ts +3 -3
  155. package/src/builtin/erc20bytes/test-utils.ts +2 -2
  156. package/src/builtin/index.ts +5 -0
  157. package/src/{solana/builtin → builtin/solana}/index.ts +0 -0
  158. package/src/{solana/builtin → builtin/solana}/spl-token-processor.ts +1 -3
  159. package/src/{solana/builtin → builtin/solana}/types.ts +0 -0
  160. package/src/{solana/builtin → builtin/solana}/wormhole-processor.ts +1 -3
  161. package/src/builtin/weth9/test-utils.ts +4 -4
  162. package/src/cli/webpack.config.js +1 -1
  163. package/src/{aptos-processor.ts → core/aptos-processor.ts} +5 -3
  164. package/src/{base-processor-template.ts → core/base-processor-template.ts} +2 -2
  165. package/src/{base-processor.ts → core/base-processor.ts} +2 -2
  166. package/src/{bind-options.ts → core/bind-options.ts} +0 -0
  167. package/src/{context.ts → core/context.ts} +13 -7
  168. package/src/{test → core}/generic-processor.test.ts +2 -3
  169. package/src/{generic-processor.ts → core/generic-processor.ts} +2 -2
  170. package/src/core/index.ts +15 -0
  171. package/src/{meter.test.ts → core/meter.test.ts} +0 -0
  172. package/src/{meter.ts → core/meter.ts} +11 -11
  173. package/src/{numberish.test.ts → core/numberish.test.ts} +2 -2
  174. package/src/{numberish.ts → core/numberish.ts} +1 -1
  175. package/src/{solana-processor.ts → core/solana-processor.ts} +3 -3
  176. package/src/{sui-processor.ts → core/sui-processor.ts} +3 -3
  177. package/src/{trace.ts → core/trace.ts} +0 -0
  178. package/src/error.ts +1 -1
  179. package/src/index.ts +1 -13
  180. package/src/processor-state.ts +9 -6
  181. package/src/service.ts +32 -54
  182. package/src/target-ethers-sentio/codegen.ts +3 -1
  183. package/src/{test → testing}/index.ts +2 -1
  184. package/src/{test → testing}/metric-utils.ts +1 -1
  185. package/src/{test → testing}/test-processor-server.ts +2 -2
  186. package/src/{test → testing}/test-provider.ts +4 -2
  187. package/src/{test → tests}/abis/evm/CommitmentPool.json +0 -0
  188. package/src/{test → tests}/abis/evm/Seaport.json +0 -0
  189. package/src/{test → tests}/abis/evm/anyswapRouter.json +0 -0
  190. package/src/{test → tests}/abis/solana/basic_1.json +0 -0
  191. package/src/{test → tests}/aptos.test.ts +6 -2
  192. package/src/{test → tests}/codegen.test.ts +0 -0
  193. package/src/{test → tests}/erc20-template.test.ts +1 -1
  194. package/src/{test → tests}/erc20.test.ts +2 -3
  195. package/src/{test → tests}/erc20.ts +0 -0
  196. package/src/{test → tests}/error-capture.test.ts +4 -4
  197. package/src/{test → tests}/solana.test.ts +3 -4
  198. package/src/{test → tests}/souffl3.ts +1 -2
  199. package/src/{test → tests}/sui.test.ts +6 -3
  200. package/src/{test → tests}/types/basic_1.ts +0 -0
  201. package/src/{test → tests}/types/basic_1_processor.ts +0 -0
  202. package/src/{test → tests}/wormhole-token-bridge.ts +1 -2
  203. package/src/utils/{chainmap.ts → chain.ts} +13 -3
  204. package/src/utils/{convert.ts → conversion.ts} +1 -1
  205. package/src/utils/dex-price.test.ts +2 -1
  206. package/src/utils/dex-price.ts +6 -6
  207. package/src/utils/erc20.test.ts +6 -3
  208. package/src/utils/index.ts +4 -5
  209. package/src/utils/{erc20.ts → token.ts} +2 -2
  210. package/template/src/processor.test.ts +1 -2
  211. package/template/src/processor.ts +5 -5
  212. package/lib/aptos-processor.js.map +0 -1
  213. package/lib/base-processor-template.js.map +0 -1
  214. package/lib/base-processor.js.map +0 -1
  215. package/lib/bind-options.js.map +0 -1
  216. package/lib/context.js.map +0 -1
  217. package/lib/generic-processor.js.map +0 -1
  218. package/lib/meter.js.map +0 -1
  219. package/lib/meter.test.js.map +0 -1
  220. package/lib/numberish.js.map +0 -1
  221. package/lib/numberish.test.js.map +0 -1
  222. package/lib/solana/builtin/spl-token-processor.js.map +0 -1
  223. package/lib/solana/builtin/wormhole-processor.js.map +0 -1
  224. package/lib/solana-processor.js.map +0 -1
  225. package/lib/sui-processor.js.map +0 -1
  226. package/lib/test/aptos.test.js.map +0 -1
  227. package/lib/test/codegen.test.js.map +0 -1
  228. package/lib/test/erc20-template.test.js.map +0 -1
  229. package/lib/test/erc20.js.map +0 -1
  230. package/lib/test/erc20.test.js.map +0 -1
  231. package/lib/test/error-capture.test.js.map +0 -1
  232. package/lib/test/generic-processor.test.js.map +0 -1
  233. package/lib/test/index.js.map +0 -1
  234. package/lib/test/metric-utils.js.map +0 -1
  235. package/lib/test/solana.test.js.map +0 -1
  236. package/lib/test/souffl3.js.map +0 -1
  237. package/lib/test/sui.test.js.map +0 -1
  238. package/lib/test/test-processor-server.js.map +0 -1
  239. package/lib/test/test-provider.js.map +0 -1
  240. package/lib/test/types/basic_1.js.map +0 -1
  241. package/lib/test/types/basic_1_processor.js.map +0 -1
  242. package/lib/test/wormhole-token-bridge.js.map +0 -1
  243. package/lib/trace.js.map +0 -1
  244. package/lib/utils/chainmap.d.ts +0 -2
  245. package/lib/utils/chainmap.js.map +0 -1
  246. package/lib/utils/convert.js.map +0 -1
  247. package/lib/utils/erc20.js.map +0 -1
@@ -1,21 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_1 = require("chai");
4
- const test_processor_server_1 = require("./test-processor-server");
4
+ const testing_1 = require("../testing");
5
5
  const ethers_1 = require("ethers");
6
6
  const test_utils_1 = require("../builtin/erc20/test-utils");
7
7
  const erc20_processor_1 = require("../builtin/internal/erc20_processor");
8
8
  const utils_1 = require("../utils");
9
9
  const sdk_1 = require("@sentio/sdk");
10
10
  describe('Test Error Capture', () => {
11
- const service = new test_processor_server_1.TestProcessorServer(() => {
11
+ const service = new testing_1.TestProcessorServer(() => {
12
12
  erc20_processor_1.ERC20Processor.bind({ address: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91' })
13
13
  .onEventApproval((evt, ctx) => {
14
- const v = new sdk_1.BigDecimal(1).div((0, utils_1.toBigDecimal)(evt.args.value));
14
+ const v = new sdk_1.BigDecimal(1).div(utils_1.conversion.toBigDecimal(evt.args.value));
15
15
  ctx.meter.Gauge('xx').record(v);
16
16
  })
17
17
  .onEventTransfer((evt, ctx) => {
18
- const v = new sdk_1.BigDecimal(0).div((0, utils_1.toBigDecimal)(evt.args.value));
18
+ const v = new sdk_1.BigDecimal(0).div(utils_1.conversion.toBigDecimal(evt.args.value));
19
19
  ctx.meter.Gauge('xx').record(v);
20
20
  })
21
21
  .onEventOwnershipTransferred((evt, ctx) => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-capture.test.js","sourceRoot":"","sources":["../../src/tests/error-capture.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from 'chai'\n\nimport { TestProcessorServer } from '../testing'\nimport { BigNumber } from 'ethers'\nimport { mockApprovalLog, mockOwnershipTransferredLog, mockTransferLog } from '../builtin/erc20/test-utils'\nimport { ERC20Processor } from '../builtin/internal/erc20_processor'\nimport { conversion } from '../utils'\nimport { BigDecimal } from '@sentio/sdk'\n\ndescribe('Test Error Capture', () => {\n const service = new TestProcessorServer(() => {\n ERC20Processor.bind({ address: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91' })\n .onEventApproval((evt, ctx) => {\n const v = new BigDecimal(1).div(conversion.toBigDecimal(evt.args.value))\n ctx.meter.Gauge('xx').record(v)\n })\n .onEventTransfer((evt, ctx) => {\n const v = new BigDecimal(0).div(conversion.toBigDecimal(evt.args.value))\n ctx.meter.Gauge('xx').record(v)\n })\n .onEventOwnershipTransferred((evt, ctx) => {\n ctx.meter.Gauge('xx').record(BigNumber.from(10 ** 18))\n })\n })\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('Check infinite', async () => {\n let err: Error | undefined\n try {\n // TODO check why order matters\n // await service.testLog(mockApprovalLog(\"0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91\", {\n // value: BigNumber.from(3000000),\n // spender: \"0x0000000000000000000000000000000000000000\",\n // owner: \"0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91\"\n // }))\n await service.testLog(\n mockApprovalLog('0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91', {\n owner: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',\n spender: '0x0000000000000000000000000000000000000000',\n value: BigNumber.from(0),\n })\n )\n } catch (e) {\n err = e\n }\n assert(err?.message.includes('Record infinite value'))\n })\n\n test('Check NaN', async () => {\n let err: Error | undefined\n try {\n await service.testLog(\n mockTransferLog('0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91', {\n from: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',\n to: '0x0000000000000000000000000000000000000000',\n value: BigNumber.from(0),\n })\n )\n } catch (e) {\n err = e\n }\n assert(err?.message.includes('NaN'))\n })\n\n test('Check overflow', async () => {\n let err: Error | undefined\n try {\n await service.testLog(\n mockOwnershipTransferredLog('0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91', {\n previousOwner: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',\n newOwner: '0x0000000000000000000000000000000000000000',\n })\n )\n } catch (e) {\n err = e\n }\n assert(err?.message.includes('overflow'))\n })\n})\n"]}
File without changes
@@ -8,10 +8,9 @@ const chai_1 = require("chai");
8
8
  const __1 = require("..");
9
9
  const long_1 = __importDefault(require("long"));
10
10
  const util_1 = require("util");
11
- const test_processor_server_1 = require("./test-processor-server");
12
- const metric_utils_1 = require("./metric-utils");
11
+ const testing_1 = require("../testing");
13
12
  describe('Test Solana Example', () => {
14
- const service = new test_processor_server_1.TestProcessorServer(() => {
13
+ const service = new testing_1.TestProcessorServer(() => {
15
14
  require('./wormhole-token-bridge');
16
15
  });
17
16
  beforeAll(async () => {
@@ -26,7 +25,7 @@ describe('Test Solana Example', () => {
26
25
  instructions: [
27
26
  {
28
27
  instructionData: '33G5T8yXAQWdH8FX7fTy1mBJ6e4dUKfQWbViSrT7qJjpS8UAA3ftEQx9sNzrkaJm56xtENhDsWf',
29
- slot: long_1.default.fromNumber(0),
28
+ slot: long_1.default.fromNumber(12345),
30
29
  programAccountId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',
31
30
  },
32
31
  {
@@ -39,8 +38,8 @@ describe('Test Solana Example', () => {
39
38
  const res = await service.processInstructions(request);
40
39
  (0, chai_1.expect)(res.result?.counters).length(2);
41
40
  (0, chai_1.expect)(res.result?.gauges).length(0);
42
- (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(0);
43
- (0, chai_1.expect)((0, metric_utils_1.firstCounterValue)(res.result, 'total_transfer_amount')).equal(1000000n);
41
+ (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(12345);
42
+ (0, chai_1.expect)((0, testing_1.firstCounterValue)(res.result, 'total_transfer_amount')).equal(1000000n);
44
43
  (0, chai_1.expect)(res.result?.counters[0].runtimeInfo?.from).equals(__1.HandlerType.INSTRUCTION);
45
44
  });
46
45
  test('Check SPLToken parsed instruction dispatch', async () => {
@@ -67,7 +66,7 @@ describe('Test Solana Example', () => {
67
66
  (0, chai_1.expect)(res.result?.counters).length(1);
68
67
  (0, chai_1.expect)(res.result?.gauges).length(0);
69
68
  (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(0);
70
- (0, chai_1.expect)((0, metric_utils_1.firstCounterValue)(res.result, 'totalWeth_supply')).equal(12000000000000);
69
+ (0, chai_1.expect)((0, testing_1.firstCounterValue)(res.result, 'totalWeth_supply')).equal(12000000000000);
71
70
  (0, chai_1.expect)(res.result?.counters[0].runtimeInfo?.from).equals(__1.HandlerType.INSTRUCTION);
72
71
  });
73
72
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.test.js","sourceRoot":"","sources":["../../src/tests/solana.test.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType, ProcessInstructionsRequest } from '..'\n\nimport Long from 'long'\nimport { TextEncoder } from 'util'\nimport { TestProcessorServer, firstCounterValue } from '../testing'\n\ndescribe('Test Solana Example', () => {\n const service = new TestProcessorServer(() => {\n require('./wormhole-token-bridge')\n })\n\n beforeAll(async () => {\n await service.start({ templateInstances: [] })\n })\n\n test('check configuration ', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(2)\n })\n\n test('Check wormhole token bridge instruction dispatch', async () => {\n const request: ProcessInstructionsRequest = {\n instructions: [\n {\n instructionData: '33G5T8yXAQWdH8FX7fTy1mBJ6e4dUKfQWbViSrT7qJjpS8UAA3ftEQx9sNzrkaJm56xtENhDsWf',\n slot: Long.fromNumber(12345),\n programAccountId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',\n },\n {\n instructionData: '33G5T8yXAQWdH8FX7fTy1mBJ6e4dUKfQWbViSrT7qJjpS8UAA3ftEQx9sNzrkaJm56xtENhDsWf',\n slot: Long.fromNumber(1),\n programAccountId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',\n },\n ],\n }\n const res = await service.processInstructions(request)\n expect(res.result?.counters).length(2)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(12345)\n expect(firstCounterValue(res.result, 'total_transfer_amount')).equal(1000000n)\n expect(res.result?.counters[0].runtimeInfo?.from).equals(HandlerType.INSTRUCTION)\n })\n\n test('Check SPLToken parsed instruction dispatch', async () => {\n const parsedIns = {\n info: {\n account: '2SDN4vEJdCdW3pGyhx2km9gB3LeHzMGLrG2j4uVNZfrx',\n amount: '12000000000000',\n mint: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs',\n mintAuthority: 'BCD75RNBHrJJpW4dXVagL5mPjzRLnVZq4YirJdjEYMV7',\n },\n type: 'mintTo',\n }\n const request: ProcessInstructionsRequest = {\n instructions: [\n {\n instructionData: '',\n slot: Long.fromNumber(0),\n programAccountId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',\n parsed: new TextEncoder().encode(JSON.stringify(parsedIns)),\n },\n ],\n }\n const res = await service.processInstructions(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(0)\n expect(firstCounterValue(res.result, 'totalWeth_supply')).equal(12000000000000)\n expect(res.result?.counters[0].runtimeInfo?.from).equals(HandlerType.INSTRUCTION)\n })\n})\n"]}
File without changes
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const aptos_processor_1 = require("../aptos-processor");
4
- class Souffl3 extends aptos_processor_1.AptosBaseProcessor {
3
+ const sdk_1 = require("@sentio/sdk");
4
+ class Souffl3 extends sdk_1.AptosBaseProcessor {
5
5
  static bind(options) {
6
6
  if (options && !options.name) {
7
7
  options.name = 'souffl3';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../src/tests/souffl3.ts"],"names":[],"mappings":";;AAAA,qCAAkE;AAElE,MAAM,OAAQ,SAAQ,wBAAkB;IACtC,MAAM,CAAC,IAAI,CAAC,OAAyB;QACnC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,OAAO,CAAC,IAAI,GAAG,SAAS,CAAA;SACzB;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF;AAED,OAAO,CAAC,IAAI,CAAC;IACX,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,kEAAkE;CAC5E,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC5B,IAAI,GAAG,CAAC,MAAM,EAAE;QACd,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;YAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;gBACtD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;aACxE;SACF;KACF;AACH,CAAC,CAAC,CAAA","sourcesContent":["import { AptosBindOptions, AptosBaseProcessor } from '@sentio/sdk'\n\nclass Souffl3 extends AptosBaseProcessor {\n static bind(options: AptosBindOptions): Souffl3 {\n if (options && !options.name) {\n options.name = 'souffl3'\n }\n return new Souffl3(options)\n }\n}\n\nSouffl3.bind({\n startBlock: 6604913,\n address: '4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n}).onTransaction((txn, ctx) => {\n if (txn.events) {\n for (const event of txn.events) {\n if (event && event.type === '0x3::token::DepositEvent') {\n ctx.meter.Counter('deposit_token_count').add(Number(event.data.amount))\n }\n }\n }\n})\n"]}
File without changes
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const chai_1 = require("chai");
7
+ const long_1 = __importDefault(require("long"));
4
8
  const util_1 = require("util");
5
9
  const __1 = require("..");
6
- const test_processor_server_1 = require("./test-processor-server");
10
+ const utils_1 = require("../utils");
11
+ const testing_1 = require("../testing");
7
12
  describe('Test Sui Example', () => {
8
- const service = new test_processor_server_1.TestProcessorServer(() => {
13
+ const service = new testing_1.TestProcessorServer(() => {
9
14
  class TicTacToeProcessor extends __1.SuiBaseProcessor {
10
15
  static bind(options) {
11
16
  if (options && !options.name) {
@@ -43,10 +48,10 @@ describe('Test Sui Example', () => {
43
48
  });
44
49
  test('Check tictactoe transaction dispatch', async () => {
45
50
  const request = {
46
- chainId: 'SUI_devnet',
51
+ chainId: utils_1.chain.SUI_DEVNET_ID,
47
52
  transactions: [
48
53
  {
49
- // txHash: 'z3HjnnFFKAaszOi0pMSImtGMpRd2r7ljLjAjUoqs3Kw=',
54
+ slot: long_1.default.fromNumber(12345),
50
55
  raw: new util_1.TextEncoder().encode(JSON.stringify(testData)),
51
56
  programAccountId: '0xb8252513f0b9efaa3e260842c4b84d8ff933522d',
52
57
  },
@@ -55,6 +60,7 @@ describe('Test Sui Example', () => {
55
60
  const res = await service.processTransactions(request);
56
61
  (0, chai_1.expect)(res.result?.counters).length(1);
57
62
  (0, chai_1.expect)(res.result?.gauges).length(0);
63
+ (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(12345);
58
64
  });
59
65
  });
60
66
  const testData = {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sui.test.js","sourceRoot":"","sources":["../../src/tests/sui.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport Long from 'long'\nimport { TextEncoder } from 'util'\nimport { ProcessTransactionsRequest, SuiBaseProcessor, SuiBindOptions } from '..'\nimport { chain } from '../utils'\n\nimport { TestProcessorServer } from '../testing'\n\ndescribe('Test Sui Example', () => {\n const service = new TestProcessorServer(() => {\n class TicTacToeProcessor extends SuiBaseProcessor {\n static bind(options: SuiBindOptions): TicTacToeProcessor {\n if (options && !options.name) {\n options.name = 'TicTacToe'\n }\n return new TicTacToeProcessor(options)\n }\n }\n\n TicTacToeProcessor.bind({\n startBlock: 0,\n address: '',\n }).onTransaction((txn, ctx) => {\n if (txn.certificate.data.transactions && txn.certificate.data.transactions.length > 0) {\n if (\n txn.certificate.data.transactions[0].Call.package.objectId === '0xb8252513f0b9efaa3e260842c4b84d8ff933522d'\n ) {\n if (txn.effects.events) {\n txn.effects.events.forEach((event: { newObject: { recipient: { AddressOwner: any } } }) => {\n if (event.newObject) {\n const owner = event.newObject.recipient.AddressOwner\n if ((owner.toString() as string).includes('0x1c27')) {\n ctx.meter.Counter('win_count').add(1)\n }\n }\n })\n }\n }\n }\n })\n })\n\n beforeAll(async () => {\n await service.start({ templateInstances: [] })\n })\n\n test('check configuration ', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(1)\n })\n\n test('Check tictactoe transaction dispatch', async () => {\n const request: ProcessTransactionsRequest = {\n chainId: chain.SUI_DEVNET_ID,\n transactions: [\n {\n slot: Long.fromNumber(12345),\n raw: new TextEncoder().encode(JSON.stringify(testData)),\n programAccountId: '0xb8252513f0b9efaa3e260842c4b84d8ff933522d',\n },\n ],\n }\n const res = await service.processTransactions(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(12345)\n })\n})\n\nconst testData = {\n certificate: {\n transactionDigest: 'z3HjnnFFKAaszOi0pMSImtGMpRd2r7ljLjAjUoqs3Kw=',\n data: {\n transactions: [\n {\n Call: {\n package: {\n objectId: '0xb8252513f0b9efaa3e260842c4b84d8ff933522d',\n version: 1,\n digest: 'UyeEXDb5jCLGuk/PVcqdLtbKSI3mSANB2/DxiyzXRC8=',\n },\n module: 'shared_tic_tac_toe',\n function: 'place_mark',\n arguments: ['0x8ed24078d64aa1a2a7593cba7ab64eb2016fa3d4', 2, ''],\n },\n },\n ],\n sender: '0x1c270459011d19dc342751aff75b4188334438fa',\n gasPayment: {\n objectId: '0x018b73e6652bab0f6419fa998263b568fa0688bb',\n version: 8,\n digest: 'suj5fniFCh3oqu+3BQWASz5zyUl4jUWVmJFf76AwVoE=',\n },\n gasBudget: 1000,\n },\n txSignature:\n 'ACIBv8kDff83DOjZsrUe4RqC1BLBGZtLAwFf/3tHUWJe1F+fxtg16Kqdm85TY9IWeYhVTtQkmchROxX8g0pi/Ak48WB/fgCTwX6K9CIMWgmr+j4k7x4dPYBNizpjHvBgCQ==',\n authSignInfo: {\n epoch: 0,\n signature: [\n 'o4tOmjc4jJ27NoKGEHlNDZav0rBJLDqzzsL1kGJOviPKgpLlxyFCeBHrgjAwoc4Y5M75wYgccCuiv67l1w05DQ==',\n 'B2tClnK9GYCDFg6HbO/IW7hlJkhfIXi6NoDn7s4Pyw94BjMB/v0S0ZufbLwDO/WhBwU83q+wRTanG4HRhvUuBw==',\n '5s49bESgHvDH7/oqjuxjy9YW4xWCG4e8g6hGlZC0bTXskPdf+q6bSGglkkMpOr1B3uIlMeif1NAlRQCKsfNcCg==',\n ],\n signers_map: [58, 48, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 1, 0, 2, 0, 3, 0],\n },\n },\n effects: {\n status: {\n status: 'success',\n },\n gasUsed: {\n computationCost: 716,\n storageCost: 48,\n storageRebate: 35,\n },\n sharedObjects: [\n {\n objectId: '0x8ed24078d64aa1a2a7593cba7ab64eb2016fa3d4',\n version: 6,\n digest: 'kY/I9fcr6rL2EbDO88MxrEmEaxAEtRxgd+lcfQnE4ww=',\n },\n ],\n transactionDigest: 'z3HjnnFFKAaszOi0pMSImtGMpRd2r7ljLjAjUoqs3Kw=',\n created: [\n {\n owner: {\n AddressOwner: '0x1c270459011d19dc342751aff75b4188334438fa',\n },\n reference: {\n objectId: '0x2e37e03297a9d138687ffd921f8a830a6f498ec6',\n version: 1,\n digest: '1zZhoVoTLPRM1YpGX9EcrwPJulKcXyLrF+40rTIQ06g=',\n },\n },\n ],\n mutated: [\n {\n owner: {\n AddressOwner: '0x1c270459011d19dc342751aff75b4188334438fa',\n },\n reference: {\n objectId: '0x018b73e6652bab0f6419fa998263b568fa0688bb',\n version: 9,\n digest: 'naHwWYK8vl7UBnhp40o7h7JI+cxvFF8rTIOQ4RJ4vus=',\n },\n },\n {\n owner: 'Shared',\n reference: {\n objectId: '0x8ed24078d64aa1a2a7593cba7ab64eb2016fa3d4',\n version: 7,\n digest: 's3R+lWAMGde7eqZzllafAJkoR7Em55An8gHgz7oCImw=',\n },\n },\n ],\n gasObject: {\n owner: {\n AddressOwner: '0x1c270459011d19dc342751aff75b4188334438fa',\n },\n reference: {\n objectId: '0x018b73e6652bab0f6419fa998263b568fa0688bb',\n version: 9,\n digest: 'naHwWYK8vl7UBnhp40o7h7JI+cxvFF8rTIOQ4RJ4vus=',\n },\n },\n events: [\n {\n moveEvent: {\n packageId: '0xb8252513f0b9efaa3e260842c4b84d8ff933522d',\n transactionModule: 'shared_tic_tac_toe',\n sender: '0x1c270459011d19dc342751aff75b4188334438fa',\n type: '0xb8252513f0b9efaa3e260842c4b84d8ff933522d::shared_tic_tac_toe::GameEndEvent',\n fields: {\n game_id: '0x8ed24078d64aa1a2a7593cba7ab64eb2016fa3d4',\n },\n bcs: 'jtJAeNZKoaKnWTy6erZOsgFvo9Q=',\n },\n },\n {\n newObject: {\n packageId: '0xb8252513f0b9efaa3e260842c4b84d8ff933522d',\n transactionModule: 'shared_tic_tac_toe',\n sender: '0x1c270459011d19dc342751aff75b4188334438fa',\n recipient: {\n AddressOwner: '0x1c270459011d19dc342751aff75b4188334438fa',\n },\n objectId: '0x2e37e03297a9d138687ffd921f8a830a6f498ec6',\n },\n },\n ],\n dependencies: [\n 'UgLnWz4u9GTgAJYwR+rz+YO5TDJiZHuFjzyh9blJO2o=',\n 'lw2dyQ9J3fPeH5Lx5aiHfjxDHJENTH4910r2/Y/PQX4=',\n 'phojYeMd7C6mRxGXQFDPF10NFYMEUfBND+f8wJGKkbg=',\n ],\n },\n timestamp_ms: 1662996912461,\n parsed_data: null,\n}\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic_1.js","sourceRoot":"","sources":["../../../src/tests/types/basic_1.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE;QACd;YACE,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,MAAM,EAAE,eAAe;oBACvB,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,KAAK;iBAClB;aACF;YACD,MAAM,EAAE;gBACN;oBACE,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,KAAK;iBACd;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,KAAK;iBAClB;aACF;YACD,MAAM,EAAE;gBACN;oBACE,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,KAAK;iBACd;aACF;SACF;KACF;IACD,UAAU,EAAE;QACV;YACE,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE;gBACN,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE;oBACR;wBACE,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,KAAK;qBACd;iBACF;aACF;SACF;KACF;CACF,CAAA","sourcesContent":["export const basic_1_idl = {\n \"version\": \"0.1.0\",\n \"name\": \"basic_1\",\n \"instructions\": [\n {\n \"name\": \"initialize\",\n \"accounts\": [\n {\n \"name\": \"myAccount\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"user\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update\",\n \"accounts\": [\n {\n \"name\": \"myAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"MyAccount\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"data\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic_1_processor.js","sourceRoot":"","sources":["../../../src/tests/types/basic_1_processor.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAmF;AACnF,qCAAmF;AACnF,uCAAuC;AACvC,gDAAuB;AAGvB,MAAa,eAAgB,SAAQ,yBAAmB;IACtD,MAAM,CAAC,IAAI,CAAC,OAA0B;QACpC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;SACxB;QACD,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,iBAAiB,GAAmD,CAAC,cAAc,EAAE,EAAE;QACrF,MAAM,gBAAgB,GAAG,IAAI,8BAAqB,CAAC,qBAAkB,CAAC,CAAA;QACtE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QACpF,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;IAGD,YAAY,CAAC,OAAyD;QACpE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACzD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAoB,EAAE,GAAG,CAAC,CAAA;aACvC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ,CAAC,OAAyD;QAChE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACrD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAoB,EAAE,GAAG,CAAC,CAAA;aACvC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CAEF;AAjCD,0CAiCC","sourcesContent":["import { BorshInstructionCoder, Instruction, Idl, BN } from '@project-serum/anchor'\nimport { SolanaBaseProcessor, SolanaContext, SolanaBindOptions } from \"@sentio/sdk\"\nimport { basic_1_idl } from \"./basic_1\"\nimport bs58 from 'bs58'\nimport { PublicKey } from '@solana/web3.js'\n\nexport class Basic1Processor extends SolanaBaseProcessor {\n static bind(options: SolanaBindOptions): Basic1Processor {\n if (options && !options.name) {\n options.name = 'Basic1'\n }\n return new Basic1Processor(options)\n }\n\n decodeInstruction: (rawInstruction: string) => Instruction | null = (rawInstruction) => {\n const instructionCoder = new BorshInstructionCoder(basic_1_idl as Idl)\n const decodedIns = instructionCoder.decode(Buffer.from(bs58.decode(rawInstruction)))\n return decodedIns\n }\n\n \n onInitialize(handler: (args: { data: BN }, ctx: SolanaContext) => void): Basic1Processor {\n this.onInstruction('initialize', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as { data: BN }, ctx)\n }\n })\n return this\n }\n \n onUpdate(handler: (args: { data: BN }, ctx: SolanaContext) => void): Basic1Processor {\n this.onInstruction('update', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as { data: BN }, ctx)\n }\n })\n return this\n }\n \n}\n "]}
File without changes
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const wormhole_processor_1 = require("../solana/builtin/wormhole-processor");
4
- const builtin_1 = require("../solana/builtin");
5
- wormhole_processor_1.TokenBridgeProcessor.bind({
3
+ const solana_1 = require("../builtin/solana");
4
+ solana_1.TokenBridgeProcessor.bind({
6
5
  address: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',
7
6
  }).onTransferNative((args, ctx) => {
8
7
  ctx.meter.Counter('total_transfer_amount').add(args.amount);
9
8
  });
10
- builtin_1.SPLTokenProcessor.bind({ address: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb' })
9
+ solana_1.SPLTokenProcessor.bind({ address: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb' })
11
10
  .onMintTo((data, ctx) => {
12
11
  if (data.mint === '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs') {
13
12
  ctx.meter.Counter('totalWeth_supply').add(data.amount);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wormhole-token-bridge.js","sourceRoot":"","sources":["../../src/tests/wormhole-token-bridge.ts"],"names":[],"mappings":";;AAAA,8CAA2E;AAE3E,6BAAoB,CAAC,IAAI,CAAC;IACxB,OAAO,EAAE,6CAA6C;CACvD,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAChC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC7D,CAAC,CAAC,CAAA;AAEF,0BAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;KAC/E,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACtB,IAAI,IAAI,CAAC,IAAI,KAAK,8CAA8C,EAAE;QAChE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAA;KACjE;AACH,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACpB,IAAI,IAAI,CAAC,IAAI,KAAK,8CAA8C,EAAE;QAChE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAA;KACjE;AACH,CAAC,CAAC;KACD,gBAAgB,CAAC,IAAI,CAAC,CAAA","sourcesContent":["import { TokenBridgeProcessor, SPLTokenProcessor } from '../builtin/solana'\n\nTokenBridgeProcessor.bind({\n address: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',\n}).onTransferNative((args, ctx) => {\n ctx.meter.Counter('total_transfer_amount').add(args.amount)\n})\n\nSPLTokenProcessor.bind({ address: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb' })\n .onMintTo((data, ctx) => {\n if (data.mint === '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs') {\n ctx.meter.Counter('totalWeth_supply').add(data.amount as number)\n }\n })\n .onBurn((data, ctx) => {\n if (data.mint === '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs') {\n ctx.meter.Counter('totalWeth_supply').sub(data.amount as number)\n }\n })\n .innerInstruction(true)\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const CHAIN_MAP: Record<string, string>;
2
+ export declare const SOL_MAINMET_ID = "sol_mainnet";
3
+ export declare const SOL_DEVNET_ID = "sol_devnet";
4
+ export declare const SOL_TESTNENT_ID = "sol_testnet";
5
+ export declare const SUI_DEVNET_ID = "sui_devnet";
6
+ export declare const APTOS_TESTNET_ID = "aptos_testnet";
7
+ export declare function getChainName(chainId: string | number): string;
@@ -2,11 +2,8 @@
2
2
  // copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js
3
3
  // and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getChainName = exports.CHAIN_MAP = void 0;
5
+ exports.getChainName = exports.APTOS_TESTNET_ID = exports.SUI_DEVNET_ID = exports.SOL_TESTNENT_ID = exports.SOL_DEVNET_ID = exports.SOL_MAINMET_ID = exports.CHAIN_MAP = void 0;
6
6
  exports.CHAIN_MAP = {
7
- SOL_mainnet: 'solana',
8
- SOL_devnet: 'solana-dev',
9
- SOL_testnet: 'solana-test',
10
7
  0: 'kardia',
11
8
  1: 'ethereum',
12
9
  2: 'expanse',
@@ -84,6 +81,16 @@ exports.CHAIN_MAP = {
84
81
  11297108109: 'palm',
85
82
  836542336838601: 'curio',
86
83
  };
84
+ exports.SOL_MAINMET_ID = 'sol_mainnet';
85
+ exports.SOL_DEVNET_ID = 'sol_devnet';
86
+ exports.SOL_TESTNENT_ID = 'sol_testnet';
87
+ exports.CHAIN_MAP[exports.SOL_MAINMET_ID] = 'solana';
88
+ exports.CHAIN_MAP[exports.SOL_DEVNET_ID] = 'solana-dev';
89
+ exports.CHAIN_MAP[exports.SOL_TESTNENT_ID] = 'solana-test';
90
+ exports.SUI_DEVNET_ID = 'sui_devnet';
91
+ exports.CHAIN_MAP[exports.SUI_DEVNET_ID] = 'sui-dev';
92
+ exports.APTOS_TESTNET_ID = 'aptos_testnet';
93
+ exports.CHAIN_MAP[exports.APTOS_TESTNET_ID] = 'aptos-test';
87
94
  function getChainName(chainId) {
88
95
  if (typeof chainId === 'number') {
89
96
  chainId = chainId.toString();
@@ -95,4 +102,4 @@ function getChainName(chainId) {
95
102
  return chainId;
96
103
  }
97
104
  exports.getChainName = getChainName;
98
- //# sourceMappingURL=chainmap.js.map
105
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/utils/chain.ts"],"names":[],"mappings":"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","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport const CHAIN_MAP: Record<string, string> = {\n 0: 'kardia',\n 1: 'ethereum',\n 2: 'expanse',\n 3: 'ropsten',\n 4: 'rinkeby',\n 5: 'goerli',\n 6: 'kotti',\n 8: 'ubiq',\n 10: 'optimism',\n 19: 'songbird',\n 20: 'elastos',\n 25: 'cronos',\n 30: 'rsk',\n 40: 'telos',\n 50: 'xdc',\n 52: 'csc',\n 55: 'zyx',\n 56: 'binance',\n 57: 'syscoin',\n 60: 'gochain',\n 61: 'ethclassic',\n 63: 'mordor',\n 66: 'okexchain',\n 70: 'hoo',\n 82: 'meter',\n 88: 'tomochain',\n 100: 'xdai',\n 106: 'velas',\n 108: 'thundercore',\n 122: 'fuse',\n 128: 'heco',\n 137: 'polygon',\n 200: 'xdaiarb',\n 212: 'astor',\n 246: 'energyweb',\n 250: 'fantom',\n 269: 'hpb',\n 288: 'boba',\n 321: 'kucoin',\n 336: 'shiden',\n 361: 'theta',\n 416: 'sx',\n 534: 'candle',\n 592: 'astar',\n 820: 'callisto',\n 888: 'wanchain',\n 1088: 'metis',\n 1246: 'omchain',\n 1284: 'moonbeam',\n 1285: 'moonriver',\n 2018: 'dev',\n 2020: 'ronin',\n 2222: 'kava',\n 2612: 'ezchain',\n 4181: 'phi',\n 4689: 'iotex',\n 5050: 'xlc',\n 5551: 'nahmii',\n 7777: 'nmactest',\n 8217: 'klaytn',\n 9001: 'evmos',\n 10000: 'smartbch',\n 103090: 'crystaleum',\n 32659: 'fusion',\n 42161: 'arbitrum',\n 42220: 'celo',\n 42262: 'oasis',\n 43114: 'avalanche',\n 71402: 'godwoken',\n 200625: 'akroma',\n 333999: 'polis',\n 11155111: 'sepolia',\n 1313161554: 'aurora',\n 1666600000: 'harmony',\n 11297108109: 'palm',\n 836542336838601: 'curio',\n}\n\nexport const SOL_MAINMET_ID = 'sol_mainnet'\nexport const SOL_DEVNET_ID = 'sol_devnet'\nexport const SOL_TESTNENT_ID = 'sol_testnet'\nCHAIN_MAP[SOL_MAINMET_ID] = 'solana'\nCHAIN_MAP[SOL_DEVNET_ID] = 'solana-dev'\nCHAIN_MAP[SOL_TESTNENT_ID] = 'solana-test'\n\nexport const SUI_DEVNET_ID = 'sui_devnet'\nCHAIN_MAP[SUI_DEVNET_ID] = 'sui-dev'\n\nexport const APTOS_TESTNET_ID = 'aptos_testnet'\nCHAIN_MAP[APTOS_TESTNET_ID] = 'aptos-test'\n\nexport function getChainName(chainId: string | number): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n return chainId\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { BigNumber } from 'ethers';
2
2
  import { BigDecimal, MetricValue } from '@sentio/sdk';
3
- import { Numberish } from '../numberish';
3
+ import { Numberish } from '../core';
4
4
  export declare function toBigDecimal(n: BigNumber): BigDecimal;
5
5
  export declare function metricValueToNumberish(v: MetricValue): Numberish;
@@ -24,4 +24,4 @@ function metricValueToNumberish(v) {
24
24
  throw Error("MetricValue doesn't contain any of possible value");
25
25
  }
26
26
  exports.metricValueToNumberish = metricValueToNumberish;
27
- //# sourceMappingURL=convert.js.map
27
+ //# sourceMappingURL=conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/utils/conversion.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,qCAAqD;AAGrD,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,IAAI,gBAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AACrC,CAAC;AAFD,oCAEC;AAED,SAAgB,sBAAsB,CAAC,CAAc;IACnD,IAAI,CAAC,CAAC,WAAW,EAAE;QACjB,OAAO,CAAC,CAAC,WAAW,CAAA;KACrB;IACD,IAAI,CAAC,CAAC,UAAU,EAAE;QAChB,MAAM,EAAE,GAAG,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,OAAO,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SACjC;QACD,OAAO,EAAE,CAAA;KACV;IAED,IAAI,CAAC,CAAC,UAAU,EAAE;QAChB,OAAO,IAAI,gBAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACpC;IAED,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAA;AAClE,CAAC;AAjBD,wDAiBC","sourcesContent":["import { BigNumber } from 'ethers'\nimport { BigDecimal, MetricValue } from '@sentio/sdk'\nimport { Numberish } from '../core'\n\nexport function toBigDecimal(n: BigNumber) {\n return new BigDecimal(n.toString())\n}\n\nexport function metricValueToNumberish(v: MetricValue): Numberish {\n if (v.doubleValue) {\n return v.doubleValue\n }\n if (v.bigInteger) {\n const bn = BigNumber.from(v.bigInteger.data)\n if (v.bigInteger.negative) {\n return BigNumber.from(0).sub(bn)\n }\n return bn\n }\n\n if (v.bigDecimal) {\n return new BigDecimal(v.bigDecimal)\n }\n\n throw Error(\"MetricValue doesn't contain any of possible value\")\n}\n"]}
@@ -9,11 +9,11 @@ export interface DexPriceResult {
9
9
  error?: string;
10
10
  }
11
11
  declare class DexPrice {
12
- private USD_ORACLE_MAP;
13
- private ETH_ORACLE_MAP;
14
- private BTC_ORACLE_MAP;
15
- private ASSETS_INFOS;
16
- private readonly chainId;
12
+ USD_ORACLE_MAP: Map<string, string>;
13
+ ETH_ORACLE_MAP: Map<string, string>;
14
+ BTC_ORACLE_MAP: Map<string, string>;
15
+ ASSETS_INFOS: Map<string, number>;
16
+ readonly chainId: number;
17
17
  constructor(csvFileName: string, chainId: number);
18
18
  getPrice(asset: string, blockTag?: BlockTag, unit?: PriceUnit): Promise<DexPriceResult>;
19
19
  }
@@ -8,7 +8,7 @@ const eacaggregatorproxy_processor_1 = require("../builtin/internal/eacaggregato
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const sync_1 = require("csv-parse/sync");
11
- const erc20_1 = require("./erc20");
11
+ const token_1 = require("./token");
12
12
  var PriceUnit;
13
13
  (function (PriceUnit) {
14
14
  PriceUnit[PriceUnit["USD"] = 0] = "USD";
@@ -92,7 +92,7 @@ class DexPrice {
92
92
  this.ASSETS_INFOS.set(asset, decimal);
93
93
  }
94
94
  return {
95
- price: (0, erc20_1.scaleDown)(price, decimal).toNumber(),
95
+ price: (0, token_1.scaleDown)(price, decimal).toNumber(),
96
96
  };
97
97
  }
98
98
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"dex-price.js","sourceRoot":"","sources":["../../src/utils/dex-price.ts"],"names":[],"mappings":";;;;;;AAAA,mGAAgG;AAChG,gDAAuB;AACvB,4CAAmB;AAEnB,yCAAsC;AAEtC,mCAAmC;AASnC,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,uCAAO,CAAA;IACP,uCAAO,CAAA;IACP,uCAAO,CAAA;AACT,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;AAOD,uGAAuG;AACvG,wDAAwD;AACxD,MAAM,QAAQ;IACJ,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE/B,OAAO,CAAQ;IAEhC,YAAY,WAAmB,EAAE,OAAe;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACxD,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;QAEpD,MAAM,OAAO,GAAmB,IAAA,YAAK,EAAC,WAAW,EAAE;YACjD,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAA;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;YAC5C,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACxC;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACxC;iBAAM,IAAI,MAAM,IAAI,KAAK,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACxC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;aAC9D;YAED,sCAAsC;SACvC;IACH,CAAC;IAED,6BAA6B;IAC7B,wBAAwB;IACxB,sDAAsD;IACtD,2BAA2B;IAC3B,sFAAsF;IACtF,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,WAAqB,QAAQ,EAC7B,OAAkB,SAAS,CAAC,GAAG;QAE/B,wCAAwC;QACxC,aAAa;QACb,8EAA8E;QAC9E,MAAM;QACN,IAAI;QAEJ,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAA;QACnC,QAAQ,IAAI,EAAE;YACZ,KAAK,SAAS,CAAC,GAAG;gBAChB,SAAS,GAAG,IAAI,CAAC,cAAc,CAAA;gBAC/B,MAAK;YACP,KAAK,SAAS,CAAC,GAAG;gBAChB,SAAS,GAAG,IAAI,CAAC,cAAc,CAAA;gBAC/B,MAAK;YACP,QAAQ;SACT;QAED,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAElC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;gBACL,KAAK,EAAE,+BAA+B;aACvC,CAAA;SACF;QAED,MAAM,QAAQ,GAAG,IAAA,4DAA6B,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClE,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;gBACxC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAA;YAEF,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;gBACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACtC;YAED,OAAO;gBACL,KAAK,EAAE,IAAA,iBAAS,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE;aAC5C,CAAA;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;gBACL,KAAK,EACH,wBAAwB;oBACxB,KAAK;oBACL,aAAa;oBACb,IAAI;oBACJ,YAAY;oBACZ,IAAI,CAAC,OAAO;oBACZ,aAAa;oBACb,CAAC,CAAC,QAAQ,EAAE;aACf,CAAA;SACF;IACH,CAAC;CACF;AAEY,QAAA,gBAAgB,GAAG,IAAI,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AAC3D,QAAA,cAAc,GAAG,IAAI,QAAQ,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAA","sourcesContent":["import { getEACAggregatorProxyContract } from '../builtin/internal/eacaggregatorproxy_processor'\nimport path from 'path'\nimport fs from 'fs'\n\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from '@ethersproject/providers'\nimport { scaleDown } from './erc20'\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 private USD_ORACLE_MAP = new Map<string, string>()\n private ETH_ORACLE_MAP = new Map<string, string>()\n private BTC_ORACLE_MAP = new Map<string, string>()\n private ASSETS_INFOS = new Map<string, number>()\n\n private 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 = 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":";;;;;;AAAA,mGAAgG;AAChG,gDAAuB;AACvB,4CAAmB;AAEnB,yCAAsC;AAEtC,mCAAmC;AASnC,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,uCAAO,CAAA;IACP,uCAAO,CAAA;IACP,uCAAO,CAAA;AACT,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;AAOD,uGAAuG;AACvG,wDAAwD;AACxD,MAAM,QAAQ;IACZ,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE/B,OAAO,CAAQ;IAExB,YAAY,WAAmB,EAAE,OAAe;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACxD,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;QAEpD,MAAM,OAAO,GAAmB,IAAA,YAAK,EAAC,WAAW,EAAE;YACjD,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAA;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;YAC5C,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACxC;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACxC;iBAAM,IAAI,MAAM,IAAI,KAAK,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACxC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;aAC9D;YAED,sCAAsC;SACvC;IACH,CAAC;IAED,6BAA6B;IAC7B,wBAAwB;IACxB,sDAAsD;IACtD,2BAA2B;IAC3B,sFAAsF;IACtF,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,WAAqB,QAAQ,EAC7B,OAAkB,SAAS,CAAC,GAAG;QAE/B,wCAAwC;QACxC,aAAa;QACb,8EAA8E;QAC9E,MAAM;QACN,IAAI;QAEJ,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAA;QACnC,QAAQ,IAAI,EAAE;YACZ,KAAK,SAAS,CAAC,GAAG;gBAChB,SAAS,GAAG,IAAI,CAAC,cAAc,CAAA;gBAC/B,MAAK;YACP,KAAK,SAAS,CAAC,GAAG;gBAChB,SAAS,GAAG,IAAI,CAAC,cAAc,CAAA;gBAC/B,MAAK;YACP,QAAQ;SACT;QAED,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAElC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;gBACL,KAAK,EAAE,+BAA+B;aACvC,CAAA;SACF;QAED,MAAM,QAAQ,GAAG,IAAA,4DAA6B,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClE,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;gBACxC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAA;YAEF,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;gBACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;aACtC;YAED,OAAO;gBACL,KAAK,EAAE,IAAA,iBAAS,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE;aAC5C,CAAA;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;gBACL,KAAK,EACH,wBAAwB;oBACxB,KAAK;oBACL,aAAa;oBACb,IAAI;oBACJ,YAAY;oBACZ,IAAI,CAAC,OAAO;oBACZ,aAAa;oBACb,CAAC,CAAC,QAAQ,EAAE;aACf,CAAA;SACF;IACH,CAAC;CACF;AAEY,QAAA,gBAAgB,GAAG,IAAI,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AAC3D,QAAA,cAAc,GAAG,IAAI,QAAQ,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAA","sourcesContent":["import { getEACAggregatorProxyContract } from '../builtin/internal/eacaggregatorproxy_processor'\nimport path from 'path'\nimport fs from 'fs'\n\nimport { parse } from 'csv-parse/sync'\nimport { BlockTag } from '@ethersproject/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 = 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"]}
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const dex_price_1 = require("./dex-price");
4
4
  const sdk_1 = require("@sentio/sdk");
5
- const test_1 = require("../test");
5
+ const test_provider_1 = require("../testing/test-provider");
6
6
  const chai_1 = require("chai");
7
7
  describe('dex price tests', () => {
8
8
  global.PROCESSOR_STATE = new sdk_1.ProcessorState();
9
- const haveProviders = (0, test_1.loadTestProvidersFromEnv)(['1', '5']);
9
+ const haveProviders = (0, test_provider_1.loadTestProvidersFromEnv)(['1', '5']);
10
10
  const testIf = haveProviders ? test : test.skip;
11
11
  testIf('get price at mainnet', async () => {
12
12
  const usdc = await dex_price_1.EthereumDexPrice.getPrice('usdc', 15677823);
@@ -1 +1 @@
1
- {"version":3,"file":"dex-price.test.js","sourceRoot":"","sources":["../../src/utils/dex-price.test.ts"],"names":[],"mappings":";;AAAA,2CAA8D;AAC9D,qCAA4C;AAC5C,kCAAkD;AAClD,+BAA6B;AAE7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,CAAC,eAAe,GAAG,IAAI,oBAAc,EAAE,CAAA;IAC7C,MAAM,aAAa,GAAG,IAAA,+BAAwB,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 { ProcessorState } from '@sentio/sdk'\nimport { loadTestProvidersFromEnv } from '../test'\nimport { expect } from 'chai'\n\ndescribe('dex price tests', () => {\n global.PROCESSOR_STATE = new ProcessorState()\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,2CAA8D;AAC9D,qCAA4C;AAC5C,4DAAmE;AAEnE,+BAA6B;AAE7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,CAAC,eAAe,GAAG,IAAI,oBAAc,EAAE,CAAA;IAC7C,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 { ProcessorState } from '@sentio/sdk'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider'\n\nimport { expect } from 'chai'\n\ndescribe('dex price tests', () => {\n global.PROCESSOR_STATE = new ProcessorState()\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,20 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const sdk_1 = require("@sentio/sdk");
4
- const erc20_1 = require("./erc20");
5
- const test_1 = require("../test");
4
+ console.log(sdk_1.DummyProvider);
5
+ const token_1 = require("./token");
6
+ const test_provider_1 = require("../testing/test-provider");
6
7
  describe('erc20 tests', () => {
7
8
  global.PROCESSOR_STATE = new sdk_1.ProcessorState();
8
- const haveProviders = (0, test_1.loadTestProvidersFromEnv)('1');
9
+ const haveProviders = (0, test_provider_1.loadTestProvidersFromEnv)('1');
9
10
  const testIf = haveProviders ? test : test.skip;
10
11
  testIf('test bytes32', async () => {
11
- const info = await (0, erc20_1.getERC20TokenInfo)('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2');
12
+ const info = await (0, token_1.getERC20TokenInfo)('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2');
12
13
  expect(info.decimal).toEqual(18);
13
14
  expect(info.symbol).toEqual('MKR');
14
15
  expect(info.name).toEqual('Maker');
15
16
  });
16
17
  testIf('test normal', async () => {
17
- const info = await (0, erc20_1.getERC20TokenInfo)('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48');
18
+ const info = await (0, token_1.getERC20TokenInfo)('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48');
18
19
  expect(info.decimal).toEqual(6);
19
20
  expect(info.symbol).toEqual('USDC');
20
21
  expect(info.name).toEqual('USD Coin');
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/utils/erc20.test.ts"],"names":[],"mappings":";;AAAA,qCAA4C;AAC5C,mCAA2C;AAC3C,kCAAkD;AAElD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,CAAC,eAAe,GAAG,IAAI,oBAAc,EAAE,CAAA;IAC7C,MAAM,aAAa,GAAG,IAAA,+BAAwB,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 { ProcessorState } from '@sentio/sdk'\nimport { getERC20TokenInfo } from './erc20'\nimport { loadTestProvidersFromEnv } from '../test'\n\ndescribe('erc20 tests', () => {\n global.PROCESSOR_STATE = new ProcessorState()\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,qCAA2D;AAE3D,OAAO,CAAC,GAAG,CAAC,mBAAa,CAAC,CAAA;AAE1B,mCAA2C;AAC3C,4DAAmE;AAEnE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,CAAC,eAAe,GAAG,IAAI,oBAAc,EAAE,CAAA;IAC7C,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 { ProcessorState, DummyProvider } from '@sentio/sdk'\n\nconsole.log(DummyProvider)\n\nimport { getERC20TokenInfo } from './token'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider'\n\ndescribe('erc20 tests', () => {\n global.PROCESSOR_STATE = new ProcessorState()\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,5 +1,4 @@
1
- export { getChainName } from './chainmap';
2
- export { toBigDecimal, metricValueToNumberish } from './convert';
3
- export { getERC20TokenInfo, getER20NormalizedAmount, scaleDown, TokenInfo, NATIVE_ETH } from './erc20';
4
- export { EthereumDexPrice, GoerliDexPrice, PriceUnit } from './dex-price';
5
- export type { DexPriceResult } from './dex-price';
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,19 +1,31 @@
1
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PriceUnit = exports.GoerliDexPrice = exports.EthereumDexPrice = exports.NATIVE_ETH = exports.TokenInfo = exports.scaleDown = exports.getER20NormalizedAmount = exports.getERC20TokenInfo = exports.metricValueToNumberish = exports.toBigDecimal = exports.getChainName = void 0;
4
- var chainmap_1 = require("./chainmap");
5
- Object.defineProperty(exports, "getChainName", { enumerable: true, get: function () { return chainmap_1.getChainName; } });
6
- var convert_1 = require("./convert");
7
- Object.defineProperty(exports, "toBigDecimal", { enumerable: true, get: function () { return convert_1.toBigDecimal; } });
8
- Object.defineProperty(exports, "metricValueToNumberish", { enumerable: true, get: function () { return convert_1.metricValueToNumberish; } });
9
- var erc20_1 = require("./erc20");
10
- Object.defineProperty(exports, "getERC20TokenInfo", { enumerable: true, get: function () { return erc20_1.getERC20TokenInfo; } });
11
- Object.defineProperty(exports, "getER20NormalizedAmount", { enumerable: true, get: function () { return erc20_1.getER20NormalizedAmount; } });
12
- Object.defineProperty(exports, "scaleDown", { enumerable: true, get: function () { return erc20_1.scaleDown; } });
13
- Object.defineProperty(exports, "TokenInfo", { enumerable: true, get: function () { return erc20_1.TokenInfo; } });
14
- Object.defineProperty(exports, "NATIVE_ETH", { enumerable: true, get: function () { return erc20_1.NATIVE_ETH; } });
15
- var dex_price_1 = require("./dex-price");
16
- Object.defineProperty(exports, "EthereumDexPrice", { enumerable: true, get: function () { return dex_price_1.EthereumDexPrice; } });
17
- Object.defineProperty(exports, "GoerliDexPrice", { enumerable: true, get: function () { return dex_price_1.GoerliDexPrice; } });
18
- Object.defineProperty(exports, "PriceUnit", { enumerable: true, get: function () { return dex_price_1.PriceUnit; } });
26
+ exports.dexPrice = exports.token = exports.conversion = exports.chain = void 0;
27
+ exports.chain = __importStar(require("./chain"));
28
+ exports.conversion = __importStar(require("./conversion"));
29
+ exports.token = __importStar(require("./token"));
30
+ exports.dexPrice = __importStar(require("./dex-price"));
19
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAAhC,wGAAA,YAAY,OAAA;AACrB,qCAAgE;AAAvD,uGAAA,YAAY,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAC7C,iCAAsG;AAA7F,0GAAA,iBAAiB,OAAA;AAAE,gHAAA,uBAAuB,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,mGAAA,UAAU,OAAA;AACrF,yCAAyE;AAAhE,6GAAA,gBAAgB,OAAA;AAAE,2GAAA,cAAc,OAAA;AAAE,sGAAA,SAAS,OAAA","sourcesContent":["export { getChainName } from './chainmap'\nexport { toBigDecimal, metricValueToNumberish } from './convert'\nexport { getERC20TokenInfo, getER20NormalizedAmount, scaleDown, TokenInfo, NATIVE_ETH } from './erc20'\nexport { EthereumDexPrice, GoerliDexPrice, PriceUnit } from './dex-price'\nexport type { DexPriceResult } from './dex-price'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAgC;AAChC,2DAA0C;AAC1C,iDAAgC;AAChC,wDAAuC","sourcesContent":["export * as chain from './chain'\nexport * as conversion from './conversion'\nexport * as token from './token'\nexport * as dexPrice from './dex-price'\n"]}
@@ -1,6 +1,6 @@
1
1
  import { BigNumber } from '@ethersproject/bignumber';
2
2
  import { BigDecimal } from '@sentio/sdk';
3
- export declare class TokenInfo {
3
+ export interface TokenInfo {
4
4
  symbol: string;
5
5
  name: string;
6
6
  decimal: number;
@@ -1,18 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scaleDown = exports.getER20NormalizedAmount = exports.getERC20TokenInfo = exports.NATIVE_ETH = exports.TokenInfo = void 0;
3
+ exports.scaleDown = exports.getER20NormalizedAmount = exports.getERC20TokenInfo = exports.NATIVE_ETH = void 0;
4
4
  const error_1 = require("../error");
5
5
  const erc20_1 = require("../builtin/erc20");
6
6
  const erc20bytes_processor_1 = require("../builtin/internal/erc20bytes_processor");
7
7
  const sdk_1 = require("@sentio/sdk");
8
- const convert_1 = require("./convert");
8
+ const conversion_1 = require("./conversion");
9
9
  const ethers_1 = require("ethers");
10
- class TokenInfo {
11
- symbol;
12
- name;
13
- decimal;
14
- }
15
- exports.TokenInfo = TokenInfo;
16
10
  exports.NATIVE_ETH = {
17
11
  symbol: 'ETH',
18
12
  decimal: 18,
@@ -60,7 +54,7 @@ async function getER20NormalizedAmount(tokenAddress, amount, chainId) {
60
54
  exports.getER20NormalizedAmount = getER20NormalizedAmount;
61
55
  function scaleDown(amount, decimal) {
62
56
  const divider = new sdk_1.BigDecimal(10).pow(decimal);
63
- return (0, convert_1.toBigDecimal)(amount).dividedBy(divider);
57
+ return (0, conversion_1.toBigDecimal)(amount).dividedBy(divider);
64
58
  }
65
59
  exports.scaleDown = scaleDown;
66
- //# sourceMappingURL=erc20.js.map
60
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":";;;AAEA,oCAA8C;AAC9C,4CAAmD;AACnD,mFAAgF;AAChF,qCAAwC;AACxC,6CAA2C;AAC3C,mCAA8B;AAQjB,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,YAAY;CACnB,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAA;AAEzC,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,cAAK,CAAC,kBAAkB,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;SAC5D;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,cAAK,CAAC,kBAAkB,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;SAChE;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACzC,MAAM,IAAI,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;QACjD,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;AAhCD,8CAgCC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,MAAiB,EACjB,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,MAAiB,EAAE,OAAe;IAC1D,MAAM,OAAO,GAAG,IAAI,gBAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/C,OAAO,IAAA,yBAAY,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAChD,CAAC;AAHD,8BAGC","sourcesContent":["import { BigNumber } from '@ethersproject/bignumber'\n\nimport { transformEtherError } from '../error'\nimport { getERC20Contract } from '../builtin/erc20'\nimport { getERC20BytesContract } from '../builtin/internal/erc20bytes_processor'\nimport { BigDecimal } from '@sentio/sdk'\nimport { toBigDecimal } from './conversion'\nimport { utils } 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, TokenInfo>()\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 = utils.parseBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = utils.parseBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info: TokenInfo = { name, symbol, decimal }\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: BigNumber,\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: BigNumber, decimal: number) {\n const divider = new BigDecimal(10).pow(decimal)\n return toBigDecimal(amount).dividedBy(divider)\n}\n"]}