@avaprotocol/sdk-js 1.4.0 → 1.6.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 (91) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/auth.d.ts +2 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +10 -0
  5. package/dist/config.d.ts +9 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +19 -0
  8. package/dist/grpc_codegen/custom_types.d.ts +45 -0
  9. package/dist/grpc_codegen/custom_types.d.ts.map +1 -0
  10. package/dist/grpc_codegen/custom_types.js +179 -0
  11. package/dist/index.d.ts +148 -2798
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +8901 -5466
  14. package/dist/index.mjs +8897 -5459
  15. package/dist/models/edge.d.ts +12 -0
  16. package/dist/models/edge.d.ts.map +1 -0
  17. package/dist/models/edge.js +19 -0
  18. package/dist/models/execution.d.ts +32 -0
  19. package/dist/models/execution.d.ts.map +1 -0
  20. package/dist/models/execution.js +65 -0
  21. package/dist/models/node/branch.d.ts +14 -0
  22. package/dist/models/node/branch.d.ts.map +1 -0
  23. package/dist/models/node/branch.js +39 -0
  24. package/dist/models/node/contractRead.d.ts +14 -0
  25. package/dist/models/node/contractRead.d.ts.map +1 -0
  26. package/dist/models/node/contractRead.js +33 -0
  27. package/dist/models/node/contractWrite.d.ts +14 -0
  28. package/dist/models/node/contractWrite.d.ts.map +1 -0
  29. package/dist/models/node/contractWrite.js +31 -0
  30. package/dist/models/node/customCode.d.ts +18 -0
  31. package/dist/models/node/customCode.d.ts.map +1 -0
  32. package/dist/models/node/customCode.js +36 -0
  33. package/dist/models/node/ethTransfer.d.ts +14 -0
  34. package/dist/models/node/ethTransfer.d.ts.map +1 -0
  35. package/dist/models/node/ethTransfer.js +30 -0
  36. package/dist/models/node/factory.d.ts +21 -0
  37. package/dist/models/node/factory.d.ts.map +1 -0
  38. package/dist/models/node/factory.js +70 -0
  39. package/dist/models/node/filter.d.ts +14 -0
  40. package/dist/models/node/filter.d.ts.map +1 -0
  41. package/dist/models/node/filter.js +32 -0
  42. package/dist/models/node/graphqlQuery.d.ts +14 -0
  43. package/dist/models/node/graphqlQuery.d.ts.map +1 -0
  44. package/dist/models/node/graphqlQuery.js +43 -0
  45. package/dist/models/node/interface.d.ts +18 -0
  46. package/dist/models/node/interface.d.ts.map +1 -0
  47. package/dist/models/node/interface.js +37 -0
  48. package/dist/models/node/loop.d.ts +13 -0
  49. package/dist/models/node/loop.d.ts.map +1 -0
  50. package/dist/models/node/loop.js +145 -0
  51. package/dist/models/node/restApi.d.ts +15 -0
  52. package/dist/models/node/restApi.d.ts.map +1 -0
  53. package/dist/models/node/restApi.js +40 -0
  54. package/dist/models/secret.d.ts +16 -0
  55. package/dist/models/secret.d.ts.map +1 -0
  56. package/dist/models/secret.js +28 -0
  57. package/dist/models/step.d.ts +19 -0
  58. package/dist/models/step.d.ts.map +1 -0
  59. package/dist/models/step.js +78 -0
  60. package/dist/models/trigger/block.d.ts +20 -0
  61. package/dist/models/trigger/block.d.ts.map +1 -0
  62. package/dist/models/trigger/block.js +49 -0
  63. package/dist/models/trigger/cron.d.ts +20 -0
  64. package/dist/models/trigger/cron.d.ts.map +1 -0
  65. package/dist/models/trigger/cron.js +49 -0
  66. package/dist/models/trigger/event.d.ts +20 -0
  67. package/dist/models/trigger/event.d.ts.map +1 -0
  68. package/dist/models/trigger/event.js +74 -0
  69. package/dist/models/trigger/factory.d.ts +25 -0
  70. package/dist/models/trigger/factory.d.ts.map +1 -0
  71. package/dist/models/trigger/factory.js +54 -0
  72. package/dist/models/trigger/fixedTime.d.ts +20 -0
  73. package/dist/models/trigger/fixedTime.d.ts.map +1 -0
  74. package/dist/models/trigger/fixedTime.js +49 -0
  75. package/dist/models/trigger/interface.d.ts +25 -0
  76. package/dist/models/trigger/interface.d.ts.map +1 -0
  77. package/dist/models/trigger/interface.js +20 -0
  78. package/dist/models/trigger/manual.d.ts +13 -0
  79. package/dist/models/trigger/manual.d.ts.map +1 -0
  80. package/dist/models/trigger/manual.js +27 -0
  81. package/dist/models/trigger/reason.d.ts +33 -0
  82. package/dist/models/trigger/reason.d.ts.map +1 -0
  83. package/dist/models/trigger/reason.js +96 -0
  84. package/dist/models/workflow.d.ts +54 -0
  85. package/dist/models/workflow.d.ts.map +1 -0
  86. package/dist/models/workflow.js +117 -0
  87. package/dist/utils.d.ts +3 -0
  88. package/dist/utils.d.ts.map +1 -0
  89. package/dist/utils.js +37 -0
  90. package/package.json +6 -4
  91. package/dist/index.d.mts +0 -2937
