@sentio/sdk 1.19.5 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/lib/aptos/aptos-processor.d.ts +7 -6
  2. package/lib/aptos/aptos-processor.js +5 -10
  3. package/lib/aptos/aptos-processor.js.map +1 -1
  4. package/lib/aptos/bind-options.d.ts +5 -0
  5. package/lib/aptos/bind-options.js +7 -1
  6. package/lib/aptos/bind-options.js.map +1 -1
  7. package/lib/aptos/context.d.ts +3 -3
  8. package/lib/aptos/context.js.map +1 -1
  9. package/lib/aptos/index.d.ts +2 -2
  10. package/lib/aptos/index.js +2 -1
  11. package/lib/aptos/index.js.map +1 -1
  12. package/lib/aptos-codegen/codegen.d.ts +11 -0
  13. package/lib/aptos-codegen/codegen.js +110 -0
  14. package/lib/aptos-codegen/codegen.js.map +1 -0
  15. package/lib/cli/build.d.ts +3 -3
  16. package/lib/cli/build.js +44 -22
  17. package/lib/cli/build.js.map +1 -1
  18. package/lib/cli/cli.js +11 -11
  19. package/lib/cli/cli.js.map +1 -1
  20. package/lib/cli/config.d.ts +0 -7
  21. package/lib/cli/config.js +9 -4
  22. package/lib/cli/config.js.map +1 -1
  23. package/lib/cli/upload.js +1 -1
  24. package/lib/cli/upload.js.map +1 -1
  25. package/lib/cli/webpack.config.js +1 -0
  26. package/lib/processor-runner.js +2 -2
  27. package/lib/processor-runner.js.map +1 -1
  28. package/lib/service.js +1 -1
  29. package/lib/service.js.map +1 -1
  30. package/lib/{cli/solana-code-gen.d.ts → test-abi-code-gen.d.ts} +0 -0
  31. package/lib/test-abi-code-gen.js +19 -0
  32. package/lib/test-abi-code-gen.js.map +1 -0
  33. package/lib/tests/aptos.test.js +4 -4
  34. package/lib/tests/aptos.test.js.map +1 -1
  35. package/lib/tests/souffl3.js +16 -23
  36. package/lib/tests/souffl3.js.map +1 -1
  37. package/lib/tests/types/aptos/account-4188c8.d.ts +27 -0
  38. package/lib/tests/types/aptos/account-4188c8.js +137 -0
  39. package/lib/tests/types/aptos/account-4188c8.js.map +1 -0
  40. package/lib/tests/types/{basic_1.d.ts → solana/basic_1.d.ts} +0 -0
  41. package/lib/tests/types/{basic_1.js → solana/basic_1.js} +0 -0
  42. package/lib/tests/types/solana/basic_1.js.map +1 -0
  43. package/lib/tests/types/{basic_1_processor.d.ts → solana/basic_1_processor.d.ts} +0 -0
  44. package/lib/tests/types/{basic_1_processor.js → solana/basic_1_processor.js} +0 -0
  45. package/lib/tests/types/solana/basic_1_processor.js.map +1 -0
  46. package/package.json +6 -5
  47. package/src/aptos/aptos-processor.ts +25 -18
  48. package/src/aptos/bind-options.ts +6 -0
  49. package/src/aptos/context.ts +3 -3
  50. package/src/aptos/index.ts +2 -5
  51. package/src/aptos-codegen/codegen.ts +128 -0
  52. package/src/aptos-codegen/codgen.test.ts +11 -0
  53. package/src/aptos-codegen/tsconfig.json +9 -0
  54. package/src/cli/build.ts +49 -20
  55. package/src/cli/cli.ts +12 -12
  56. package/src/cli/config.ts +9 -9
  57. package/src/cli/upload.ts +1 -1
  58. package/src/cli/webpack.config.js +1 -0
  59. package/src/processor-runner.ts +1 -1
  60. package/src/service.ts +2 -2
  61. package/src/test-abi-code-gen.ts +14 -0
  62. package/src/tests/abis/aptos/0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807.json +389 -0
  63. package/src/tests/aptos.test.ts +4 -4
  64. package/src/tests/souffl3.ts +20 -30
  65. package/src/tests/types/aptos/account-4188c8.ts +241 -0
  66. package/src/tests/types/{basic_1.ts → solana/basic_1.ts} +0 -0
  67. package/src/tests/types/{basic_1_processor.ts → solana/basic_1_processor.ts} +0 -0
  68. package/lib/cli/solana-code-gen.js +0 -19
  69. package/lib/cli/solana-code-gen.js.map +0 -1
  70. package/lib/tests/types/basic_1.js.map +0 -1
  71. package/lib/tests/types/basic_1_processor.js.map +0 -1
  72. package/src/cli/solana-code-gen.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../src/tests/souffl3.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AAEnC,MAAM,OAAQ,SAAQ,WAAK,CAAC,kBAAkB;IAC5C,MAAM,CAAC,IAAI,CAAC,OAA+B;QACzC,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,YAAY,EAAE,OAAO;IACrB,OAAO,EAAE,oEAAoE;CAC9E,CAAC;KACC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1B,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;KACD,cAAc,CACb,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACZ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC,EACD;IACE,QAAQ,EAAE,oCAAoC;IAC9C,aAAa,EAAE,SAAS;CACzB,CACF;KACA,OAAO,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACrC,CAAC,EACD;IACE,IAAI,EAAE,yBAAyB;CAChC,CACF,CAAA","sourcesContent":["import { aptos } from '@sentio/sdk'\n\nclass Souffl3 extends aptos.AptosBaseProcessor {\n static bind(options: aptos.AptosBindOptions): Souffl3 {\n if (options && !options.name) {\n options.name = 'souffl3'\n }\n return new Souffl3(options)\n }\n}\n\nSouffl3.bind({\n startVersion: 6604913,\n address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n})\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 .onFunctionCall(\n (call, ctx) => {\n ctx.meter.Counter('call_num').add(1)\n },\n {\n function: 'SouffleChefCampaign::pull_token_v2',\n typeArguments: undefined,\n }\n )\n .onEvent(\n (event, ctx) => {\n ctx.meter.Counter('evt_num').add(1)\n },\n {\n type: '0x1::coin::DepositEvent',\n }\n )\n"]}
