@sentio/sdk 0.1.13 → 0.2.16

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 (120) hide show
  1. package/dist/base-processor-template.d.ts +19 -0
  2. package/dist/base-processor-template.js +80 -0
  3. package/dist/base-processor-template.js.map +1 -0
  4. package/dist/base-processor.d.ts +7 -18
  5. package/dist/base-processor.js +69 -28
  6. package/dist/base-processor.js.map +1 -1
  7. package/dist/bind-options.d.ts +16 -0
  8. package/dist/bind-options.js +20 -0
  9. package/dist/bind-options.js.map +1 -0
  10. package/dist/chainmap.d.ts +1 -79
  11. package/dist/chainmap.js +0 -1
  12. package/dist/chainmap.js.map +1 -1
  13. package/dist/cli/build.d.ts +3 -1
  14. package/dist/cli/build.js +100 -17
  15. package/dist/cli/build.js.map +1 -1
  16. package/dist/cli/cli.d.ts +1 -2
  17. package/dist/cli/cli.js +9 -15
  18. package/dist/cli/cli.js.map +1 -1
  19. package/dist/cli/config.d.ts +7 -1
  20. package/dist/cli/config.js +4 -1
  21. package/dist/cli/config.js.map +1 -1
  22. package/dist/{processor_server.d.ts → cli/solana-code-gen.d.ts} +0 -0
  23. package/dist/cli/solana-code-gen.js +19 -0
  24. package/dist/cli/solana-code-gen.js.map +1 -0
  25. package/dist/cli/upload.js +4 -2
  26. package/dist/cli/upload.js.map +1 -1
  27. package/dist/gen/processor/protos/processor.d.ts +35 -10
  28. package/dist/gen/processor/protos/processor.js +238 -53
  29. package/dist/gen/processor/protos/processor.js.map +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.js +5 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/numberish.test.d.ts +1 -0
  34. package/dist/numberish.test.js +9 -0
  35. package/dist/numberish.test.js.map +1 -0
  36. package/dist/provider.d.ts +1 -1
  37. package/dist/provider.js +3 -0
  38. package/dist/provider.js.map +1 -1
  39. package/dist/service.d.ts +4 -2
  40. package/dist/service.js +82 -47
  41. package/dist/service.js.map +1 -1
  42. package/dist/solana-processor.d.ts +6 -6
  43. package/dist/solana-processor.js +5 -20
  44. package/dist/solana-processor.js.map +1 -1
  45. package/dist/target-ethers-sentio/codegen.js +46 -15
  46. package/dist/target-ethers-sentio/codegen.js.map +1 -1
  47. package/dist/test-case/clean-test.d.ts +1 -0
  48. package/dist/test-case/clean-test.js +11 -0
  49. package/dist/test-case/clean-test.js.map +1 -0
  50. package/dist/test-case/erc20-template.d.ts +1 -0
  51. package/dist/test-case/erc20-template.js +23 -0
  52. package/dist/test-case/erc20-template.js.map +1 -0
  53. package/dist/test-case/erc20-template.test.d.ts +1 -0
  54. package/dist/test-case/erc20-template.test.js +69 -0
  55. package/dist/test-case/erc20-template.test.js.map +1 -0
  56. package/dist/test-case/erc20.js +22 -6
  57. package/dist/test-case/erc20.js.map +1 -1
  58. package/dist/test-case/erc20.test.d.ts +1 -0
  59. package/dist/test-case/erc20.test.js +143 -0
  60. package/dist/test-case/erc20.test.js.map +1 -0
  61. package/dist/test-case/mirrorworld.d.ts +1 -4
  62. package/dist/test-case/mirrorworld.js +37 -57
  63. package/dist/test-case/mirrorworld.js.map +1 -1
  64. package/dist/test-case/solana.test.d.ts +1 -0
  65. package/dist/test-case/solana.test.js +56 -0
  66. package/dist/test-case/solana.test.js.map +1 -0
  67. package/dist/test-case/types/{ERC20.d.ts → Erc20.d.ts} +0 -0
  68. package/dist/test-case/types/{ERC20.js → Erc20.js} +0 -0
  69. package/dist/test-case/types/{ERC20.js.map → Erc20.js.map} +0 -0
  70. package/dist/test-case/types/erc20_processor.d.ts +9 -8
  71. package/dist/test-case/types/erc20_processor.js +38 -14
  72. package/dist/test-case/types/erc20_processor.js.map +1 -1
  73. package/dist/test-case/types/factories/{ERC20__factory.d.ts → Erc20__factory.d.ts} +0 -0
  74. package/dist/test-case/types/factories/{ERC20__factory.js → Erc20__factory.js} +0 -0
  75. package/dist/test-case/types/factories/{ERC20__factory.js.map → Erc20__factory.js.map} +0 -0
  76. package/dist/test-case/types/game_wallet_processor.d.ts +107 -0
  77. package/dist/test-case/types/game_wallet_processor.js +102 -0
  78. package/dist/test-case/types/game_wallet_processor.js.map +1 -0
  79. package/dist/test-case/types/wormhole_processor.d.ts +16 -0
  80. package/dist/test-case/types/wormhole_processor.js +192 -0
  81. package/dist/test-case/types/wormhole_processor.js.map +1 -0
  82. package/dist/test-case/wormhole-token-bridge.d.ts +1 -0
  83. package/dist/test-case/wormhole-token-bridge.js +7 -0
  84. package/dist/test-case/wormhole-token-bridge.js.map +1 -0
  85. package/package.json +5 -3
  86. package/dist/baseprocessor.d.ts +0 -34
  87. package/dist/baseprocessor.js +0 -110
  88. package/dist/baseprocessor.js.map +0 -1
  89. package/dist/processor_server.js +0 -67
  90. package/dist/processor_server.js.map +0 -1
  91. package/dist/solana_processor.d.ts +0 -25
  92. package/dist/solana_processor.js +0 -84
  93. package/dist/solana_processor.js.map +0 -1
  94. package/dist/test_case/erc20.d.ts +0 -1
  95. package/dist/test_case/erc20.js +0 -22
  96. package/dist/test_case/erc20.js.map +0 -1
  97. package/dist/test_case/mirrorworld.d.ts +0 -4
  98. package/dist/test_case/mirrorworld.js +0 -62
  99. package/dist/test_case/mirrorworld.js.map +0 -1
  100. package/dist/test_case/types/ERC20.d.ts +0 -150
  101. package/dist/test_case/types/ERC20.js +0 -3
  102. package/dist/test_case/types/ERC20.js.map +0 -1
  103. package/dist/test_case/types/common.d.ts +0 -22
  104. package/dist/test_case/types/common.js +0 -3
  105. package/dist/test_case/types/common.js.map +0 -1
  106. package/dist/test_case/types/erc20_processor.d.ts +0 -28
  107. package/dist/test_case/types/erc20_processor.js +0 -58
  108. package/dist/test_case/types/erc20_processor.js.map +0 -1
  109. package/dist/test_case/types/factories/ERC20__factory.d.ts +0 -35
  110. package/dist/test_case/types/factories/ERC20__factory.js +0 -216
  111. package/dist/test_case/types/factories/ERC20__factory.js.map +0 -1
  112. package/dist/test_case/types/factories/index.d.ts +0 -1
  113. package/dist/test_case/types/factories/index.js +0 -9
  114. package/dist/test_case/types/factories/index.js.map +0 -1
  115. package/dist/test_case/types/game_wallet.d.ts +0 -45
  116. package/dist/test_case/types/game_wallet.js +0 -1396
  117. package/dist/test_case/types/game_wallet.js.map +0 -1
  118. package/dist/test_case/types/index.d.ts +0 -3
  119. package/dist/test_case/types/index.js +0 -30
  120. package/dist/test_case/types/index.js.map +0 -1