@@ -0,0 +1,74 @@
1
+ import * as _ from "lodash";
2
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
3
+ import Trigger from "./interface";
4
+ import { TriggerType } from "@avaprotocol/types";
5
+ class EventTrigger extends Trigger {
6
+ constructor(props) {
7
+ super({ ...props, type: TriggerType.Event, data: props.data });
8
+ }
9
+ toRequest() {
10
+ const request = new avs_pb.TaskTrigger();
11
+ request.setName(this.name);
12
+ request.setId(this.id);
13
+ if (!this.data) {
14
+ throw new Error(`Trigger data is missing for ${this.type}`);
15
+ }
16
+ const trigger = new avs_pb.EventTrigger();
17
+ const dataConfig = this.data;
18
+ const config = new avs_pb.EventTrigger.Config();
19
+ const expression = dataConfig.expression;
20
+ const matcherList = dataConfig.matcherList;
21
+ if (_.isUndefined(expression) || _.isNull(expression)) {
22
+ throw new Error(`Expression is undefined for ${this.type}`);
23
+ }
24
+ config.setExpression(expression);
25
+ if (matcherList && matcherList.length > 0) {
26
+ const matchers = matcherList.map((element) => {
27
+ const m = new avs_pb.EventTrigger.Matcher();
28
+ m.setType(element.type);
29
+ m.setValueList(element.valueList || []);
30
+ return m;
31
+ });
32
+ config.setMatcherList(matchers);
33
+ }
34
+ trigger.setConfig(config);
35
+ request.setEvent(trigger);
36
+ return request;
37
+ }
38
+ static fromResponse(raw) {
39
+ // Convert the raw object to TriggerProps, which should keep name and id
40
+ const obj = raw.toObject();
41
+ let data = { expression: "", matcherList: [] };
42
+ if (raw.getEvent() && raw.getEvent().hasConfig()) {
43
+ const config = raw.getEvent().getConfig();
44
+ if (config) {
45
+ data = {
46
+ expression: config.getExpression(),
47
+ matcherList: []
48
+ };
49
+ if (config.getMatcherList && config.getMatcherList().length > 0) {
50
+ data.matcherList = config.getMatcherList().map((item) => {
51
+ return {
52
+ type: item.getType(),
53
+ valueList: item.getValueList() || [],
54
+ };
55
+ });
56
+ }
57
+ }
58
+ }
59
+ return new EventTrigger({
60
+ ...obj,
61
+ type: TriggerType.Event,
62
+ data: data,
63
+ });
64
+ }
65
+ /**
66
+ * Convert raw data from runNodeWithInputs response to EventOutput format
67
+ * @param rawData - The raw data from the gRPC response
68
+ * @returns {EventTriggerOutput | undefined} - The converted data
69
+ */
70
+ getOutput() {
71
+ return this.output;
72
+ }
73
+ }
74
+ export default EventTrigger;
@@ -0,0 +1,25 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import BlockTrigger, { BlockTriggerProps } from "./block";
3
+ import CronTrigger, { CronTriggerProps } from "./cron";
4
+ import EventTrigger, { EventTriggerProps } from "./event";
5
+ import FixedTimeTrigger, { FixedTimeTriggerProps } from "./fixedTime";
6
+ import ManualTrigger, { ManualTriggerProps } from "./manual";
7
+ import Trigger, { TriggerProps } from "./interface";
8
+ declare class TriggerFactory {
9
+ /**
10
+ * Static factory method to create Trigger instances
11
+ * @param props
12
+ * @returns
13
+ */
14
+ static create(props: TriggerProps): Trigger;
15
+ /**
16
+ * Create an instance of Trigger from AVS getWorkflow or getWorkflows response
17
+ * @param trigger
18
+ * @returns
19
+ */
20
+ static fromResponse(raw: avs_pb.TaskTrigger): Trigger;
21
+ }
22
+ export default TriggerFactory;
23
+ export { Trigger, BlockTrigger, CronTrigger, EventTrigger, FixedTimeTrigger, ManualTrigger, };
24
+ export type { TriggerProps, BlockTriggerProps, CronTriggerProps, EventTriggerProps, FixedTimeTriggerProps, ManualTriggerProps, };
25
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/models/trigger/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,YAAY,EAAE,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,WAAW,EAAE,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,YAAY,EAAE,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,gBAAgB,EAAE,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,aAAa,EAAE,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpD,cAAM,cAAc;IAClB;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAkB3C;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,OAAO;CAgBtD;AAED,eAAe,cAAc,CAAC;AAG9B,OAAO,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,aAAa,GACd,CAAC;AAGF,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import BlockTrigger from "./block";
2
+ import CronTrigger from "./cron";
3
+ import EventTrigger from "./event";
4
+ import FixedTimeTrigger from "./fixedTime";
5
+ import ManualTrigger from "./manual";
6
+ import Trigger from "./interface";
7
+ import { TriggerType } from "@avaprotocol/types";
8
+ class TriggerFactory {
9
+ /**
10
+ * Static factory method to create Trigger instances
11
+ * @param props
12
+ * @returns
13
+ */
14
+ static create(props) {
15
+ switch (props.type) {
16
+ case TriggerType.Block:
17
+ return new BlockTrigger(props);
18
+ case TriggerType.Cron:
19
+ return new CronTrigger(props);
20
+ case TriggerType.Event:
21
+ return new EventTrigger(props);
22
+ case TriggerType.FixedTime:
23
+ return new FixedTimeTrigger(props);
24
+ case TriggerType.Manual:
25
+ return new ManualTrigger(props);
26
+ }
27
+ // Add more conditions for other subclasses
28
+ throw new Error("Unsupported trigger type");
29
+ }
30
+ /**
31
+ * Create an instance of Trigger from AVS getWorkflow or getWorkflows response
32
+ * @param trigger
33
+ * @returns
34
+ */
35
+ static fromResponse(raw) {
36
+ switch (true) {
37
+ case !!raw.getFixedTime():
38
+ return FixedTimeTrigger.fromResponse(raw);
39
+ case !!raw.getCron():
40
+ return CronTrigger.fromResponse(raw);
41
+ case !!raw.getBlock():
42
+ return BlockTrigger.fromResponse(raw);
43
+ case !!raw.getEvent():
44
+ return EventTrigger.fromResponse(raw);
45
+ case !!raw.getManual():
46
+ return ManualTrigger.fromResponse(raw);
47
+ default:
48
+ throw new Error("Unknown trigger type");
49
+ }
50
+ }
51
+ }
52
+ export default TriggerFactory;
53
+ // Trigger object definitions
54
+ export { Trigger, BlockTrigger, CronTrigger, EventTrigger, FixedTimeTrigger, ManualTrigger, };
@@ -0,0 +1,20 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import Trigger, { TriggerProps } from "./interface";
3
+ export type FixedTimeTriggerDataType = avs_pb.FixedTimeTrigger.Config.AsObject;
4
+ export type FixedTimeTriggerProps = TriggerProps & {
5
+ data: FixedTimeTriggerDataType;
6
+ };
7
+ export type FixedTimeTriggerOutput = avs_pb.FixedTimeTrigger.Output.AsObject;
8
+ declare class FixedTimeTrigger extends Trigger {
9
+ constructor(props: FixedTimeTriggerProps);
10
+ toRequest(): avs_pb.TaskTrigger;
11
+ static fromResponse(raw: avs_pb.TaskTrigger): FixedTimeTrigger;
12
+ /**
13
+ * Convert raw data from runNodeWithInputs response to FixedTimeOutput format
14
+ * @param rawData - The raw data from the gRPC response
15
+ * @returns {FixedTimeTriggerOutput | undefined} - The converted data
16
+ */
17
+ getOutput(): FixedTimeTriggerOutput | undefined;
18
+ }
19
+ export default FixedTimeTrigger;
20
+ //# sourceMappingURL=fixedTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixedTime.d.ts","sourceRoot":"","sources":["../../../src/models/trigger/fixedTime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,OAAO,EAAE,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAInE,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG;IACjD,IAAI,EAAE,wBAAwB,CAAC;CAChC,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAE7E,cAAM,gBAAiB,SAAQ,OAAO;gBACxB,KAAK,EAAE,qBAAqB;IAIxC,SAAS,IAAI,MAAM,CAAC,WAAW;IAmB/B,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,gBAAgB;IAuB9D;;;;OAIG;IACH,SAAS,IAAI,sBAAsB,GAAG,SAAS;CAGhD;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import Trigger from "./interface";
3
+ import { TriggerType } from "@avaprotocol/types";
4
+ class FixedTimeTrigger extends Trigger {
5
+ constructor(props) {
6
+ super({ ...props, type: TriggerType.FixedTime, data: props.data });
7
+ }
8
+ toRequest() {
9
+ const request = new avs_pb.TaskTrigger();
10
+ request.setName(this.name);
11
+ request.setId(this.id);
12
+ if (!this.data) {
13
+ throw new Error(`Trigger data is missing for ${this.type}`);
14
+ }
15
+ const trigger = new avs_pb.FixedTimeTrigger();
16
+ const config = new avs_pb.FixedTimeTrigger.Config();
17
+ config.setEpochsList(this.data.epochsList || []);
18
+ trigger.setConfig(config);
19
+ request.setFixedTime(trigger);
20
+ return request;
21
+ }
22
+ static fromResponse(raw) {
23
+ // Convert the raw object to TriggerProps, which should keep name and id
24
+ const obj = raw.toObject();
25
+ let data = { epochsList: [] };
26
+ if (raw.getFixedTime() && raw.getFixedTime().hasConfig()) {
27
+ const config = raw.getFixedTime().getConfig();
28
+ if (config) {
29
+ data = {
30
+ epochsList: config.getEpochsList() || []
31
+ };
32
+ }
33
+ }
34
+ return new FixedTimeTrigger({
35
+ ...obj,
36
+ type: TriggerType.FixedTime,
37
+ data: data,
38
+ });
39
+ }
40
+ /**
41
+ * Convert raw data from runNodeWithInputs response to FixedTimeOutput format
42
+ * @param rawData - The raw data from the gRPC response
43
+ * @returns {FixedTimeTriggerOutput | undefined} - The converted data
44
+ */
45
+ getOutput() {
46
+ return this.output;
47
+ }
48
+ }
49
+ export default FixedTimeTrigger;
@@ -0,0 +1,25 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import { TriggerType } from "@avaprotocol/types";
3
+ export type TriggerData = avs_pb.FixedTimeTrigger.AsObject | avs_pb.CronTrigger.AsObject | avs_pb.BlockTrigger.AsObject | avs_pb.EventTrigger.AsObject | Record<string, any> | null;
4
+ export type TriggerOutput = avs_pb.FixedTimeTrigger.Output.AsObject | avs_pb.CronTrigger.Output.AsObject | avs_pb.BlockTrigger.Output.AsObject | avs_pb.EventTrigger.Output.AsObject | null;
5
+ export type TriggerProps = Omit<avs_pb.TaskTrigger.AsObject, "manual" | "fixedTime" | "cron" | "block" | "event"> & {
6
+ type: TriggerType;
7
+ data: TriggerData;
8
+ output?: TriggerOutput;
9
+ };
10
+ declare class Trigger implements TriggerProps {
11
+ id: string;
12
+ name: string;
13
+ type: TriggerType;
14
+ data: TriggerData;
15
+ output?: TriggerOutput;
16
+ /**
17
+ * Create an instance of Trigger from user inputs
18
+ * @param props
19
+ */
20
+ constructor(props: TriggerProps);
21
+ toRequest(): avs_pb.TaskTrigger;
22
+ getOutput(): TriggerOutput | undefined;
23
+ }
24
+ export default Trigger;
25
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/models/trigger/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,WAAW,GACnB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,GAChC,MAAM,CAAC,WAAW,CAAC,QAAQ,GAC3B,MAAM,CAAC,YAAY,CAAC,QAAQ,GAC5B,MAAM,CAAC,YAAY,CAAC,QAAQ,GAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB,IAAI,CAAC;AAET,MAAM,MAAM,aAAa,GACrB,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,GACvC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,GAClC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,GACnC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,GACnC,IAAI,CAAC;AAET,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,MAAM,CAAC,WAAW,CAAC,QAAQ,EAC3B,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CACpD,GAAG;IACF,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,cAAM,OAAQ,YAAW,YAAY;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;;OAGG;gBACS,KAAK,EAAE,YAAY;IAQ/B,SAAS,IAAI,MAAM,CAAC,WAAW;IAI/B,SAAS,IAAI,aAAa,GAAG,SAAS;CAGvC;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,20 @@
1
+ class Trigger {
2
+ /**
3
+ * Create an instance of Trigger from user inputs
4
+ * @param props
5
+ */
6
+ constructor(props) {
7
+ this.id = props.id;
8
+ this.name = props.name;
9
+ this.type = props.type;
10
+ this.data = props.data;
11
+ this.output = props.output;
12
+ }
13
+ toRequest() {
14
+ throw new Error("Method not implemented.");
15
+ }
16
+ getOutput() {
17
+ return this.output;
18
+ }
19
+ }
20
+ export default Trigger;
@@ -0,0 +1,13 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import Trigger, { TriggerProps } from "./interface";
3
+ export type ManualTriggerProps = TriggerProps & {
4
+ data?: Record<string, any> | null;
5
+ };
6
+ declare class ManualTrigger extends Trigger {
7
+ constructor(props: ManualTriggerProps);
8
+ toRequest(): avs_pb.TaskTrigger;
9
+ static fromResponse(raw: avs_pb.TaskTrigger): ManualTrigger;
10
+ getInputVariables(): Record<string, any> | null;
11
+ }
12
+ export default ManualTrigger;
13
+ //# sourceMappingURL=manual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../../src/models/trigger/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;CAClC,CAAC;AAEF,cAAM,aAAc,SAAQ,OAAO;gBACrB,KAAK,EAAE,kBAAkB;IAIrC,SAAS,IAAI,MAAM,CAAC,WAAW;IAU/B,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,aAAa;IAU3D,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAGhD;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,27 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import Trigger from "./interface";
3
+ import { TriggerType } from "@avaprotocol/types";
4
+ class ManualTrigger extends Trigger {
5
+ constructor(props) {
6
+ super({ ...props, type: TriggerType.Manual, data: props.data || null });
7
+ }
8
+ toRequest() {
9
+ const trigger = new avs_pb.TaskTrigger();
10
+ trigger.setId(this.id);
11
+ trigger.setName(this.name);
12
+ trigger.setManual(true);
13
+ return trigger;
14
+ }
15
+ static fromResponse(raw) {
16
+ const obj = raw.toObject();
17
+ return new ManualTrigger({
18
+ ...obj,
19
+ type: TriggerType.Manual,
20
+ data: null, // Manual triggers don't have data in the protobuf response
21
+ });
22
+ }
23
+ getInputVariables() {
24
+ return this.data;
25
+ }
26
+ }
27
+ export default ManualTrigger;
@@ -0,0 +1,33 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import { TriggerType } from "@avaprotocol/types";
3
+ export type TriggerReasonProps = {
4
+ type: TriggerType.FixedTime;
5
+ epoch: number;
6
+ } | {
7
+ type: TriggerType.Cron;
8
+ epoch: number;
9
+ } | {
10
+ type: TriggerType.Block;
11
+ blockNumber: number;
12
+ } | {
13
+ type: TriggerType.Event;
14
+ blockNumber: number;
15
+ logIndex: number;
16
+ txHash: string;
17
+ } | {
18
+ type: TriggerType.Manual;
19
+ } | {
20
+ type: TriggerType.Unset;
21
+ };
22
+ declare class TriggerReason {
23
+ type: TriggerType;
24
+ blockNumber?: number;
25
+ epoch?: number;
26
+ logIndex?: number;
27
+ txHash?: string;
28
+ constructor(props: TriggerReasonProps);
29
+ static fromResponse(data: avs_pb.TriggerReason | undefined): TriggerReason | undefined;
30
+ toRequest(): avs_pb.TriggerReason;
31
+ }
32
+ export default TriggerReason;
33
+ //# sourceMappingURL=reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reason.d.ts","sourceRoot":"","sources":["../../../src/models/trigger/reason.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAA;CAAE,CAAC;AAoBhC,cAAM,aAAa;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,KAAK,EAAE,kBAAkB;IAyBrC,MAAM,CAAC,YAAY,CACjB,IAAI,EAAE,MAAM,CAAC,aAAa,GAAG,SAAS,GACrC,aAAa,GAAG,SAAS;IAc5B,SAAS,IAAI,MAAM,CAAC,aAAa;CA8ClC;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,96 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import { TriggerType } from "@avaprotocol/types";
3
+ // Convert the number values of gRPC TriggerType to string values of TriggerType
4
+ const convertTriggerType = (grpcType) => {
5
+ const conversionMap = {
6
+ [avs_pb.TriggerReason.TriggerType.FIXEDTIME]: TriggerType.FixedTime,
7
+ [avs_pb.TriggerReason.TriggerType.CRON]: TriggerType.Cron,
8
+ [avs_pb.TriggerReason.TriggerType.BLOCK]: TriggerType.Block,
9
+ [avs_pb.TriggerReason.TriggerType.EVENT]: TriggerType.Event,
10
+ [avs_pb.TriggerReason.TriggerType.MANUAL]: TriggerType.Manual,
11
+ [avs_pb.TriggerReason.TriggerType.UNSET]: TriggerType.Unset,
12
+ };
13
+ return conversionMap[grpcType];
14
+ };
15
+ class TriggerReason {
16
+ constructor(props) {
17
+ this.type = props.type;
18
+ // Configure reason based on trigger type
19
+ switch (props.type) {
20
+ case TriggerType.FixedTime:
21
+ case TriggerType.Cron:
22
+ this.epoch = props.epoch;
23
+ break;
24
+ case TriggerType.Block:
25
+ this.blockNumber = props.blockNumber;
26
+ break;
27
+ case TriggerType.Event:
28
+ this.blockNumber = props.blockNumber;
29
+ this.logIndex = props.logIndex;
30
+ this.txHash = props.txHash;
31
+ break;
32
+ case TriggerType.Manual:
33
+ case TriggerType.Unset:
34
+ break;
35
+ default:
36
+ throw new Error("Unsupported trigger type");
37
+ }
38
+ }
39
+ static fromResponse(data) {
40
+ if (!data) {
41
+ return undefined;
42
+ }
43
+ return new TriggerReason({
44
+ type: convertTriggerType(data.getType()),
45
+ blockNumber: data.getBlockNumber(),
46
+ epoch: data.getEpoch(),
47
+ logIndex: data.getLogIndex(),
48
+ txHash: data.getTxHash(),
49
+ });
50
+ }
51
+ toRequest() {
52
+ const request = new avs_pb.TriggerReason();
53
+ switch (this.type) {
54
+ case TriggerType.FixedTime:
55
+ request.setType(avs_pb.TriggerReason.TriggerType.FIXEDTIME);
56
+ if (this.epoch) {
57
+ request.setEpoch(this.epoch);
58
+ }
59
+ break;
60
+ case TriggerType.Cron:
61
+ request.setType(avs_pb.TriggerReason.TriggerType.CRON);
62
+ if (this.epoch) {
63
+ request.setEpoch(this.epoch);
64
+ }
65
+ break;
66
+ case TriggerType.Block:
67
+ request.setType(avs_pb.TriggerReason.TriggerType.BLOCK);
68
+ if (this.blockNumber) {
69
+ request.setBlockNumber(this.blockNumber);
70
+ }
71
+ break;
72
+ case TriggerType.Event:
73
+ request.setType(avs_pb.TriggerReason.TriggerType.EVENT);
74
+ if (this.blockNumber) {
75
+ request.setBlockNumber(this.blockNumber);
76
+ }
77
+ if (this.logIndex) {
78
+ request.setLogIndex(this.logIndex);
79
+ }
80
+ if (this.txHash) {
81
+ request.setTxHash(this.txHash);
82
+ }
83
+ break;
84
+ case TriggerType.Manual:
85
+ request.setType(avs_pb.TriggerReason.TriggerType.MANUAL);
86
+ break;
87
+ case TriggerType.Unset:
88
+ request.setType(avs_pb.TriggerReason.TriggerType.UNSET);
89
+ break;
90
+ default:
91
+ throw new Error("Unsupported trigger type");
92
+ }
93
+ return request;
94
+ }
95
+ }
96
+ export default TriggerReason;
@@ -0,0 +1,54 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import Node from "./node/interface";
3
+ import Edge from "./edge";
4
+ import Trigger from "./trigger/interface";
5
+ export declare const DefaultExpiredAt = -1;
6
+ import { WorkflowStatus } from "@avaprotocol/types";
7
+ export declare function convertStatusToString(status: avs_pb.TaskStatus): WorkflowStatus;
8
+ export type WorkflowProps = Omit<avs_pb.Task.AsObject, "id" | "owner" | "completedAt" | "status" | "name" | "trigger" | "nodesList" | "edgesList" | "lastRanAt" | "executionCount"> & {
9
+ id?: string;
10
+ owner?: string;
11
+ completedAt?: number;
12
+ status?: WorkflowStatus;
13
+ name?: string;
14
+ trigger: Trigger;
15
+ nodes: Node[];
16
+ edges: Edge[];
17
+ lastRanAt?: number;
18
+ executionCount?: number;
19
+ };
20
+ declare class Workflow implements WorkflowProps {
21
+ smartWalletAddress: string;
22
+ trigger: Trigger;
23
+ nodes: Node[];
24
+ edges: Edge[];
25
+ startAt: number;
26
+ expiredAt: number;
27
+ maxExecution: number;
28
+ id?: string;
29
+ owner?: string;
30
+ name?: string;
31
+ completedAt?: number;
32
+ status?: WorkflowStatus;
33
+ lastRanAt?: number;
34
+ executionCount?: number;
35
+ /**
36
+ * Create an instance of Workflow from user inputs
37
+ * @param props
38
+ */
39
+ constructor(props: WorkflowProps);
40
+ /**
41
+ * Create an instance of Workflow from AVS getWorkflow response
42
+ * @param res
43
+ * @returns
44
+ */
45
+ static fromResponse(obj: avs_pb.Task): Workflow;
46
+ /**
47
+ * Create an instance of Workflow with only selected fields
48
+ * @param obj
49
+ */
50
+ static fromListResponse(obj: avs_pb.Task): Workflow;
51
+ toRequest(): avs_pb.CreateTaskReq;
52
+ }
53
+ export default Workflow;
54
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/models/workflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAEhD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAG1C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,UAAU,GACxB,cAAc,CAUhB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,GACJ,OAAO,GACP,aAAa,GACb,QAAQ,GACR,MAAM,GACN,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,gBAAgB,CACnB,GAAG;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,cAAM,QAAS,YAAW,aAAa;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IAGrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;gBACS,KAAK,EAAE,aAAa;IAuBhC;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ;IAkC/C;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ;IAyBnD,SAAS,IAAI,MAAM,CAAC,aAAa;CAsBlC;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,117 @@
1
+ import _ from "lodash";
2
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
3
+ import Edge from "./edge";
4
+ import TriggerFactory from "./trigger/factory";
5
+ import NodeFactory from "./node/factory";
6
+ export const DefaultExpiredAt = -1; // TODO: explain the meaning of -1
7
+ import { WorkflowStatus } from "@avaprotocol/types";
8
+ // Function to convert TaskStatus to string
9
+ export function convertStatusToString(status) {
10
+ const conversionMap = {
11
+ [avs_pb.TaskStatus.ACTIVE]: WorkflowStatus.Active,
12
+ [avs_pb.TaskStatus.COMPLETED]: WorkflowStatus.Completed,
13
+ [avs_pb.TaskStatus.FAILED]: WorkflowStatus.Failed,
14
+ [avs_pb.TaskStatus.CANCELED]: WorkflowStatus.Canceled,
15
+ [avs_pb.TaskStatus.EXECUTING]: WorkflowStatus.Executing,
16
+ };
17
+ return conversionMap[status];
18
+ }
19
+ class Workflow {
20
+ /**
21
+ * Create an instance of Workflow from user inputs
22
+ * @param props
23
+ */
24
+ constructor(props) {
25
+ if (!props.trigger) {
26
+ throw new Error("Trigger is undefined in new Workflow()");
27
+ }
28
+ this.smartWalletAddress = props.smartWalletAddress;
29
+ this.trigger = props.trigger;
30
+ this.nodes = props.nodes;
31
+ this.edges = props.edges;
32
+ this.startAt = props.startAt;
33
+ this.expiredAt = props.expiredAt;
34
+ this.maxExecution = props.maxExecution;
35
+ this.executionCount = props.executionCount;
36
+ // Optional fields
37
+ this.id = props.id;
38
+ this.owner = props.owner;
39
+ this.name = props.name;
40
+ this.status = props.status;
41
+ this.completedAt = props.completedAt;
42
+ this.lastRanAt = props.lastRanAt;
43
+ }
44
+ /**
45
+ * Create an instance of Workflow from AVS getWorkflow response
46
+ * @param res
47
+ * @returns
48
+ */
49
+ static fromResponse(obj) {
50
+ const trigger = TriggerFactory.fromResponse(obj.getTrigger());
51
+ if (!trigger) {
52
+ throw new Error("Trigger is undefined in fromResponse()");
53
+ }
54
+ const nodes = _.map(obj.getNodesList(), (node) => NodeFactory.fromResponse(node));
55
+ const edges = _.map(obj.getEdgesList(), (edge) => Edge.fromResponse(edge));
56
+ const workflow = new Workflow({
57
+ id: obj.getId(),
58
+ owner: obj.getOwner(),
59
+ smartWalletAddress: obj.getSmartWalletAddress(),
60
+ trigger,
61
+ nodes,
62
+ edges,
63
+ startAt: obj.getStartAt(),
64
+ expiredAt: obj.getExpiredAt(),
65
+ maxExecution: obj.getMaxExecution(),
66
+ executionCount: obj.getExecutionCount(),
67
+ name: obj.getName(),
68
+ status: convertStatusToString(obj.getStatus()),
69
+ completedAt: obj.getCompletedAt(),
70
+ lastRanAt: obj.getLastRanAt(),
71
+ });
72
+ return workflow;
73
+ }
74
+ /**
75
+ * Create an instance of Workflow with only selected fields
76
+ * @param obj
77
+ */
78
+ static fromListResponse(obj) {
79
+ const trigger = TriggerFactory.fromResponse(obj.getTrigger());
80
+ if (!trigger) {
81
+ throw new Error("Trigger is undefined in fromListResponse()");
82
+ }
83
+ return new Workflow({
84
+ id: obj.getId(),
85
+ owner: obj.getOwner(),
86
+ smartWalletAddress: obj.getSmartWalletAddress(),
87
+ trigger: trigger,
88
+ startAt: obj.getStartAt(),
89
+ expiredAt: obj.getExpiredAt(),
90
+ maxExecution: obj.getMaxExecution(),
91
+ executionCount: obj.getExecutionCount(),
92
+ nodes: _.map(obj.getNodesList(), (node) => NodeFactory.fromResponse(node)),
93
+ edges: _.map(obj.getEdgesList(), (edge) => Edge.fromResponse(edge)),
94
+ completedAt: obj.getCompletedAt(),
95
+ status: convertStatusToString(obj.getStatus()),
96
+ name: obj.getName(),
97
+ lastRanAt: obj.getLastRanAt(),
98
+ });
99
+ }
100
+ toRequest() {
101
+ const request = new avs_pb.CreateTaskReq();
102
+ // TODO: add client side validation for each field
103
+ request.setSmartWalletAddress(this.smartWalletAddress);
104
+ request.setTrigger(this.trigger.toRequest());
105
+ _.map(this.nodes, (node) => request.addNodes(node.toRequest()));
106
+ _.map(this.edges, (edge) => request.addEdges(edge.toRequest()));
107
+ request.setStartAt(this.startAt);
108
+ request.setExpiredAt(this.expiredAt);
109
+ request.setMaxExecution(this.maxExecution);
110
+ // Optional fields
111
+ if (this.name) {
112
+ request.setName(this.name);
113
+ }
114
+ return request;
115
+ }
116
+ }
117
+ export default Workflow;
@@ -0,0 +1,3 @@
1
+ import { Value as ProtobufValue } from "google-protobuf/google/protobuf/struct_pb";
2
+ export declare function convertProtobufValueToJs(value?: ProtobufValue): any;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAGnF,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,GAAG,CAiCnE"}