zkcloudworker 0.7.2 → 0.7.4

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 (45) hide show
  1. package/lib/ts/src/api/api.d.ts +39 -27
  2. package/lib/ts/src/api/api.js +28 -27
  3. package/lib/ts/src/cloud/cloud.d.ts +176 -0
  4. package/lib/ts/src/cloud/cloud.js +72 -3
  5. package/lib/ts/src/cloud/job.d.ts +47 -0
  6. package/lib/ts/src/cloud/local.d.ts +157 -1
  7. package/lib/ts/src/cloud/local.js +157 -3
  8. package/lib/ts/src/cloud/task.d.ts +18 -0
  9. package/lib/ts/src/networks.d.ts +20 -0
  10. package/lib/ts/src/utils/fee.d.ts +4 -0
  11. package/lib/ts/src/utils/fee.js +5 -1
  12. package/lib/ts/src/utils/fetch.d.ts +20 -0
  13. package/lib/ts/src/utils/fetch.js +20 -0
  14. package/lib/ts/src/utils/fields.d.ts +10 -0
  15. package/lib/ts/src/utils/fields.js +10 -0
  16. package/lib/ts/src/utils/mina.d.ts +24 -0
  17. package/lib/ts/src/utils/mina.js +18 -0
  18. package/lib/ts/tsconfig.tsbuildinfo +1 -1
  19. package/lib/web/src/api/api.d.ts +39 -27
  20. package/lib/web/src/api/api.js +28 -27
  21. package/lib/web/src/api/api.js.map +1 -1
  22. package/lib/web/src/cloud/cloud.d.ts +176 -0
  23. package/lib/web/src/cloud/cloud.js +72 -3
  24. package/lib/web/src/cloud/cloud.js.map +1 -1
  25. package/lib/web/src/cloud/job.d.ts +47 -0
  26. package/lib/web/src/cloud/local.d.ts +157 -1
  27. package/lib/web/src/cloud/local.js +157 -3
  28. package/lib/web/src/cloud/local.js.map +1 -1
  29. package/lib/web/src/cloud/task.d.ts +18 -0
  30. package/lib/web/src/networks.d.ts +20 -0
  31. package/lib/web/src/networks.js.map +1 -1
  32. package/lib/web/src/utils/fee.d.ts +4 -0
  33. package/lib/web/src/utils/fee.js +5 -1
  34. package/lib/web/src/utils/fee.js.map +1 -1
  35. package/lib/web/src/utils/fetch.d.ts +20 -0
  36. package/lib/web/src/utils/fetch.js +20 -0
  37. package/lib/web/src/utils/fetch.js.map +1 -1
  38. package/lib/web/src/utils/fields.d.ts +10 -0
  39. package/lib/web/src/utils/fields.js +10 -0
  40. package/lib/web/src/utils/fields.js.map +1 -1
  41. package/lib/web/src/utils/mina.d.ts +24 -0
  42. package/lib/web/src/utils/mina.js +18 -0
  43. package/lib/web/src/utils/mina.js.map +1 -1
  44. package/lib/web/tsconfig.web.tsbuildinfo +1 -1
  45. package/package.json +1 -1
@@ -1,10 +1,24 @@
1
1
  import { zkCloudWorker, Cloud } from "../cloud/cloud";
2
2
  import { blockchain } from "../networks";
3
+ /**
4
+ * The APICommand type for interacting with the zkCloudWorker
5
+ * @typedef { "recursiveProof" | "execute" | "sendTransactions" | "jobResult" | "deploy" | "getBalance" | "queryBilling" } ApiCommand
6
+ * @property recursiveProof The command for the recursiveProof calculation
7
+ * @property execute The command for the execute function call (sync or async)
8
+ * @property sendTransactions The command for sending transactions to the cloud
9
+ * @property jobResult The command for getting the result of the job
10
+ * @property deploy The command for deploying the code to the cloud, it is recommended use CLI tools for deployment
11
+ * @property getBalance The command for getting the balance of the user's account with zkCloudWorker
12
+ * @property queryBilling The command for getting the billing report of the user's account with zkCloudWorker
13
+ */
3
14
  export type ApiCommand = "recursiveProof" | "execute" | "sendTransactions" | "jobResult" | "deploy" | "getBalance" | "queryBilling";