1
+ {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../src/tests/souffl3.ts"],"names":[],"mappings":";;AAAA,iEAAgF;AAEhF,oCAAmB,CAAC,IAAI,EAAE;KACvB,kBAAkB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAChC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAC;KACD,qBAAqB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAClC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACpC,CAAC,CAAC;KACD,OAAO,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACrC,CAAC,EACD;IACE,IAAI,EAAE,yBAAyB;CAChC,CACF;KACA,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1B,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;AAEJ,6BAAY,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACjD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAC,CAAA","sourcesContent":["import { SouffleChefCampaign, CandyMachine } from './types/aptos/account-4188c8'\n\nSouffleChefCampaign.bind()\n .onEntryPullTokenV2((call, ctx) => {\n ctx.meter.Counter('call_num').add(1)\n ctx.meter.Counter('pulled').add(parseInt(call.arguments[4]))\n })\n .onEventBurnEnjoyEvent((evt, ctx) => {\n ctx.meter.Counter('burned').add(1)\n })\n .onEvent(\n (event, ctx) => {\n ctx.meter.Counter('evt_num').add(1)\n },\n {\n type: '0x1::coin::DepositEvent',\n }\n )\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\nCandyMachine.bind().onEntryPullToken((call, ctx) => {\n ctx.meter.Counter('pulled').add(parseInt(call.arguments[3]))\n})\n"]}
@@ -0,0 +1,27 @@
1
+ import { aptos } from "@sentio/sdk";
2
+ export declare class CandyMachine extends aptos.AptosBaseProcessor {
3
+ static DEFAULT_OPTIONS: aptos.NamedAptosBindOptions;
4
+ static bind(options?: aptos.NamedAptosBindOptions): CandyMachine;
5
+ onEntryAddAcl(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): CandyMachine;
6
+ onEntryCreateCandyMachine(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): CandyMachine;
7
+ onEntryCreateCollection(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): CandyMachine;
8
+ onEntryPullToken(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): CandyMachine;
9
+ onEntryUpdateTokenProperty(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): CandyMachine;
10
+ }
11
+ export declare class SouffleChefCampaign extends aptos.AptosBaseProcessor {
12
+ static DEFAULT_OPTIONS: aptos.NamedAptosBindOptions;
13
+ static bind(options?: aptos.NamedAptosBindOptions): SouffleChefCampaign;
14
+ onEntryAddAcl(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
15
+ onEntryAddBurnTokenRule(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
16
+ onEntryBatchAddAcl(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
17
+ onEntryBurnAndEnjoy(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
18
+ onEntryClaim(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
19
+ onEntryCreateCandyMachine(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
20
+ onEntryCreateCollection(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
21
+ onEntryPullToken(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
22
+ onEntryPullTokenV2(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
23
+ onEntryRemoveBurnTokenRule(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
24
+ onEntryUpdateTokenProperty(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
25
+ onEventBurnEnjoyEvent(func: (event: aptos.Event, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
26
+ onEventPullTokenEvent(func: (event: aptos.Event, ctx: aptos.AptosContext) => void): SouffleChefCampaign;
27
+ }
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /* Autogenerated file. Do not edit manually. */
3
+ /* tslint:disable */
4
+ /* eslint-disable */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SouffleChefCampaign = exports.CandyMachine = void 0;
7
+ /* Generated modules for account 0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807 */
8
+ const sdk_1 = require("@sentio/sdk");
9
+ class CandyMachine extends sdk_1.aptos.AptosBaseProcessor {
10
+ static DEFAULT_OPTIONS = {
11
+ address: "0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807",
12
+ network: sdk_1.aptos.AptosNetwork.TEST_NET,
13
+ };
14
+ static bind(options = CandyMachine.DEFAULT_OPTIONS) {
15
+ return new CandyMachine({ ...options, name: "CandyMachine" });
16
+ }
17
+ onEntryAddAcl(func) {
18
+ this.onEntryFunctionCall(func, {
19
+ function: "CandyMachine::add_acl",
20
+ });
21
+ return this;
22
+ }
23
+ onEntryCreateCandyMachine(func) {
24
+ this.onEntryFunctionCall(func, {
25
+ function: "CandyMachine::create_candy_machine",
26
+ });
27
+ return this;
28
+ }
29
+ onEntryCreateCollection(func) {
30
+ this.onEntryFunctionCall(func, {
31
+ function: "CandyMachine::create_collection",
32
+ });
33
+ return this;
34
+ }
35
+ onEntryPullToken(func) {
36
+ this.onEntryFunctionCall(func, {
37
+ function: "CandyMachine::pull_token",
38
+ });
39
+ return this;
40
+ }
41
+ onEntryUpdateTokenProperty(func) {
42
+ this.onEntryFunctionCall(func, {
43
+ function: "CandyMachine::update_token_property",
44
+ });
45
+ return this;
46
+ }
47
+ }
48
+ exports.CandyMachine = CandyMachine;
49
+ class SouffleChefCampaign extends sdk_1.aptos.AptosBaseProcessor {
50
+ static DEFAULT_OPTIONS = {
51
+ address: "0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807",
52
+ network: sdk_1.aptos.AptosNetwork.TEST_NET,
53
+ };
54
+ static bind(options = SouffleChefCampaign.DEFAULT_OPTIONS) {
55
+ return new SouffleChefCampaign({ ...options, name: "SouffleChefCampaign" });
56
+ }
57
+ onEntryAddAcl(func) {
58
+ this.onEntryFunctionCall(func, {
59
+ function: "SouffleChefCampaign::add_acl",
60
+ });
61
+ return this;
62
+ }
63
+ onEntryAddBurnTokenRule(func) {
64
+ this.onEntryFunctionCall(func, {
65
+ function: "SouffleChefCampaign::add_burn_token_rule",
66
+ });
67
+ return this;
68
+ }
69
+ onEntryBatchAddAcl(func) {
70
+ this.onEntryFunctionCall(func, {
71
+ function: "SouffleChefCampaign::batch_add_acl",
72
+ });
73
+ return this;
74
+ }
75
+ onEntryBurnAndEnjoy(func) {
76
+ this.onEntryFunctionCall(func, {
77
+ function: "SouffleChefCampaign::burn_and_enjoy",
78
+ });
79
+ return this;
80
+ }
81
+ onEntryClaim(func) {
82
+ this.onEntryFunctionCall(func, {
83
+ function: "SouffleChefCampaign::claim",
84
+ });
85
+ return this;
86
+ }
87
+ onEntryCreateCandyMachine(func) {
88
+ this.onEntryFunctionCall(func, {
89
+ function: "SouffleChefCampaign::create_candy_machine",
90
+ });
91
+ return this;
92
+ }
93
+ onEntryCreateCollection(func) {
94
+ this.onEntryFunctionCall(func, {
95
+ function: "SouffleChefCampaign::create_collection",
96
+ });
97
+ return this;
98
+ }
99
+ onEntryPullToken(func) {
100
+ this.onEntryFunctionCall(func, {
101
+ function: "SouffleChefCampaign::pull_token",
102
+ });
103
+ return this;
104
+ }
105
+ onEntryPullTokenV2(func) {
106
+ this.onEntryFunctionCall(func, {
107
+ function: "SouffleChefCampaign::pull_token_v2",
108
+ });
109
+ return this;
110
+ }
111
+ onEntryRemoveBurnTokenRule(func) {
112
+ this.onEntryFunctionCall(func, {
113
+ function: "SouffleChefCampaign::remove_burn_token_rule",
114
+ });
115
+ return this;
116
+ }
117
+ onEntryUpdateTokenProperty(func) {
118
+ this.onEntryFunctionCall(func, {
119
+ function: "SouffleChefCampaign::update_token_property",
120
+ });
121
+ return this;
122
+ }
123
+ onEventBurnEnjoyEvent(func) {
124
+ this.onEvent(func, {
125
+ type: "0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::BurnEnjoyEvent",
126
+ });
127
+ return this;
128
+ }
129
+ onEventPullTokenEvent(func) {
130
+ this.onEvent(func, {
131
+ type: "0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::PullTokenEvent",
132
+ });
133
+ return this;
134
+ }
135
+ }
136
+ exports.SouffleChefCampaign = SouffleChefCampaign;
137
+ //# sourceMappingURL=account-4188c8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-4188c8.js","sourceRoot":"","sources":["../../../../src/tests/types/aptos/account-4188c8.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;;;AAEpB,sGAAsG;AAEtG,qCAAoC;AAEpC,MAAa,YAAa,SAAQ,WAAK,CAAC,kBAAkB;IACxD,MAAM,CAAC,eAAe,GAAgC;QACpD,OAAO,EACL,oEAAoE;QACtE,OAAO,EAAE,WAAK,CAAC,YAAY,CAAC,QAAQ;KACrC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,eAAe;QAChD,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,aAAa,CACX,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,uBAAuB;SAClC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB,CACvB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,oCAAoC;SAC/C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CACrB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,iCAAiC;SAC5C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CACd,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,0BAA0B;SACrC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B,CACxB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,qCAAqC;SAChD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;;AApEH,oCAqEC;AAED,MAAa,mBAAoB,SAAQ,WAAK,CAAC,kBAAkB;IAC/D,MAAM,CAAC,eAAe,GAAgC;QACpD,OAAO,EACL,oEAAoE;QACtE,OAAO,EAAE,WAAK,CAAC,YAAY,CAAC,QAAQ;KACrC,CAAC;IACF,MAAM,CAAC,IAAI,CACT,OAAO,GAAG,mBAAmB,CAAC,eAAe;QAE7C,OAAO,IAAI,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,aAAa,CACX,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,8BAA8B;SACzC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CACrB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,0CAA0C;SACrD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAChB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,oCAAoC;SAC/C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CACjB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,qCAAqC;SAChD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CACV,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,4BAA4B;SACvC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB,CACvB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,2CAA2C;SACtD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CACrB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,wCAAwC;SACnD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CACd,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,iCAAiC;SAC5C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAChB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,oCAAoC;SAC/C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B,CACxB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,6CAA6C;SACxD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B,CACxB,IAGS;QAET,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE,4CAA4C;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB,CACnB,IAA2D;QAE3D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,IAAI,EAAE,yGAAyG;SAChH,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB,CACnB,IAA2D;QAE3D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,IAAI,EAAE,yGAAyG;SAChH,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;;AAhKH,kDAiKC","sourcesContent":["/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\n/* Generated modules for account 0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807 */\n\nimport { aptos } from \"@sentio/sdk\";\n\nexport class CandyMachine extends aptos.AptosBaseProcessor {\n static DEFAULT_OPTIONS: aptos.NamedAptosBindOptions = {\n address:\n \"0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807\",\n network: aptos.AptosNetwork.TEST_NET,\n };\n static bind(options = CandyMachine.DEFAULT_OPTIONS): CandyMachine {\n return new CandyMachine({ ...options, name: \"CandyMachine\" });\n }\n\n onEntryAddAcl(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): CandyMachine {\n this.onEntryFunctionCall(func, {\n function: \"CandyMachine::add_acl\",\n });\n return this;\n }\n\n onEntryCreateCandyMachine(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): CandyMachine {\n this.onEntryFunctionCall(func, {\n function: \"CandyMachine::create_candy_machine\",\n });\n return this;\n }\n\n onEntryCreateCollection(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): CandyMachine {\n this.onEntryFunctionCall(func, {\n function: \"CandyMachine::create_collection\",\n });\n return this;\n }\n\n onEntryPullToken(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): CandyMachine {\n this.onEntryFunctionCall(func, {\n function: \"CandyMachine::pull_token\",\n });\n return this;\n }\n\n onEntryUpdateTokenProperty(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): CandyMachine {\n this.onEntryFunctionCall(func, {\n function: \"CandyMachine::update_token_property\",\n });\n return this;\n }\n}\n\nexport class SouffleChefCampaign extends aptos.AptosBaseProcessor {\n static DEFAULT_OPTIONS: aptos.NamedAptosBindOptions = {\n address:\n \"0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807\",\n network: aptos.AptosNetwork.TEST_NET,\n };\n static bind(\n options = SouffleChefCampaign.DEFAULT_OPTIONS\n ): SouffleChefCampaign {\n return new SouffleChefCampaign({ ...options, name: \"SouffleChefCampaign\" });\n }\n\n onEntryAddAcl(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::add_acl\",\n });\n return this;\n }\n\n onEntryAddBurnTokenRule(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::add_burn_token_rule\",\n });\n return this;\n }\n\n onEntryBatchAddAcl(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::batch_add_acl\",\n });\n return this;\n }\n\n onEntryBurnAndEnjoy(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::burn_and_enjoy\",\n });\n return this;\n }\n\n onEntryClaim(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::claim\",\n });\n return this;\n }\n\n onEntryCreateCandyMachine(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::create_candy_machine\",\n });\n return this;\n }\n\n onEntryCreateCollection(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::create_collection\",\n });\n return this;\n }\n\n onEntryPullToken(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::pull_token\",\n });\n return this;\n }\n\n onEntryPullTokenV2(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::pull_token_v2\",\n });\n return this;\n }\n\n onEntryRemoveBurnTokenRule(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::remove_burn_token_rule\",\n });\n return this;\n }\n\n onEntryUpdateTokenProperty(\n func: (\n call: aptos.TransactionPayload_EntryFunctionPayload,\n ctx: aptos.AptosContext\n ) => void\n ): SouffleChefCampaign {\n this.onEntryFunctionCall(func, {\n function: \"SouffleChefCampaign::update_token_property\",\n });\n return this;\n }\n\n onEventBurnEnjoyEvent(\n func: (event: aptos.Event, ctx: aptos.AptosContext) => void\n ): SouffleChefCampaign {\n this.onEvent(func, {\n type: \"0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::BurnEnjoyEvent\",\n });\n return this;\n }\n\n onEventPullTokenEvent(\n func: (event: aptos.Event, ctx: aptos.AptosContext) => void\n ): SouffleChefCampaign {\n this.onEvent(func, {\n type: \"0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::PullTokenEvent\",\n });\n return this;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic_1.js","sourceRoot":"","sources":["../../../../src/tests/types/solana/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"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic_1_processor.js","sourceRoot":"","sources":["../../../../src/tests/types/solana/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 "]}
package/package.json CHANGED
@@ -1,21 +1,20 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "1.19.5",
4
+ "version": "1.20.0",
5
5
  "scripts": {
6
6
  "compile_target": "yarn tsc -b src/target-ethers-sentio/tsconfig.json",
7
7
  "compile": "tsc -p . && cp src/cli/webpack.config.js lib/cli && cp src/utils/*.csv lib/utils",
8
8
  "build": "yarn gen && yarn compile",
9
9
  "start_ts": "ts-node --files src/processor-runner.ts ../examples/x2y2/src/processor.ts",
10
- "start": "ts-node --files src/processor-runner.ts ../examples/x2y2/dist/lib.js",
11
- "start_js": "node lib/processor.js ../examples/x2y2/dist/lib.js",
10
+ "start": "ts-node --files src/processor-runner.ts ../examples/aptos/dist/lib.js",
11
+ "start_js": "node lib/processor-runner.js ../examples/aptos/dist/lib.js",
12
12
  "ts-start": "ts-node --files src/processor-runner.ts ./src/anyswap/src/processor.ts",
13
13
  "cli": "ts-node src/cli/cli.ts",
14
14
  "test": "jest",
15
15
  "gen": "yarn compile_target && yarn gen_bultin_evm && yarn gen_test_abi",
16
- "gen_test_abi": "yarn gen_solana_abi",
16
+ "gen_test_abi": "ts-node src/test-abi-code-gen.ts src/tests/abis src/tests/types",
17
17
  "gen_bultin_evm": "typechain --target lib/target-ethers-sentio --out-dir src/builtin/internal 'src/abis/*.json'",
18
- "gen_solana_abi": "ts-node src/cli/solana-code-gen.ts src/tests types",
19
18
  "postbuild": "echo || clear-package-json package.json -o ./lib/package.json && cp release.config.js ./lib",
20
19
  "docs": "typedoc --options typedoc.json"
21
20
  },
@@ -59,7 +58,9 @@
59
58
  "chai": "^4.3.6",
60
59
  "clean-publish": "^4.0.1",
61
60
  "conventional-changelog-conventionalcommits": "^5.0.0",
61
+ "jest": "^29.0.3",
62
62
  "semantic-release": "^19.0.5",
63
+ "ts-jest": "^29.0.3",
63
64
  "ts-node": "^10.9.1",
64
65
  "tsconfig-paths": "^4.0.0",
65
66
  "typedoc": "^0.23.15",
@@ -1,5 +1,11 @@
1
1
  import { ProcessResult } from '../gen'
2
- import { AptosBindOptions, AptosContext, AptosNetwork, FunctionPayload, UserTransaction } from '.'
2
+ import {
3
+ AptosBindOptions,
4
+ AptosContext,
5
+ AptosNetwork,
6
+ Transaction_UserTransaction,
7
+ TransactionPayload_EntryFunctionPayload,
8
+ } from '.'
3
9
  import type { Event as OldEvent } from 'aptos/src/generated'
4
10
 
5
11
  import Long from 'long'
@@ -20,7 +26,7 @@ export interface EventFilter {
20
26
 
21
27
  export interface CallFilter {
22
28
  function: string
23
- typeArguments: string[] | undefined
29
+ typeArguments?: string[]
24
30
  }
25
31
 
26
32
  class EventHandler {
@@ -30,7 +36,7 @@ class EventHandler {
30
36
 
31
37
  class CallHandler {
32
38
  filters: CallFilter[]
33
- handler: (call: UserTransaction) => Promise<ProcessResult>
39
+ handler: (call: Transaction_UserTransaction) => Promise<ProcessResult>
34
40
  }
35
41
 
36
42
  export class AptosBaseProcessor {
@@ -45,7 +51,13 @@ export class AptosBaseProcessor {
45
51
  global.PROCESSOR_STATE.aptosProcessors.push(this)
46
52
  }
47
53
 
48
- public onTransaction(handler: (transaction: UserTransaction, ctx: AptosContext) => void) {
54
+ static bind(options: AptosBindOptions): AptosBaseProcessor {
55
+ return new AptosBaseProcessor(options)
56
+ }
57
+
58
+ public onTransaction(
59
+ handler: (transaction: Transaction_UserTransaction, ctx: AptosContext) => void
60
+ ): AptosBaseProcessor {
49
61
  const address = this.config.address
50
62
  this.callHandlers.push({
51
63
  handler: async function (tx) {
@@ -64,7 +76,10 @@ export class AptosBaseProcessor {
64
76
  return this
65
77
  }
66
78
 
67
- public onEvent(handler: (event: Event, ctx: AptosContext) => void, filter: EventFilter | EventFilter[]) {
79
+ public onEvent(
80
+ handler: (event: Event, ctx: AptosContext) => void,
81
+ filter: EventFilter | EventFilter[]
82
+ ): AptosBaseProcessor {
68
83
  let _filters: EventFilter[] = []
69
84
 
70
85
  if (Array.isArray(filter)) {
@@ -89,12 +104,13 @@ export class AptosBaseProcessor {
89
104
  },
90
105
  filters: _filters,
91
106
  })
107
+ return this
92
108
  }
93
109
 
94
- public onFunctionCall(
95
- handler: (call: FunctionPayload, ctx: AptosContext) => void,
110
+ public onEntryFunctionCall(
111
+ handler: (call: TransactionPayload_EntryFunctionPayload, ctx: AptosContext) => void,
96
112
  filter: CallFilter | CallFilter[]
97
- ) {
113
+ ): AptosBaseProcessor {
98
114
  let _filters: CallFilter[] = []
99
115
 
100
116
  if (Array.isArray(filter)) {
@@ -109,7 +125,7 @@ export class AptosBaseProcessor {
109
125
  handler: async function (tx) {
110
126
  const ctx = new AptosContext(address, Long.fromString(tx.version), tx)
111
127
  if (tx) {
112
- const payload = tx.payload as FunctionPayload
128
+ const payload = tx.payload as TransactionPayload_EntryFunctionPayload
113
129
  handler(payload, ctx)
114
130
  }
115
131
  return {
@@ -134,16 +150,7 @@ export class AptosBaseProcessor {
134
150
  address: options.address,
135
151
  network: options.network || AptosNetwork.TEST_NET,
136
152
  }
137
- return this
138
153
  }
139
- //
140
- // public endBlock(endBlock: Long | number) {
141
- // if (typeof endBlock === 'number') {
142
- // endBlock = Long.fromNumber(endBlock)
143
- // }
144
- // this.config.endSeqNumber = endBlock
145
- // return this
146
- // }
147
154
 
148
155
  getChainId(): string {
149
156
  switch (this.config.network) {
@@ -13,3 +13,9 @@ export class AptosBindOptions {
13
13
  startVersion?: Long | number
14
14
  // endBlock?: Long | number
15
15
  }
16
+
17
+ export class NamedAptosBindOptions {
18
+ address: string
19
+ network?: AptosNetwork = AptosNetwork.TEST_NET
20
+ startVersion?: Long | number
21
+ }
@@ -4,14 +4,14 @@ import { Labels } from '../core/metadata'
4
4
  import { APTOS_TESTNET_ID } from '../utils/chain'
5
5
  import { normalizeLabels } from '../core/meter'
6
6
  import { BaseContext } from '../core/context'
7
- import { UserTransaction } from './'
7
+ import { Transaction_UserTransaction } from './'
8
8
 
9
9
  export class AptosContext extends BaseContext {
10
10
  address: string
11
11
  blockNumber: Long
12
- transaction: UserTransaction
12
+ transaction: Transaction_UserTransaction
13
13
 
14
- constructor(address: string, slot: Long, transaction?: UserTransaction) {
14
+ constructor(address: string, slot: Long, transaction?: Transaction_UserTransaction) {
15
15
  super()
16
16
  this.address = address
17
17
  this.blockNumber = slot
@@ -1,8 +1,5 @@
1
- export type {
2
- Transaction_UserTransaction as UserTransaction,
3
- TransactionPayload_EntryFunctionPayload as FunctionPayload,
4
- } from 'aptos/src/generated'
1
+ export type { Transaction_UserTransaction, TransactionPayload_EntryFunctionPayload } from 'aptos/src/generated'
5
2
  export type { Event, CallFilter, EventFilter } from './aptos-processor'
6
3
  export { AptosBaseProcessor } from './aptos-processor'
7
4
  export { AptosContext } from './context'
8
- export { AptosBindOptions, AptosNetwork } from './bind-options'
5
+ export { AptosBindOptions, NamedAptosBindOptions, AptosNetwork } from './bind-options'
@@ -0,0 +1,128 @@
1
+ import { MoveModuleBytecode } from 'aptos/src/generated'
2
+ import fs from 'fs'
3
+ import path from 'path'
4
+ import { MoveFunction, MoveModule } from 'aptos/src/generated'
5
+ import { MoveStruct } from 'aptos/src/generated/models/MoveStruct'
6
+ import prettier from 'prettier'
7
+
8
+ interface Config {
9
+ outputDir: string
10
+ }
11
+
12
+ export class AptosCodegen {
13
+ modules: MoveModuleBytecode[]
14
+ config: Config
15
+
16
+ constructor(srcFile: string, config: Config) {
17
+ const json = fs.readFileSync(srcFile, 'utf-8')
18
+ this.modules = JSON.parse(json)
19
+ this.config = config
20
+ }
21
+
22
+ generate() {
23
+ if (!this.modules) {
24
+ return
25
+ }
26
+ let address: string | undefined
27
+ for (const module of this.modules) {
28
+ if (module.abi && module.abi.address) {
29
+ address = module.abi.address
30
+ }
31
+ }
32
+ if (!address) {
33
+ return
34
+ }
35
+
36
+ const imports = `import { aptos } from "@sentio/sdk"`
37
+
38
+ let source = `
39
+ /* Autogenerated file. Do not edit manually. */
40
+ /* tslint:disable */
41
+ /* eslint-disable */
42
+
43
+ /* Generated modules for account ${address} */
44
+
45
+ ${imports}
46
+
47
+ ${this.modules.map(generateModule).join('\n')}
48
+ ` // source
49
+
50
+ source = prettier.format(source, { parser: 'typescript' })
51
+ fs.writeFileSync(path.join(this.config.outputDir, 'account-' + address.slice(2, 8) + '.ts'), source)
52
+ }
53
+ }
54
+
55
+ function generateModule(moduleByteCode: MoveModuleBytecode) {
56
+ if (!moduleByteCode.abi) {
57
+ return ''
58
+ }
59
+ const module = moduleByteCode.abi
60
+
61
+ const functions = module.exposed_functions.map((f) => generateOnEntryFunctions(module, f)).filter((s) => s !== '')
62
+ const events = module.structs.map((e) => generateOnEvents(module, e)).filter((s) => s !== '')
63
+
64
+ return `
65
+ export class ${module.name} extends aptos.AptosBaseProcessor {
66
+ static DEFAULT_OPTIONS: aptos.NamedAptosBindOptions = {
67
+ address: "${module.address}",
68
+ network: aptos.AptosNetwork.TEST_NET
69
+ }
70
+ static bind(options = ${module.name}.DEFAULT_OPTIONS): ${module.name} {
71
+ return new ${module.name}({ ...options, name: "${module.name}" })
72
+ }
73
+
74
+ ${functions.join('\n')}
75
+
76
+ ${events.join('\n')}
77
+ }`
78
+ }
79
+
80
+ function generateOnEntryFunctions(module: MoveModule, func: MoveFunction) {
81
+ if (!func.is_entry) {
82
+ return ''
83
+ }
84
+
85
+ const camelFuncName = capitalizeFirstChar(camelize(func.name))
86
+ const source = `
87
+ onEntry${camelFuncName}(func: (call: aptos.TransactionPayload_EntryFunctionPayload, ctx: aptos.AptosContext) => void): ${module.name} {
88
+ this.onEntryFunctionCall(func, {
89
+ function: '${module.name}::${func.name}'
90
+ })
91
+ return this
92
+ }`
93
+
94
+ return source
95
+ }
96
+
97
+ function generateOnEvents(module: MoveModule, struct: MoveStruct): string {
98
+ // for struct that has drop + store
99
+ if (!struct.abilities.includes('drop') || !struct.abilities.includes('store') || !struct.name.endsWith('Event')) {
100
+ return ''
101
+ }
102
+ const source = `
103
+ onEvent${struct.name}(func: (event: aptos.Event, ctx: aptos.AptosContext) => void): ${module.name} {
104
+ this.onEvent(func, {
105
+ type: '${module.address}::${module.name}::${struct.name}'
106
+ })
107
+ return this
108
+ }
109
+ `
110
+ return source
111
+ }
112
+
113
+ function camelize(input: string): string {
114
+ return input
115
+ .split('_')
116
+ .reduce(
117
+ (res, word, i) =>
118
+ i === 0 ? word.toLowerCase() : `${res}${word.charAt(0).toUpperCase()}${word.substr(1).toLowerCase()}`,
119
+ ''
120
+ )
121
+ }
122
+
123
+ function capitalizeFirstChar(input: string): string {
124
+ if (!input) {
125
+ return input
126
+ }
127
+ return input[0].toUpperCase() + (input.length > 1 ? input.substring(1) : '')
128
+ }
@@ -0,0 +1,11 @@
1
+ import path from 'path'
2
+ import { AptosCodegen } from './codegen'
3
+
4
+ describe('Test Aptos Example', () => {
5
+ test.skip('code gen for aptos', async () => {
6
+ const filename = path.join(__dirname, '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807')
7
+
8
+ const codegen = new AptosCodegen(filename, { outputDir: path.join(__dirname, '..') })
9
+ codegen.generate()
10
+ })
11
+ })
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "..",
5
+ "outDir": "../../lib"
6
+ },
7
+ "exclude": ["lib"],
8
+ "include": ["."]
9
+ }