@@ -3,22 +3,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filter = void 0;
4
4
  const erc20_processor_1 = require("./types/erc20_processor");
5
5
  exports.filter = erc20_processor_1.Erc20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
6
- erc20_processor_1.Erc20Processor.bind('0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9', 1, 'x2y2')
7
- .startBlock(14201940)
6
+ const processorTemplate = new erc20_processor_1.Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {
7
+ console.log('');
8
+ });
9
+ erc20_processor_1.Erc20Processor.bind({
10
+ address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',
11
+ network: 1,
12
+ name: 'x2y2',
13
+ startBlock: 14201940,
14
+ })
8
15
  .onTransfer(async function (event, ctx) {
16
+ processorTemplate.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 3, name: 'dynamic' });
17
+ // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')
9
18
  ctx.meter.Counter('c1').add(1);
10
19
  }, exports.filter)
11
20
  .onBlock(async function (block, ctx) {
12
21
  ctx.meter.Histogram('h1').record(10, { k: 'v' });
13
22
  });
14
- erc20_processor_1.Erc20Processor.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 56, 'usdc')
15
- // .startBlock(14201940)
23
+ erc20_processor_1.Erc20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })
16
24
  .onTransfer(async function (event, ctx) {
17
25
  ctx.meter.Counter('c2').add(2);
18
26
  }, exports.filter)
19
27
  .onBlock(async function (block, ctx) {
20
28
  ctx.meter.Histogram('h1').record(20, { k: 'v' });
21
29
  });