4
15
  /**
5
16
  * API class for interacting with the zkCloudWorker
6
17
  * @property jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
7
18
  * @property endpoint The endpoint of the serverless api
19
+ * @property chain The blockchain network to use
20
+ * @property webhook The webhook for the serverless api to get the results
21
+ * @property localWorker The local worker for the serverless api to test the code locally
8
22
  */
9
23
  export declare class zkCloudWorkerClient {
10
24
  readonly jwt: string;
@@ -14,7 +28,11 @@ export declare class zkCloudWorkerClient {
14
28
  readonly localWorker?: (cloud: Cloud) => Promise<zkCloudWorker>;
15
29
  /**
16
30
  * Constructor for the API class
17
- * @param jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
31
+ * @param params the parameters for the API class
32
+ * @param params.jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
33
+ * @param params.zkcloudworker The local worker for the serverless api to test the code locally
34
+ * @param params.chain The blockchain network to use
35
+ * @param params.webhook The webhook for the serverless api to get the results
18
36
  */
19
37
  constructor(params: {
20
38
  jwt: string;
@@ -24,19 +42,20 @@ export declare class zkCloudWorkerClient {
24
42
  });
25
43
  /**
26
44
  * Starts a new job for the proof calculation using serverless api call
27
- * The developer and name should correspond to the BackupPlugin of the API
28
- * All other parameters should correspond to the parameters of the BackupPlugin
29
45
  * @param data the data for the proof call
30
- * @param data.transactions the transactions
31
46
  * @param data.developer the developer
32
47
  * @param data.repo the repo to use
48
+ * @param data.transactions the transactions
33
49
  * @param data.task the task of the job
34
- * @param data.args the arguments of the job
50
+ * @param data.userId the userId of the job
51
+ * @param data.args the arguments of the job, should be serialized JSON or string
52
+ * @param data.metadata the metadata of the job, should be serialized JSON or string
53
+ * @param data.webhook the webhook for the job
35
54
  * @returns { success: boolean, error?: string, jobId?: string }
36
55
  * where jonId is the jobId of the job
37
56
  *
38
- * The developers repo should provide a BackupPlugin with the name task
39
- * that can be called with the given parameters
57
+ * The developers repo should provide a zkcloudworker function
58
+ * that can be called with the given parameters, see the examples
40
59
  */
41
60
  recursiveProof(data: {
42
61
  developer: string;
@@ -54,8 +73,6 @@ export declare class zkCloudWorkerClient {
54
73
  }>;
55
74
  /**
56
75
  * Starts a new job for the function call using serverless api call
57
- * The developer and name should correspond to the BackupPlugin of the API
58
- * All other parameters should correspond to the parameters of the BackupPlugin
59
76
  * @param data the data for the proof call
60
77
  * @param data.developer the developer
61
78
  * @param data.repo the repo to use
@@ -65,8 +82,8 @@ export declare class zkCloudWorkerClient {
65
82
  * @param data.args the arguments of the job
66
83
  * @param data.metadata the metadata of the job
67
84
  * @param data.mode the mode of the job execution: "sync" will not create a job, it will execute the function synchronously within 30 seconds and with the memory limit of 256 MB
68
- * @returns { success: boolean, error?: string, jobId?: string }
69
- * where jonId is the jobId of the job
85
+ * @returns { success: boolean, error?: string, jobId?: string, result?: any }
86
+ * where jonId is the jobId of the job (for async calls), result is the result of the job (for sync calls)
70
87
  */
71
88
  execute(data: {
72
89
  developer: string;
@@ -84,16 +101,13 @@ export declare class zkCloudWorkerClient {
84
101
  result?: any;
85
102
  }>;
86
103
  /**
87
- * Starts a new job for the function call using serverless api call
88
- * The developer and name should correspond to the BackupPlugin of the API
89
- * All other parameters should correspond to the parameters of the BackupPlugin
104
+ * Sends transactions to the blockchain using serverless api call
90
105
  * @param data the data for the proof call
91
106
  * @param data.developer the developer
92
107
  * @param data.repo the repo to use
93
- * @param data.task the task of the job
94
- * @param data.args the arguments of the job
95
- * @returns { success: boolean, error?: string, jobId?: string }
96
- * where jonId is the jobId of the job
108
+ * @param data.transactions the transactions
109
+ * @returns { success: boolean, error?: string, txId?: string[] }
110
+ * where txId is the transaction id of the transaction, in the sequence of the input transactions
97
111
  */
98
112
  sendTransactions(data: {
99
113
  developer: string;
@@ -125,15 +139,13 @@ export declare class zkCloudWorkerClient {
125
139
  result?: any;
126
140
  }>;
127
141
  /**
128
- * Gets the result of the job using serverless api call
142
+ * Deploys the code to the cloud using serverless api call
129
143
  * @param data the data for the deploy call
130
- * @param data.packageName the name of the zip file with the code to be deployed
131
- * @returns { success: boolean, error?: string, result?: any }
132
- * where result is the result of the job
133
- * if the job is not finished yet, the result will be undefined
134
- * if the job failed, the result will be undefined and error will be set
135
- * if the job is finished, the result will be set and error will be undefined
136
- * if the job is not found, the result will be undefined and error will be set
144
+ * @param data.repo the repo to use
145
+ * @param data.developer the developer
146
+ * @param data.packageManager the package manager to use
147
+ * @returns { success: boolean, error?: string, jobId?: string}
148
+ * where jobId is the jobId of the job
137
149
  */
138
150
  deploy(data: {
139
151
  repo: string;
@@ -157,7 +169,7 @@ export declare class zkCloudWorkerClient {
157
169
  /**
158
170
  * Gets the remaining balance
159
171
  * @returns { success: boolean, error?: string, result?: any }
160
- * where result is the billing report
172
+ * where result is the balance
161
173
  */
162
174
  getBalance(): Promise<{
163
175
  success: boolean;
@@ -14,11 +14,18 @@ const { ZKCLOUDWORKER_AUTH, ZKCLOUDWORKER_API } = config_1.default;
14
14
  * API class for interacting with the zkCloudWorker
15
15
  * @property jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
16
16
  * @property endpoint The endpoint of the serverless api
17
+ * @property chain The blockchain network to use
18
+ * @property webhook The webhook for the serverless api to get the results
19
+ * @property localWorker The local worker for the serverless api to test the code locally
17
20
  */
18
21
  class zkCloudWorkerClient {
19
22
  /**
20
23
  * Constructor for the API class
21
- * @param jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
24
+ * @param params the parameters for the API class
25
+ * @param params.jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
26
+ * @param params.zkcloudworker The local worker for the serverless api to test the code locally
27
+ * @param params.chain The blockchain network to use
28
+ * @param params.webhook The webhook for the serverless api to get the results
22
29
  */
23
30
  constructor(params) {
24
31
  const { jwt, zkcloudworker, chain, webhook } = params;
@@ -34,19 +41,20 @@ class zkCloudWorkerClient {
34
41
  }
35
42
  /**
36
43
  * Starts a new job for the proof calculation using serverless api call
37
- * The developer and name should correspond to the BackupPlugin of the API
38
- * All other parameters should correspond to the parameters of the BackupPlugin
39
44
  * @param data the data for the proof call
40
- * @param data.transactions the transactions
41
45
  * @param data.developer the developer
42
46
  * @param data.repo the repo to use
47
+ * @param data.transactions the transactions
43
48
  * @param data.task the task of the job
44
- * @param data.args the arguments of the job
49
+ * @param data.userId the userId of the job
50
+ * @param data.args the arguments of the job, should be serialized JSON or string
51
+ * @param data.metadata the metadata of the job, should be serialized JSON or string
52
+ * @param data.webhook the webhook for the job
45
53
  * @returns { success: boolean, error?: string, jobId?: string }
46
54
  * where jonId is the jobId of the job
47
55
  *
48
- * The developers repo should provide a BackupPlugin with the name task
49
- * that can be called with the given parameters
56
+ * The developers repo should provide a zkcloudworker function
57
+ * that can be called with the given parameters, see the examples
50
58
  */
51
59
  async recursiveProof(data) {
52
60
  const result = await this.apiHub("recursiveProof", data);
@@ -77,8 +85,6 @@ class zkCloudWorkerClient {
77
85
  }
78
86
  /**
79
87
  * Starts a new job for the function call using serverless api call
80
- * The developer and name should correspond to the BackupPlugin of the API
81
- * All other parameters should correspond to the parameters of the BackupPlugin
82
88
  * @param data the data for the proof call
83
89
  * @param data.developer the developer
84
90
  * @param data.repo the repo to use
@@ -88,8 +94,8 @@ class zkCloudWorkerClient {
88
94
  * @param data.args the arguments of the job
89
95
  * @param data.metadata the metadata of the job
90
96
  * @param data.mode the mode of the job execution: "sync" will not create a job, it will execute the function synchronously within 30 seconds and with the memory limit of 256 MB
91
- * @returns { success: boolean, error?: string, jobId?: string }
92
- * where jonId is the jobId of the job
97
+ * @returns { success: boolean, error?: string, jobId?: string, result?: any }
98
+ * where jonId is the jobId of the job (for async calls), result is the result of the job (for sync calls)
93
99
  */
94
100
  async execute(data) {
95
101
  const result = await this.apiHub("execute", data);
@@ -130,16 +136,13 @@ class zkCloudWorkerClient {
130
136
  };
131
137
  }
132
138
  /**
133
- * Starts a new job for the function call using serverless api call
134
- * The developer and name should correspond to the BackupPlugin of the API
135
- * All other parameters should correspond to the parameters of the BackupPlugin
139
+ * Sends transactions to the blockchain using serverless api call
136
140
  * @param data the data for the proof call
137
141
  * @param data.developer the developer
138
142
  * @param data.repo the repo to use
139
- * @param data.task the task of the job
140
- * @param data.args the arguments of the job
141
- * @returns { success: boolean, error?: string, jobId?: string }
142
- * where jonId is the jobId of the job
143
+ * @param data.transactions the transactions
144
+ * @returns { success: boolean, error?: string, txId?: string[] }
145
+ * where txId is the transaction id of the transaction, in the sequence of the input transactions
143
146
  */
144
147
  async sendTransactions(data) {
145
148
  const result = await this.apiHub("sendTransactions", data);
@@ -184,15 +187,13 @@ class zkCloudWorkerClient {
184
187
  };
185
188
  }
186
189
  /**
187
- * Gets the result of the job using serverless api call
190
+ * Deploys the code to the cloud using serverless api call
188
191
  * @param data the data for the deploy call
189
- * @param data.packageName the name of the zip file with the code to be deployed
190
- * @returns { success: boolean, error?: string, result?: any }
191
- * where result is the result of the job
192
- * if the job is not finished yet, the result will be undefined
193
- * if the job failed, the result will be undefined and error will be set
194
- * if the job is finished, the result will be set and error will be undefined
195
- * if the job is not found, the result will be undefined and error will be set
192
+ * @param data.repo the repo to use
193
+ * @param data.developer the developer
194
+ * @param data.packageManager the package manager to use
195
+ * @returns { success: boolean, error?: string, jobId?: string}
196
+ * where jobId is the jobId of the job
196
197
  */
197
198
  async deploy(data) {
198
199
  // TODO: encrypt env.json
@@ -238,7 +239,7 @@ class zkCloudWorkerClient {
238
239
  /**
239
240
  * Gets the remaining balance
240
241
  * @returns { success: boolean, error?: string, result?: any }
241
- * where result is the billing report
242
+ * where result is the balance
242
243
  */
243
244
  async getBalance() {
244
245
  const result = await this.apiHub("getBalance", {});
@@ -1,6 +1,17 @@
1
1
  /// <reference types="node" />
2
2
  import { blockchain } from "../networks";
3
3
  import { JobData } from "./job";
4
+ /**
5
+ * Interface for the deployed smart contract
6
+ * Used to get verification keys and addresses of the deployed smart contracts
7
+ * to be published in the blockchain explorer
8
+ * @param address: the address of the deployed smart contract
9
+ * @param name: the name of the deployed smart contract
10
+ * @param chain: the blockchain network where the smart contract is deployed
11
+ * @param verificationKey: the verification key of the deployed smart contract
12
+ * @param verificationKey.hash: the hash of the verification key
13
+ * @param verificationKey.data: the data of the verification key
14
+ */
4
15
  export interface DeployedSmartContract {
5
16
  address: string;
6
17
  name: string;
@@ -10,10 +21,24 @@ export interface DeployedSmartContract {
10
21
  data: string;
11
22
  };
12
23
  }
24
+ /**
25
+ * Interface for the deployer key pair
26
+ * Used to get the public and private keys of the deployer for test networks only
27
+ * Devnet and Zeko are supported
28
+ * @param publicKey: the public key of the deployer
29
+ * @param privateKey: the private key of the deployer
30
+ */
13
31
  export interface DeployerKeyPair {
14
32
  publicKey: string;
15
33
  privateKey: string;
16
34
  }
35
+ /**
36
+ * Interface for the cloud transaction
37
+ * Used to get the transaction id, the transaction, and the time received
38
+ * @param txId: the transaction id
39
+ * @param transaction: the transaction
40
+ * @param timeReceived: the time received
41
+ */
17
42
  export interface CloudTransaction {
18
43
  txId: string;
19
44
  transaction: string;
@@ -33,6 +58,23 @@ export declare abstract class Cloud {
33
58
  readonly metadata?: string;
34
59
  readonly chain: blockchain;
35
60
  readonly isLocalCloud: boolean;
61
+ /**
62
+ * Constructor for the Cloud class
63
+ * @param params the parameters for the Cloud class
64
+ * @param params.id the id of the user
65
+ * @param params.jobId the job id
66
+ * @param params.stepId the step id
67
+ * @param params.taskId the task id
68
+ * @param params.cache the cache folder. Use it to get the Cache object: cache = Cache.FileSystem(this.cloud.cache);
69
+ * @param params.developer the developer id
70
+ * @param params.repo the repo id
71
+ * @param params.task the task id
72
+ * @param params.userId the user id
73
+ * @param params.args the arguments, should be a string or serialized JSON
74
+ * @param params.metadata the metadata, should be a string or serialized JSON
75
+ * @param params.chain the blockchain network
76
+ * @param params.isLocalCloud a boolean to check if the cloud is local or not
77
+ */
36
78
  constructor(params: {
37
79
  id: string;
38
80
  jobId: string;
@@ -48,16 +90,69 @@ export declare abstract class Cloud {
48
90
  isLocalCloud?: boolean;
49
91
  chain: blockchain;
50
92
  });
93
+ /**
94
+ * Abstract method to get the deployer key pair
95
+ * Used to get the public and private keys of the deployer for test networks only
96
+ * Devnet and Zeko are supported
97
+ * @returns the deployer key pair
98
+ */
51
99
  abstract getDeployer(): Promise<DeployerKeyPair | undefined>;
100
+ /**
101
+ * Abstract method to release the deployer
102
+ * @param params the public key of the deployer and the transactions hashes
103
+ * Used to release the deployer after the transactions are sent to the blockchain
104
+ * @param params.publicKey the public key of the deployer
105
+ * @param params.txsHashes the transactions hashes
106
+ */
52
107
  abstract releaseDeployer(params: {
53
108
  publicKey: string;
54
109
  txsHashes: string[];
55
110
  }): Promise<void>;
111
+ /**
112
+ * Abstract method to get the data by key
113
+ * Used to get the data by key from the cloud storage
114
+ * @param key the key
115
+ * @returns the value of the key
116
+ */
56
117
  abstract getDataByKey(key: string): Promise<string | undefined>;
118
+ /**
119
+ * Abstract method to save the data by key
120
+ * Used to save the data by key to the cloud storage
121
+ * @param key the key
122
+ * @param value the value
123
+ */
57
124
  abstract saveDataByKey(key: string, value: string | undefined): Promise<void>;
125
+ /**
126
+ * Abstract method to save the file
127
+ * Used to save the file to the cloud storage
128
+ * @param filename the filename
129
+ * @param value the value
130
+ */
58
131
  abstract saveFile(filename: string, value: Buffer): Promise<void>;
132
+ /**
133
+ * Abstract method to load the file
134
+ * Used to load the file from the cloud storage
135
+ * @param filename the filename
136
+ * @returns the value of the file
137
+ */
59
138
  abstract loadFile(filename: string): Promise<Buffer | undefined>;
139
+ /**
140
+ * Abstract method to load the environment
141
+ * Used to load the environment from the cloud storage
142
+ * @param password the password
143
+ */
60
144
  abstract loadEnvironment(password: string): Promise<void>;
145
+ /**
146
+ * Abstract method to calculate the recursive proof
147
+ * Used to calculate the recursive proof
148
+ * @param data the data
149
+ * @param data.transactions the transactions
150
+ * @param data.task the task
151
+ * @param data.userId the user id
152
+ * @param data.args the arguments
153
+ * @param data.metadata the metadata
154
+ * @returns the proof
155
+ */
61
156
  abstract recursiveProof(data: {
62
157
  transactions: string[];
63
158
  task?: string;
@@ -65,6 +160,17 @@ export declare abstract class Cloud {
65
160
  args?: string;
66
161
  metadata?: string;
67
162
  }): Promise<string>;
163
+ /**
164
+ * Abstract method to execute the transactions
165
+ * Used to execute the transactions
166
+ * @param data the data
167
+ * @param data.transactions the transactions
168
+ * @param data.task the task
169
+ * @param data.userId the user id
170
+ * @param data.args the arguments
171
+ * @param data.metadata the metadata
172
+ * @returns the result
173
+ */
68
174
  abstract execute(data: {
69
175
  transactions: string[];
70
176
  task: string;
@@ -72,6 +178,18 @@ export declare abstract class Cloud {
72
178
  args?: string;
73
179
  metadata?: string;
74
180
  }): Promise<string>;
181
+ /**
182
+ * Abstract method to add the task
183
+ * Used to add the task
184
+ * @param data the data
185
+ * @param data.task the task
186
+ * @param data.startTime the start time
187
+ * @param data.userId the user id
188
+ * @param data.args the arguments
189
+ * @param data.metadata the metadata
190
+ * @param data.maxAttempts the maximum attempts
191
+ * @returns the task id
192
+ */
75
193
  abstract addTask(data: {
76
194
  task: string;
77
195
  startTime?: number;
@@ -80,19 +198,77 @@ export declare abstract class Cloud {
80
198
  metadata?: string;
81
199
  maxAttempts?: number;
82
200
  }): Promise<string>;
201
+ /**
202
+ * Abstract method to delete the transaction
203
+ * Used to delete the transaction
204
+ * @param txId the transaction id
205
+ */
83
206
  abstract deleteTransaction(txId: string): Promise<void>;
207
+ /**
208
+ * Abstract method to get the transactions
209
+ * Used to get the transactions
210
+ * @returns the transactions
211
+ */
84
212
  abstract getTransactions(): Promise<CloudTransaction[]>;
213
+ /**
214
+ * Abstract method to delete the task
215
+ * Used to delete the task
216
+ * @param taskId the task id
217
+ */
85
218
  abstract deleteTask(taskId: string): Promise<void>;
219
+ /**
220
+ * Abstract method to process the tasks
221
+ */
86
222
  abstract processTasks(): Promise<void>;
223
+ /**
224
+ * Abstract method to get the job result
225
+ * Used to get the job result
226
+ * @param jobId the job id
227
+ * @returns the job result
228
+ */
87
229
  abstract jobResult(jobId: string): Promise<JobData | undefined>;
88
230
  }
231
+ /**
232
+ * Abstract class for the zkCloudWorker
233
+ * Used to define the zkCloudWorker methods and properties
234
+ * Should be implemented for by the developer for the zkCloudWorker in the cloud
235
+ * @param cloud: the cloud
236
+ */
89
237
  export declare abstract class zkCloudWorker {
90
238
  readonly cloud: Cloud;
239
+ /**
240
+ * Constructor for the zkCloudWorker class
241
+ * @param cloud the cloud instance provided by the zkCloudWorker in the local environment or in the cloud
242
+ */
91
243
  constructor(cloud: Cloud);
244
+ /**
245
+ * Returns the deployed smart contracts for verification in the blockchain explorer
246
+ * @returns the deployed smart contracts
247
+ */
92
248
  deployedContracts(): Promise<DeployedSmartContract[]>;
249
+ /**
250
+ * Creates a new proof from a transaction
251
+ * @param transaction the transaction
252
+ * @returns the serialized proof
253
+ */
93
254
  create(transaction: string): Promise<string | undefined>;
255
+ /**
256
+ * Merges two proofs
257
+ * @param proof1 the first proof
258
+ * @param proof2 the second proof
259
+ * @returns the merged proof
260
+ */
94
261
  merge(proof1: string, proof2: string): Promise<string | undefined>;
262
+ /**
263
+ * Executes the transactions
264
+ * @param transactions the transactions, can be empty list
265
+ * @returns the result
266
+ */
95
267
  execute(transactions: string[]): Promise<string | undefined>;
96
268
  processTransactions(transactions: CloudTransaction[]): Promise<void>;
269
+ /**
270
+ * process the task defined by the developer
271
+ * @returns the result
272
+ */
97
273
  task(): Promise<string | undefined>;
98
274
  }
@@ -1,7 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.zkCloudWorker = exports.Cloud = void 0;
4
+ /*
5
+ * Abstract class for the cloud service
6
+ * Used to define the cloud methods and properties
7
+ * Should be implemented by for local testing and for the zkCloudWorker in the cloud
8
+ * @param id the id of the user
9
+ * @param jobId the job id
10
+ * @param stepId the step id
11
+ * @param taskId the task id
12
+ * @param cache the cache folder. Use it to get the Cache object: cache = Cache.FileSystem(this.cloud.cache);
13
+ * @param developer the developer id
14
+ * @param repo the repo id
15
+ * @param task the task id
16
+ * @param userId the user id
17
+ * @param args the arguments, should be a string or serialized JSON
18
+ * @param metadata the metadata, should be a string or serialized JSON
19
+ * @param chain the blockchain network
20
+ * @param isLocalCloud a boolean to check if the cloud is local or not
21
+ */
4
22
  class Cloud {
23
+ /**
24
+ * Constructor for the Cloud class
25
+ * @param params the parameters for the Cloud class
26
+ * @param params.id the id of the user
27
+ * @param params.jobId the job id
28
+ * @param params.stepId the step id
29
+ * @param params.taskId the task id
30
+ * @param params.cache the cache folder. Use it to get the Cache object: cache = Cache.FileSystem(this.cloud.cache);
31
+ * @param params.developer the developer id
32
+ * @param params.repo the repo id
33
+ * @param params.task the task id
34
+ * @param params.userId the user id
35
+ * @param params.args the arguments, should be a string or serialized JSON
36
+ * @param params.metadata the metadata, should be a string or serialized JSON
37
+ * @param params.chain the blockchain network
38
+ * @param params.isLocalCloud a boolean to check if the cloud is local or not
39
+ */
5
40
  constructor(params) {
6
41
  const { id, jobId, stepId, taskId, cache, developer, repo, task, userId, args, metadata, isLocalCloud, chain, } = params;
7
42
  this.id = id;
@@ -20,28 +55,62 @@ class Cloud {
20
55
  }
21
56
  }
22
57
  exports.Cloud = Cloud;
58
+ /**
59
+ * Abstract class for the zkCloudWorker
60
+ * Used to define the zkCloudWorker methods and properties
61
+ * Should be implemented for by the developer for the zkCloudWorker in the cloud
62
+ * @param cloud: the cloud
63
+ */
23
64
  class zkCloudWorker {
65
+ /**
66
+ * Constructor for the zkCloudWorker class
67
+ * @param cloud the cloud instance provided by the zkCloudWorker in the local environment or in the cloud
68
+ */
24
69
  constructor(cloud) {
25
70
  this.cloud = cloud;
26
71
  }
27
- // To verify the SmartContract code
72
+ /**
73
+ * Returns the deployed smart contracts for verification in the blockchain explorer
74
+ * @returns the deployed smart contracts
75
+ */
28
76
  async deployedContracts() {
29
77
  return [];
30
78
  }
31
79
  // Those methods should be implemented for recursive proofs calculations
80
+ /**
81
+ * Creates a new proof from a transaction
82
+ * @param transaction the transaction
83
+ * @returns the serialized proof
84
+ */
32
85
  async create(transaction) {
33
86
  return undefined;
34
87
  }
88
+ /**
89
+ * Merges two proofs
90
+ * @param proof1 the first proof
91
+ * @param proof2 the second proof
92
+ * @returns the merged proof
93
+ */
35
94
  async merge(proof1, proof2) {
36
95
  return undefined;
37
96
  }
38
97
  // Those methods should be implemented for anything except for recursive proofs
98
+ /**
99
+ * Executes the transactions
100
+ * @param transactions the transactions, can be empty list
101
+ * @returns the result
102
+ */
39
103
  async execute(transactions) {
40
104
  return undefined;
41
105
  }
42
- // process the transactions received by the cloud
106
+ /* Process the transactions received by the cloud
107
+ * @param transactions: the transactions
108
+ */
43
109
  async processTransactions(transactions) { }
44
- // process the task defined by the developer
110
+ /**
111
+ * process the task defined by the developer
112
+ * @returns the result
113
+ */
45
114
  async task() {
46
115
  return undefined;
47
116
  }
@@ -1,10 +1,57 @@
1
1
  import { blockchain } from "../networks";
2
2
  export type JobStatus = "created" | "started" | "finished" | "failed" | "used";
3
+ /**
4
+ * LogStream is a subset of the log stream data returned by AWS CloudWatch Logs when running the worker
5
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch-logs/command/GetLogEventsCommand/
6
+ * example:
7
+ * {
8
+ * logGroupName: '/aws/lambda/zkcloudworker-dev-test',
9
+ * logStreamName: '2024/05/09/[$LATEST]52d048f64e894d2e8ba2800df93629c5'
10
+ * awsRequestId: '581d0d45-9165-47e8-84d9-678599938811',
11
+ * }
12
+ * @param logGroupName the log group name
13
+ * @param logStreamName the log stream name
14
+ * @param awsRequestId the AWS request ID
15
+ */
3
16
  export interface LogStream {
4
17
  logGroupName: string;
5
18
  logStreamName: string;
6
19
  awsRequestId: string;
7
20
  }
21
+ /**
22
+ * JobData is the data structure for a job, keeping track of the job status, result, logs, and metadata
23
+ * @param id the id of the user
24
+ * @param jobId the id of the job
25
+ * @param taskId the id of the task
26
+ * @param developer the developer of the repo executing the job
27
+ * @param repo the repo executing the job
28
+ * @param task the task to execute
29
+ * @param userId the id of the user
30
+ * @param args the arguments for the job
31
+ * @param metadata the metadata for the job
32
+ * @param chain the blockchain to execute the job on
33
+ * @param webhook the webhook to call after the job finishes
34
+ * @param cloudhook the cloudhook to call after the job finishes
35
+ * @param cloudIteration the recursive call number, must be less than 5
36
+ * @param previousJob the previous job data, provided in case of the cloudhook
37
+ *
38
+ * @param filename the filename where transactions data is stored
39
+ * @param txNumber the number of transactions
40
+ * @param timeCreated the time the job was created
41
+ * @param timeCreatedString the time the job was created as a string
42
+ * @param timeStarted the time the job was started
43
+ * @param timeFinished the time the job was finished
44
+ * @param timeFailed the time the job failed
45
+ * @param timeUsed the time the job result was used
46
+ * @param billedDuration the duration the job was billed for
47
+ * @param feeMINA the fee in MINA
48
+ * @param feeUSD the fee in USD
49
+ * @param jobStatus the status of the job
50
+ * @param maxAttempts the maximum number of attempts
51
+ * @param result the result of the job
52
+ * @param logStreams the log streams of the job
53
+ * @param logs the logs of the job
54
+ */
8
55
  export interface JobData {
9
56
  id: string;
10
57
  jobId: string;