22
- erc20_processor_1.Erc20Processor.bind('xxxx', 56);
23
- erc20_processor_1.Erc20Processor.bind('yyyy', 1);
30
+ // .startBlock(14201940)
31
+ erc20_processor_1.Erc20Processor.bind({ address: 'xxxx', network: 56 });
32
+ erc20_processor_1.Erc20Processor.bind({ address: 'yyyy', network: 1 });
33
+ // const template = Erc20Processor.template
34
+ // .onTransfer(async function (event, ctx) {
35
+ // ctx.meter.Counter('c2').add(2)
36
+ // }, filter)
37
+ // .onBlock(async function (block, ctx) {
38
+ // ctx.meter.Histogram('h1').record(20, { k: 'v' })
39
+ // })
24
40
  //# sourceMappingURL=erc20.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/test-case/erc20.ts"],"names":[],"mappings":";;;AAAA,6DAAsE;AAEzD,QAAA,MAAM,GAAG,gCAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,gCAAc,CAAC,IAAI,CAAC,4CAA4C,EAAE,CAAC,EAAE,MAAM,CAAC;KACzE,UAAU,CAAC,QAAQ,CAAC;KACpB,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEJ,gCAAc,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,EAAE,MAAM,CAAC;IAC3E,wBAAwB;KACvB,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEJ,gCAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAC/B,gCAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/test-case/erc20.ts"],"names":[],"mappings":";;;AAAA,6DAA8F;AAEjF,QAAA,MAAM,GAAG,gCAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,wCAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,gCAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC;KACC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAC9G,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEJ,gCAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtG,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AACJ,wBAAwB;AAExB,gCAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;AACrD,gCAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AAEpD,2CAA2C;AAC3C,8CAA8C;AAC9C,qCAAqC;AACrC,eAAe;AACf,2CAA2C;AAC3C,uDAAuD;AACvD,OAAO"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ // TODO move out of this package
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const chai_1 = require("chai");
28
+ const __1 = require("..");
29
+ const path = __importStar(require("path"));
30
+ const fs = __importStar(require("fs-extra"));
31
+ const clean_test_1 = require("./clean-test");
32
+ describe('Test Server with Example', () => {
33
+ const service = new __1.ProcessorServiceImpl(undefined);
34
+ const testContext = {};
35
+ before(async () => {
36
+ (0, clean_test_1.cleanTest)();
37
+ const fullPath = path.resolve('chains-config.json');
38
+ const chainsConfig = fs.readJsonSync(fullPath);
39
+ (0, __1.setProvider)(chainsConfig);
40
+ require('./erc20');
41
+ await service.start({ templateInstances: [] }, testContext);
42
+ });
43
+ it('check configuration', async () => {
44
+ const config = await service.getConfig({}, testContext);
45
+ (0, chai_1.expect)(config.contractConfigs).length(4);
46
+ // check auto rename
47
+ (0, chai_1.expect)(config.contractConfigs?.[2].contract?.name).equals('Erc20');
48
+ (0, chai_1.expect)(config.contractConfigs?.[3].contract?.name).equals('Erc20_1');
49
+ });
50
+ it('Check block dispatch', async () => {
51
+ const raw = toRaw(blockData);
52
+ const request = {
53
+ block: {
54
+ raw: raw,
55
+ },
56
+ chainId: '1',
57
+ };
58
+ const res = await service.processBlock(request, testContext);
59
+ (0, chai_1.expect)(res.result?.counters).length(0);
60
+ (0, chai_1.expect)(res.result?.histograms).length(1);
61
+ (0, chai_1.expect)(res.result?.histograms?.[0].metricValue?.bigInt).equals('10');
62
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
63
+ const histogram = res.result.histograms[0];
64
+ (0, chai_1.expect)(histogram.metadata?.blockNumber?.toString()).equals('14373295');
65
+ // Different chainId should be dispatch to other
66
+ const request2 = {
67
+ block: {
68
+ raw: raw,
69
+ },
70
+ chainId: '56',
71
+ };
72
+ const res2 = await service.processBlock(request2, testContext);
73
+ (0, chai_1.expect)(res2.result?.counters).length(0);
74
+ (0, chai_1.expect)(res2.result?.histograms).length(1);
75
+ (0, chai_1.expect)(res2.result?.histograms?.[0].metricValue?.bigInt).equals('20');
76
+ });
77
+ it('Check log dispatch', async () => {
78
+ const raw = toRaw(logData);
79
+ const request = {
80
+ logs: [],
81
+ };
82
+ const binding = __1.LogBinding.fromPartial({
83
+ handlerId: 0,
84
+ log: {
85
+ raw: raw,
86
+ },
87
+ });
88
+ request.logs.push(binding);
89
+ // just faked some logs here
90
+ const binding2 = __1.LogBinding.fromPartial({
91
+ handlerId: 1,
92
+ log: {
93
+ raw: raw,
94
+ },
95
+ });
96
+ request.logs.push(binding2);
97
+ const res = await service.processLog(request, testContext);
98
+ (0, chai_1.expect)(res.result?.counters).length(2);
99
+ (0, chai_1.expect)(res.result?.counters?.[0].metricValue?.bigInt).equals('1');
100
+ (0, chai_1.expect)(res.result?.counters?.[0].metadata?.chainId).equals('1');
101
+ (0, chai_1.expect)(res.result?.counters?.[1].metricValue?.bigInt).equals('2');
102
+ (0, chai_1.expect)(res.result?.counters?.[1].metadata?.chainId).equals('56');
103
+ (0, chai_1.expect)(res.result?.histograms).length(0);
104
+ (0, chai_1.expect)(res.configUpdated).equals(true);
105
+ const config = await service.getConfig({}, testContext);
106
+ (0, chai_1.expect)(config.contractConfigs).length(5); //config increased
107
+ (0, chai_1.expect)(config.contractConfigs?.[4].contract?.name).equals('dynamic');
108
+ });
109
+ const blockData = {
110
+ hash: '0x2b9b7cce1f17f3b7e1f3c2472cc806a07bee3f0baca07d021350950d81d73a42',
111
+ parentHash: '0xd538332875124ce30a6674926ae6befa2358ac0a03c70d60c24e74ad7bdf2505',
112
+ number: 14373295,
113
+ timestamp: 1647106437,
114
+ nonce: '0x73bcaf422fe98f49',
115
+ difficulty: null,
116
+ miner: '0x829BD824B016326A401d083B33D092293333A830',
117
+ extraData: '0xe4b883e5bda9e7a59ee4bb99e9b1bc493421',
118
+ };
119
+ const logData = {
120
+ blockNumber: 14213252,
121
+ blockHash: '0x83d646fac9350b281def8c4c37626f9d8efc95df801287b848c719edf35cdbaf',
122
+ transactionIndex: 347,
123
+ removed: false,
124
+ address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9',
125
+ data: '0x00000000000000000000000000000000000000000000009a71db64810aaa0000',
126
+ topics: [
127
+ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
128
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
129
+ '0x000000000000000000000000b329e39ebefd16f40d38f07643652ce17ca5bac1',
130
+ ],
131
+ transactionHash: '0x93355e0cb2c3490cb8a747029ff2dc8cdbde2407025b8391398436955afae303',
132
+ logIndex: 428,
133
+ };
134
+ function toRaw(obj) {
135
+ const logJsonStr = JSON.stringify(obj);
136
+ const raw = new Uint8Array(logJsonStr.length);
137
+ for (let i = 0; i < logJsonStr.length; i++) {
138
+ raw[i] = logJsonStr.charCodeAt(i);
139
+ }
140
+ return raw;
141
+ }
142
+ });
143
+ //# sourceMappingURL=erc20.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/test-case/erc20.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1 @@
1
- import { SolanaBaseProcessor } from 'solana-processor';
2
- export declare class MirrorWorldProcessor extends SolanaBaseProcessor {
3
- static bind(address: string, endpoint: string, name?: string): MirrorWorldProcessor;
4
- }
1
+ export {};
@@ -1,62 +1,42 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MirrorWorldProcessor = void 0;
7
- const solana_processor_1 = require("solana-processor");
8
- const bs58_1 = __importDefault(require("bs58"));
9
- const anchor_1 = require("@project-serum/anchor");
10
- const game_wallet_1 = require("./types/game_wallet");
11
- class MirrorWorldProcessor extends solana_processor_1.SolanaBaseProcessor {
12
- static bind(address, endpoint, name = 'MirrorWorld') {
13
- return new MirrorWorldProcessor(name, address, endpoint);
14
- }
15
- }
16
- exports.MirrorWorldProcessor = MirrorWorldProcessor;
17
- MirrorWorldProcessor.bind('F78NhTC9XmP1DKsCBRz5LGdQc4n4yFbj2dURiv7T9gGZ', 'https://api.mainnet-beta.solana.com')
18
- .onTransaction((txn, ctx) => {
19
- const instructionCoder = new anchor_1.BorshInstructionCoder(game_wallet_1.game_wallet_idl);
20
- for (const instruction of txn.transaction.message.instructions) {
21
- const decodedData = instructionCoder.decode(Buffer.from(bs58_1.default.decode(instruction.data)));
22
- console.log('instruction name: ' + decodedData?.name);
23
- if (decodedData) {
24
- handleDecodedInstruction(decodedData, ctx);
25
- }
26
- }
3
+ const game_wallet_processor_1 = require("./types/game_wallet_processor");
4
+ game_wallet_processor_1.GameWalletProcessor.bind('F78NhTC9XmP1DKsCBRz5LGdQc4n4yFbj2dURiv7T9gGZ', 'https://api.mainnet-beta.solana.com')
5
+ .onDistributeWithoutUser((payload, ctx) => {
6
+ const amount = payload.amount.toNumber();
7
+ ctx.meter.Counter('deposit_pool_total_value').add(amount);
8
+ ctx.meter.Counter('deposit_pool_current_value').add(amount);
9
+ ctx.meter.Counter('distribution_pool_total_value').sub(amount);
27
10
  })
28
- .onInstruction((ins, ctx) => {
29
- const instructionCoder = new anchor_1.BorshInstructionCoder(game_wallet_1.game_wallet_idl);
30
- const decodedData = instructionCoder.decode(Buffer.from(bs58_1.default.decode(ins)));
31
- if (decodedData) {
32
- handleDecodedInstruction(decodedData, ctx);
33
- }
11
+ .onDeposit((payload, ctx) => {
12
+ const amount = payload.amount.toNumber();
13
+ ctx.meter.Counter('deposit_pool_total_value').add(amount);
14
+ ctx.meter.Counter('deposit_pool_current_value').add(amount);
34
15
  })
35
- .startSlot(111111);
36
- function handleDecodedInstruction(instruction, ctx) {
37
- const instructionName = instruction.name;
38
- switch (instructionName) {
39
- case 'distributeWithoutUser': {
40
- const amount = instruction.data.amount;
41
- ctx.meter.Counter('distributeAmount').add(amount.toNumber());
42
- break;
43
- }
44
- case 'deposit':
45
- break;
46
- case 'withdraw':
47
- break;
48
- case 'spend':
49
- break;
50
- case 'distribute':
51
- break;
52
- case 'spendWithoutUser':
53
- break;
54
- case 'addDistributeSupply':
55
- break;
56
- case 'updateTokenConfig':
57
- break;
58
- default:
59
- break;
60
- }
61
- }
16
+ .onWithdraw((payload, ctx) => {
17
+ const amount = payload.amount.toNumber();
18
+ ctx.meter.Counter('deposit_pool_total_value').add(amount);
19
+ ctx.meter.Counter('distribution_pool_total_value').sub(amount);
20
+ })
21
+ .onSpend((payload, ctx) => {
22
+ const amount = payload.amount.toNumber();
23
+ ctx.meter.Counter('deposit_pool_total_value').add(amount);
24
+ ctx.meter.Counter('distribution_pool_total_value').sub(amount);
25
+ })
26
+ .onDistribute((payload, ctx) => {
27
+ const amount = payload.amount.toNumber();
28
+ ctx.meter.Counter('deposit_pool_total_value').add(amount);
29
+ ctx.meter.Counter('deposit_pool_current_value').add(amount);
30
+ ctx.meter.Counter('distribution_pool_total_value').sub(amount);
31
+ })
32
+ .onSpendWithoutUser((payload, ctx) => {
33
+ const amount = payload.amount.toNumber();
34
+ ctx.meter.Counter('deposit_pool_total_value').add(amount);
35
+ ctx.meter.Counter('deposit_pool_current_value').sub(amount);
36
+ })
37
+ .onAddDistributeSupply((payload, ctx) => {
38
+ const amount = payload.amount.toNumber();
39
+ ctx.meter.Counter('distribution_pool_total_value').add(amount);
40
+ })
41
+ .startSlot(142700000);
62
42
  //# sourceMappingURL=mirrorworld.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mirrorworld.js","sourceRoot":"","sources":["../../src/test-case/mirrorworld.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAsD;AAKtD,gDAAmC;AACnC,kDAA+E;AAE/E,qDAAqD;AAErD,MAAa,oBAAqB,SAAQ,sCAAmB;IAC3D,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAAgB,EAAE,IAAI,GAAG,aAAa;QACjE,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC1D,CAAC;CACF;AAJD,oDAIC;AAED,oBAAoB,CAAC,IAAI,CAAC,8CAA8C,EAAE,qCAAqC,CAAC;KAC7G,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1B,MAAM,gBAAgB,GAAG,IAAI,8BAAqB,CAAC,6BAAsB,CAAC,CAAA;IAC1E,KAAK,MAAM,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,YAA6C,EAAE;QAC/F,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvF,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,WAAW,EAAE,IAAI,CAAC,CAAA;QACrD,IAAI,WAAW,EAAE;YACf,wBAAwB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;SAC3C;KACF;AACH,CAAC,CAAC;KACD,aAAa,CAAC,CAAC,GAAW,EAAE,GAAG,EAAE,EAAE;IAClC,MAAM,gBAAgB,GAAG,IAAI,8BAAqB,CAAC,6BAAsB,CAAC,CAAA;IAC1E,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1E,IAAI,WAAW,EAAE;QACf,wBAAwB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;KAC3C;AACH,CAAC,CAAC;KACD,SAAS,CAAC,MAAM,CAAC,CAAA;AAEpB,SAAS,wBAAwB,CAAC,WAAwB,EAAE,GAAkB;IAC5E,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAA;IACxC,QAAQ,eAAe,EAAE;QACvB,KAAK,uBAAuB,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAQ,WAAW,CAAC,IAAY,CAAC,MAAM,CAAA;YACnD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC5D,MAAK;SACN;QACD,KAAK,SAAS;YACZ,MAAK;QACP,KAAK,UAAU;YACb,MAAK;QACP,KAAK,OAAO;YACV,MAAK;QACP,KAAK,YAAY;YACf,MAAK;QACP,KAAK,kBAAkB;YACrB,MAAK;QACP,KAAK,qBAAqB;YACxB,MAAK;QACP,KAAK,mBAAmB;YACtB,MAAK;QAEP;YACE,MAAK;KACR;AACH,CAAC"}
1
+ {"version":3,"file":"mirrorworld.js","sourceRoot":"","sources":["../../src/test-case/mirrorworld.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ // TODO move out of this package
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const chai_1 = require("chai");
8
+ const __1 = require("..");
9
+ const long_1 = __importDefault(require("long"));
10
+ const clean_test_1 = require("./clean-test");
11
+ describe('Test Server with Solana Example', () => {
12
+ const service = new __1.ProcessorServiceImpl(undefined);
13
+ const testContext = {};
14
+ before(async () => {
15
+ (0, clean_test_1.cleanTest)();
16
+ require('./mirrorworld');
17
+ require('./wormhole-token-bridge');
18
+ await service.start({ templateInstances: [] }, testContext);
19
+ });
20
+ it('check configuration ', async () => {
21
+ const config = await service.getConfig({}, testContext);
22
+ (0, chai_1.expect)(config.contractConfigs).length(2);
23
+ });
24
+ it('Check mirrorworld instruction dispatch', async () => {
25
+ const request = {
26
+ instructions: [
27
+ {
28
+ instructionData: 'CACadoFwjNvan4GP8gh3Jtm1qdeoKX5j2SbSNEiB',
29
+ slot: long_1.default.fromNumber(0),
30
+ programAccountId: 'F78NhTC9XmP1DKsCBRz5LGdQc4n4yFbj2dURiv7T9gGZ',
31
+ },
32
+ ],
33
+ };
34
+ const res = await service.processInstruction(request, testContext);
35
+ (0, chai_1.expect)(res.result?.counters).length(3);
36
+ (0, chai_1.expect)(res.result?.histograms).length(0);
37
+ (0, chai_1.expect)(res.result?.counters[0].metricValue?.bigInt).equal('5000000000');
38
+ });
39
+ it('Check wormhole token bridge instruction dispatch', async () => {
40
+ const request = {
41
+ instructions: [
42
+ {
43
+ instructionData: '33G5T8yXAQWdH8FX7fTy1mBJ6e4dUKfQWbViSrT7qJjpS8UAA3ftEQx9sNzrkaJm56xtENhDsWf',
44
+ slot: long_1.default.fromNumber(0),
45
+ programAccountId: 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb',
46
+ },
47
+ ],
48
+ };
49
+ const res = await service.processInstruction(request, testContext);
50
+ (0, chai_1.expect)(res.result?.counters).length(1);
51
+ (0, chai_1.expect)(res.result?.histograms).length(0);
52
+ (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(0);
53
+ (0, chai_1.expect)(res.result?.counters[0].metricValue?.doubleValue).equal(1000000);
54
+ });
55
+ });
56
+ //# sourceMappingURL=solana.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.test.js","sourceRoot":"","sources":["../../src/test-case/solana.test.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;;;AAEhC,+BAA6B;AAE7B,0BAAoE;AAGpE,gDAAuB;AACvB,6CAAwC;AAExC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,MAAM,OAAO,GAAG,IAAI,wBAAoB,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,WAAW,GAA6B,EAAE,CAAA;IAEhD,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,IAAA,sBAAS,GAAE,CAAA;QAEX,OAAO,CAAC,eAAe,CAAC,CAAA;QACxB,OAAO,CAAC,yBAAyB,CAAC,CAAA;QAClC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QACvD,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,OAAO,GAA8B;YACzC,YAAY,EAAE;gBACZ;oBACE,eAAe,EAAE,0CAA0C;oBAC3D,IAAI,EAAE,cAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxB,gBAAgB,EAAE,8CAA8C;iBACjE;aACF;SACF,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAClE,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAA8B;YACzC,YAAY,EAAE;gBACZ;oBACE,eAAe,EAAE,6EAA6E;oBAC9F,IAAI,EAAE,cAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxB,gBAAgB,EAAE,6CAA6C;iBAChE;aACF;SACF,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAClE,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACtE,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
File without changes
File without changes
@@ -1,5 +1,4 @@
1
- import { Networkish } from "@ethersproject/providers";
2
- import { Context, BaseProcessor, ContractWrapper, ContractNamer } from "@sentio/sdk";
1
+ import { Context, BindOptions, BaseProcessor, BaseProcessorTemplate, ContractWrapper } from "@sentio/sdk";
3
2
  import { PromiseOrValue } from "./common";
4
3
  import { Erc20 } from "./index";
5
4
  import { ApprovalEvent, ApprovalEventFilter, TransferEvent, TransferEventFilter } from "./Erc20";
@@ -11,18 +10,20 @@ declare class Erc20ContractWrapper extends ContractWrapper<Erc20> {
11
10
  totalSupply(): Promise<import("ethers").BigNumber>;
12
11
  }
13
12
  export declare type Erc20Context = Context<Erc20, Erc20ContractWrapper>;
13
+ export declare class Erc20ProcessorTemplate extends BaseProcessorTemplate<Erc20, Erc20ContractWrapper> {
14
+ bindInternal(options: BindOptions): Erc20Processor;
15
+ onApproval(handler: (event: ApprovalEvent, ctx: Erc20Context) => void, filter?: ApprovalEventFilter | ApprovalEventFilter[]): this;
16
+ onTransfer(handler: (event: TransferEvent, ctx: Erc20Context) => void, filter?: TransferEventFilter | TransferEventFilter[]): this;
17
+ }
14
18
  export declare class Erc20Processor extends BaseProcessor<Erc20, Erc20ContractWrapper> {
15
- bindInternal(address: string, network?: Networkish): Erc20ContractWrapper;
16
- onApproval(handler: (event: ApprovalEvent, ctx: Erc20Context) => void, filter?: ApprovalEventFilter | ApprovalEventFilter[]): Erc20Processor;
17
- onTransfer(handler: (event: TransferEvent, ctx: Erc20Context) => void, filter?: TransferEventFilter | TransferEventFilter[]): Erc20Processor;
18
- private static templateContract;
19
+ onApproval(handler: (event: ApprovalEvent, ctx: Erc20Context) => void, filter?: ApprovalEventFilter | ApprovalEventFilter[]): this;
20
+ onTransfer(handler: (event: TransferEvent, ctx: Erc20Context) => void, filter?: TransferEventFilter | TransferEventFilter[]): this;
19
21
  static filters: {
20
22
  "Approval(address,address,uint256)"(owner?: PromiseOrValue<string> | null | undefined, spender?: PromiseOrValue<string> | null | undefined, value?: null | undefined): ApprovalEventFilter;
21
23
  Approval(owner?: PromiseOrValue<string> | null | undefined, spender?: PromiseOrValue<string> | null | undefined, value?: null | undefined): ApprovalEventFilter;
22
24
  "Transfer(address,address,uint256)"(from?: PromiseOrValue<string> | null | undefined, to?: PromiseOrValue<string> | null | undefined, value?: null | undefined): TransferEventFilter;
23
25
  Transfer(from?: PromiseOrValue<string> | null | undefined, to?: PromiseOrValue<string> | null | undefined, value?: null | undefined): TransferEventFilter;
24
26
  };
25
- static namer: ContractNamer;
26
- static bind(address: string, network?: Networkish, name?: string): Erc20Processor;
27
+ static bind(options: BindOptions): Erc20Processor;
27
28
  }
28
29
  export {};
@@ -3,9 +3,11 @@
3
3
  /* tslint:disable */
4
4
  /* eslint-disable */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Erc20Processor = void 0;
6
+ exports.Erc20Processor = exports.Erc20ProcessorTemplate = void 0;
7
7
  const sdk_1 = require("@sentio/sdk");
8
8
  const index_1 = require("./index");
9
+ const namer = new sdk_1.ContractNamer("Erc20");
10
+ const templateContract = index_1.Erc20__factory.connect("", sdk_1.DummyProvider);
9
11
  class Erc20ContractWrapper extends sdk_1.ContractWrapper {
10
12
  constructor(contract) {
11
13
  super(contract);
@@ -25,34 +27,56 @@ class Erc20ContractWrapper extends sdk_1.ContractWrapper {
25
27
  return this.contract.totalSupply({ blockTag: this.block.number });
26
28
  }
27
29
  }
28
- class Erc20Processor extends sdk_1.BaseProcessor {
29
- bindInternal(address, network = 1) {
30
- const contract = index_1.Erc20__factory.connect(address, (0, sdk_1.getProvider)(network));
31
- return new Erc20ContractWrapper(contract);
30
+ class Erc20ProcessorTemplate extends sdk_1.BaseProcessorTemplate {
31
+ bindInternal(options) {
32
+ const contract = index_1.Erc20__factory.connect(options.address, (0, sdk_1.getProvider)(options.network));
33
+ const wrapper = new Erc20ContractWrapper(contract);
34
+ if (!options.name) {
35
+ options.name = namer.nextName();
36
+ }
37
+ return new Erc20Processor(options, wrapper);
38
+ }
39
+ onApproval(handler, filter) {
40
+ if (!filter) {
41
+ filter = Erc20Processor.filters.Approval(null, null, null);
42
+ }
43
+ super.onEvent(handler, filter);
44
+ return this;
32
45
  }
46
+ onTransfer(handler, filter) {
47
+ if (!filter) {
48
+ filter = Erc20Processor.filters.Transfer(null, null, null);
49
+ }
50
+ super.onEvent(handler, filter);
51
+ return this;
52
+ }
53
+ }
54
+ exports.Erc20ProcessorTemplate = Erc20ProcessorTemplate;
55
+ class Erc20Processor extends sdk_1.BaseProcessor {
33
56
  onApproval(handler, filter) {
34
57
  if (!filter) {
35
- filter = this.contract.filters.Approval(null, null, null);
58
+ filter = Erc20Processor.filters.Approval(null, null, null);
36
59
  }
37
60
  super.onEvent(handler, filter);
38
61
  return this;
39
62
  }
40
63
  onTransfer(handler, filter) {
41
64
  if (!filter) {
42
- filter = this.contract.filters.Transfer(null, null, null);
65
+ filter = Erc20Processor.filters.Transfer(null, null, null);
43
66
  }
44
67
  super.onEvent(handler, filter);
45
68
  return this;
46
69
  }
47
- static templateContract = index_1.Erc20__factory.connect("", sdk_1.DummyProvider);
48
- static filters = Erc20Processor.templateContract.filters;
49
- static namer = new sdk_1.ContractNamer("Erc20");
50
- static bind(address, network = 1, name = "") {
51
- if (name === "") {
52
- name = Erc20Processor.namer.nextName();
70
+ static filters = templateContract.filters;
71
+ static bind(options) {
72
+ const contract = index_1.Erc20__factory.connect(options.address, (0, sdk_1.getProvider)(options.network));
73
+ const wrapper = new Erc20ContractWrapper(contract);
74
+ if (!options.name) {
75
+ options.name = namer.nextName();
53
76
  }
54
- return new Erc20Processor(address, name, network);
77
+ return new Erc20Processor(options, wrapper);
55
78
  }
56
79
  }
57
80
  exports.Erc20Processor = Erc20Processor;
81
+ // export const Erc20Processor = new Erc20ProcessorTemplate("Erc20")
58
82
  //# sourceMappingURL=erc20_processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"erc20_processor.js","sourceRoot":"","sources":["../../../src/test-case/types/erc20_processor.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;;;AAGpB,qCAOqB;AAErB,mCAAgD;AAOhD,MAAM,oBAAqB,SAAQ,qBAAsB;IACvD,YAAY,QAAe;QACzB,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,KAA6B,EAAE,OAA+B;QACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;YAC7C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;CACF;AAID,MAAa,cAAe,SAAQ,mBAA0C;IAC5E,YAAY,CAAC,OAAe,EAAE,UAAsB,CAAC;QACnD,MAAM,QAAQ,GAAG,sBAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAA,iBAAW,EAAC,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CACR,OAA0D,EAC1D,MAAoD;QAEpD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CACR,OAA0D,EAC1D,MAAoD;QAEpD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC3D;QACD,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,gBAAgB,GAAG,sBAAc,CAAC,OAAO,CAAC,EAAE,EAAE,mBAAa,CAAC,CAAC;IAE5E,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC;IACzD,MAAM,CAAC,KAAK,GAAG,IAAI,mBAAa,CAAC,OAAO,CAAC,CAAC;IAE1C,MAAM,CAAC,IAAI,CACT,OAAe,EACf,UAAsB,CAAC,EACvB,OAAe,EAAE;QAEjB,IAAI,IAAI,KAAK,EAAE,EAAE;YACf,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACxC;QACD,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;;AA1CH,wCA2CC"}
1
+ {"version":3,"file":"erc20_processor.js","sourceRoot":"","sources":["../../../src/test-case/types/erc20_processor.ts"],"names":[],"mappings":"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"}