sdk-triggerx 0.1.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 (105) hide show
  1. package/.eslintrc.json +16 -0
  2. package/README.md +249 -0
  3. package/dist/api/jobs.d.ts +15 -0
  4. package/dist/api/jobs.js +138 -0
  5. package/dist/api/tasks.d.ts +4 -0
  6. package/dist/api/tasks.js +13 -0
  7. package/dist/client.d.ts +7 -0
  8. package/dist/client.js +27 -0
  9. package/dist/config.d.ts +6 -0
  10. package/dist/config.js +15 -0
  11. package/dist/contracts/JobRegistry.d.ts +12 -0
  12. package/dist/contracts/JobRegistry.js +26 -0
  13. package/dist/contracts/TriggerXContract.d.ts +6 -0
  14. package/dist/contracts/TriggerXContract.js +14 -0
  15. package/dist/contracts/abi/JobRegistry.json +1554 -0
  16. package/dist/contracts/index.d.ts +1 -0
  17. package/dist/contracts/index.js +17 -0
  18. package/dist/index.d.ts +8 -0
  19. package/dist/index.js +26 -0
  20. package/dist/src/api/checkTgBalance.d.ts +2 -0
  21. package/dist/src/api/checkTgBalance.js +35 -0
  22. package/dist/src/api/deleteJob.d.ts +2 -0
  23. package/dist/src/api/deleteJob.js +20 -0
  24. package/dist/src/api/getJobDataById.d.ts +3 -0
  25. package/dist/src/api/getJobDataById.js +21 -0
  26. package/dist/src/api/getUserData.d.ts +3 -0
  27. package/dist/src/api/getUserData.js +21 -0
  28. package/dist/src/api/getjob.d.ts +8 -0
  29. package/dist/src/api/getjob.js +23 -0
  30. package/dist/src/api/jobs.d.ts +18 -0
  31. package/dist/src/api/jobs.js +270 -0
  32. package/dist/src/api/tasks.d.ts +4 -0
  33. package/dist/src/api/tasks.js +13 -0
  34. package/dist/src/api/topupTg.d.ts +2 -0
  35. package/dist/src/api/topupTg.js +19 -0
  36. package/dist/src/api/withdrawTg.d.ts +8 -0
  37. package/dist/src/api/withdrawTg.js +27 -0
  38. package/dist/src/client.d.ts +10 -0
  39. package/dist/src/client.js +37 -0
  40. package/dist/src/config.d.ts +6 -0
  41. package/dist/src/config.js +15 -0
  42. package/dist/src/contracts/JobRegistry.d.ts +12 -0
  43. package/dist/src/contracts/JobRegistry.js +24 -0
  44. package/dist/src/contracts/TriggerXContract.d.ts +6 -0
  45. package/dist/src/contracts/TriggerXContract.js +14 -0
  46. package/dist/src/contracts/abi/GasRegistry.json +607 -0
  47. package/dist/src/contracts/abi/JobRegistry.json +1554 -0
  48. package/dist/src/contracts/index.d.ts +1 -0
  49. package/dist/src/contracts/index.js +17 -0
  50. package/dist/src/index.d.ts +7 -0
  51. package/dist/src/index.js +25 -0
  52. package/dist/src/types.d.ts +246 -0
  53. package/dist/src/types.js +15 -0
  54. package/dist/src/utils/errors.d.ts +4 -0
  55. package/dist/src/utils/errors.js +17 -0
  56. package/dist/test/createJobExample.d.ts +1 -0
  57. package/dist/test/createJobExample.js +77 -0
  58. package/dist/test/deleteJob.test.d.ts +1 -0
  59. package/dist/test/deleteJob.test.js +22 -0
  60. package/dist/test/example.test.d.ts +1 -0
  61. package/dist/test/example.test.js +11 -0
  62. package/dist/test/getJobDataById.test.d.ts +1 -0
  63. package/dist/test/getJobDataById.test.js +23 -0
  64. package/dist/test/getUserData.test.d.ts +1 -0
  65. package/dist/test/getUserData.test.js +22 -0
  66. package/dist/test/getjob.test.d.ts +1 -0
  67. package/dist/test/getjob.test.js +21 -0
  68. package/dist/test/testTgFunctions.d.ts +1 -0
  69. package/dist/test/testTgFunctions.js +56 -0
  70. package/dist/types.d.ts +134 -0
  71. package/dist/types.js +15 -0
  72. package/dist/utils/errors.d.ts +4 -0
  73. package/dist/utils/errors.js +17 -0
  74. package/jest.config.js +7 -0
  75. package/package.json +32 -0
  76. package/scripts/deploy.ts +9 -0
  77. package/src/api/checkTgBalance.ts +27 -0
  78. package/src/api/deleteJob.ts +22 -0
  79. package/src/api/getJobDataById.ts +24 -0
  80. package/src/api/getUserData.ts +24 -0
  81. package/src/api/getjob.ts +26 -0
  82. package/src/api/jobs.ts +303 -0
  83. package/src/api/topupTg.ts +17 -0
  84. package/src/api/withdrawTg.ts +25 -0
  85. package/src/client.ts +38 -0
  86. package/src/config.ts +16 -0
  87. package/src/contracts/JobRegistry.ts +45 -0
  88. package/src/contracts/TriggerXContract.ts +14 -0
  89. package/src/contracts/abi/.gitkeep +1 -0
  90. package/src/contracts/abi/GasRegistry.json +607 -0
  91. package/src/contracts/abi/JobRegistry.json +1554 -0
  92. package/src/contracts/index.ts +1 -0
  93. package/src/index.ts +7 -0
  94. package/src/types.ts +262 -0
  95. package/src/utils/errors.ts +13 -0
  96. package/test/createJobExample.ts +84 -0
  97. package/test/deleteJob.test.ts +25 -0
  98. package/test/example.test.d.ts +1 -0
  99. package/test/example.test.js +11 -0
  100. package/test/example.test.ts +10 -0
  101. package/test/getJobDataById.test.ts +27 -0
  102. package/test/getUserData.test.ts +25 -0
  103. package/test/getjob.test.ts +23 -0
  104. package/test/testTgFunctions.ts +56 -0
  105. package/tsconfig.json +16 -0
package/.eslintrc.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "parser": "@typescript-eslint/parser",
3
+ "extends": [
4
+ "plugin:@typescript-eslint/recommended"
5
+ ],
6
+ "env": {
7
+ "node": true,
8
+ "es2020": true,
9
+ "jest": true
10
+ },
11
+ "parserOptions": {
12
+ "ecmaVersion": 2020,
13
+ "sourceType": "module"
14
+ },
15
+ "rules": {}
16
+ }
package/README.md ADDED
@@ -0,0 +1,249 @@
1
+ # 🚀 TriggerX SDK
2
+
3
+ **SDK for interacting with the TriggerX backend and smart contracts.**
4
+ Supports job automation on EVM-compatible chains using time, event, or condition-based triggers.
5
+
6
+ ---
7
+
8
+ ## ✨ Features
9
+
10
+ - 🔧 Easy API integration for job and user management
11
+ - 🔗 Smart contract interaction for job creation and deletion
12
+ - 📅 Supports time-based, event-based, and condition-based jobs
13
+ - 🔐 TypeScript support with clean types
14
+ - 🧠 Dynamic argument fetching via external scripts (e.g., IPFS)
15
+
16
+ ---
17
+
18
+ ## 📦 Installation
19
+
20
+ ```bash
21
+ npm install sdk-triggerx
22
+ ```
23
+
24
+ ---
25
+
26
+ ## 🛠️ Usage Guide
27
+
28
+ ### 1. Initialize the Client
29
+
30
+ ```ts
31
+ import { TriggerXClient } from 'sdk-triggerx';
32
+
33
+ const client = new TriggerXClient('YOUR_API_KEY');
34
+ ```
35
+
36
+ ---
37
+
38
+ ### 2. Create a Job
39
+
40
+ #### Supported Job Types
41
+
42
+ - `JobType.Time`: Interval or Cron-based triggers
43
+ - `JobType.Event`: Smart contract event-based triggers
44
+ - `JobType.Condition`: API or contract-based conditional triggers
45
+
46
+ #### Supported Argument Types
47
+
48
+ - `ArgType.Static`: Hardcoded values
49
+ - `ArgType.Dynamic`: Runtime values fetched from a script
50
+
51
+ ---
52
+
53
+ #### 🕒 Example: Time-based Static Job
54
+
55
+ ```ts
56
+ import { createJob, JobType, ArgType } from 'sdk-triggerx';
57
+
58
+ const jobInput = {
59
+ jobType: JobType.Time,
60
+ argType: ArgType.Static,
61
+ userAddress: '0x...',
62
+ etherBalance: 10000000000000000,
63
+ tokenBalance: 10000000000000000000,
64
+ jobTitle: 'My Time Job',
65
+ timeFrame: 36,
66
+ scheduleType: 'interval',
67
+ timeInterval: 33,
68
+ cronExpression: '0 0 * * *',
69
+ specificSchedule: '2025-01-01 00:00:00',
70
+ timezone: 'Asia/Calcutta',
71
+ recurring: false,
72
+ jobCostPrediction: 0.1,
73
+ createdChainId: '11155420',
74
+ targetChainId: '11155420',
75
+ targetContractAddress: '0x...',
76
+ targetFunction: 'incrementBy',
77
+ abi: '[...]',
78
+ isImua: true,
79
+ arguments: ['3'],
80
+ dynamicArgumentsScriptUrl: '',
81
+ };
82
+
83
+ const signer = /* ethers.Signer instance */;
84
+ const result = await createJob(client, { jobInput, signer });
85
+ console.log(result);
86
+ ```
87
+
88
+ ---
89
+
90
+ #### 📟 Example: Event-based Dynamic Job
91
+
92
+ ```ts
93
+ const jobInput = {
94
+ jobType: JobType.Event,
95
+ argType: ArgType.Dynamic,
96
+ userAddress: '0x...',
97
+ etherBalance: 10000000000000000,
98
+ tokenBalance: 10000000000000000000,
99
+ jobTitle: 'My Event Job',
100
+ timeFrame: 36,
101
+ recurring: true,
102
+ jobCostPrediction: 0.2,
103
+ timezone: 'Asia/Calcutta',
104
+ createdChainId: '11155420',
105
+ triggerChainId: '11155420',
106
+ triggerContractAddress: '0x...',
107
+ triggerEvent: 'CounterIncremented',
108
+ targetChainId: '11155420',
109
+ targetContractAddress: '0x...',
110
+ targetFunction: 'incrementBy',
111
+ abi: '[...]',
112
+ arguments: [],
113
+ dynamicArgumentsScriptUrl: 'https://your-ipfs-url',
114
+ isImua: true,
115
+ };
116
+
117
+ const result = await createJob(client, { jobInput, signer });
118
+ console.log(result);
119
+ ```
120
+
121
+ ---
122
+
123
+ #### 📈 Example: Condition-based Static Job
124
+
125
+ ```ts
126
+ const jobInput = {
127
+ jobType: JobType.Condition,
128
+ argType: ArgType.Static,
129
+ userAddress: '0x...',
130
+ etherBalance: 10000000000000000,
131
+ tokenBalance: 10000000000000000000,
132
+ jobTitle: 'My Condition Job',
133
+ timeFrame: 36,
134
+ recurring: false,
135
+ jobCostPrediction: 0.3,
136
+ timezone: 'Asia/Calcutta',
137
+ createdChainId: '11155420',
138
+ conditionType: 'greaterThan',
139
+ upperLimit: 100,
140
+ lowerLimit: 10,
141
+ valueSourceType: 'api',
142
+ valueSourceUrl: 'https://api.example.com/value',
143
+ targetChainId: '11155420',
144
+ targetContractAddress: '0x...',
145
+ targetFunction: 'incrementBy',
146
+ abi: '[...]',
147
+ arguments: ['5'],
148
+ dynamicArgumentsScriptUrl: '',
149
+ isImua: true,
150
+ };
151
+
152
+ const result = await createJob(client, { jobInput, signer });
153
+ console.log(result);
154
+ ```
155
+
156
+ ---
157
+
158
+ ### 3. Fetch Job Data
159
+
160
+ #### 🔍 Get All Jobs
161
+
162
+ ```ts
163
+ import { getJobData } from 'sdk-triggerx';
164
+
165
+ const jobs = await getJobData(client);
166
+ console.log(jobs);
167
+ ```
168
+
169
+ #### 🔎 Get Job by ID
170
+
171
+ ```ts
172
+ import { getJobDataById } from 'sdk-triggerx';
173
+
174
+ const jobId = 'YOUR_JOB_ID';
175
+ const jobData = await getJobDataById(client, jobId);
176
+ console.log(jobData);
177
+ ```
178
+
179
+ ---
180
+
181
+ ### 4. Delete a Job
182
+
183
+ ```ts
184
+ import { deleteJob } from 'sdk-triggerx';
185
+
186
+ const jobId = 'YOUR_JOB_ID';
187
+ await deleteJob(client, jobId);
188
+ console.log('Job deleted');
189
+ ```
190
+
191
+ ---
192
+
193
+ ### 5. Get User Data
194
+
195
+ ```ts
196
+ import { getUserData } from 'sdk-triggerx';
197
+
198
+ const userAddress = '0x...';
199
+ const userData = await getUserData(client, userAddress);
200
+ console.log(userData);
201
+ ```
202
+
203
+ ---
204
+
205
+ ## 📘 API Reference
206
+
207
+ All input and output types are defined in:
208
+
209
+ ```
210
+ src/types.ts
211
+ ```
212
+
213
+ Includes:
214
+
215
+ - `JobInput`, `JobType`, `ArgType`
216
+ - `ConditionType`, `ScheduleType`
217
+ - `UserData`, `JobData`, etc.
218
+
219
+ ---
220
+
221
+ ## 🗂️ Project Structure
222
+
223
+ ```
224
+ sdk-triggerx/
225
+ ├── index.ts # Entry point
226
+ ├── client.ts # Axios client wrapper
227
+ ├── config.ts # Config and environment loader
228
+ ├── types.ts # Shared interfaces and enums
229
+ ├── api/ # Backend API modules
230
+ ├── contracts/ # Contract logic and ABIs
231
+ ├── utils/ # Error and helper utilities
232
+ ├── test/ # Unit/integration tests
233
+ └── scripts/ # Example/test scripts
234
+ ```
235
+
236
+ ---
237
+
238
+ ## ✅ Requirements
239
+
240
+ - Node.js ≥ 16
241
+ - ethers.js for signer interactions
242
+ - IPFS-hosted script for dynamic arguments (optional)
243
+
244
+ ---
245
+
246
+ ## 📝 License
247
+
248
+ **MIT License**
249
+
@@ -0,0 +1,15 @@
1
+ import { TriggerXClient } from '../client';
2
+ import { TimeBasedJobInput, EventBasedJobInput, ConditionBasedJobInput, CreateJobData, JobResponse } from '../types';
3
+ export declare function toCreateJobDataFromTime(input: TimeBasedJobInput): CreateJobData;
4
+ export declare function toCreateJobDataFromEvent(input: EventBasedJobInput): CreateJobData;
5
+ export declare function toCreateJobDataFromCondition(input: ConditionBasedJobInput): CreateJobData;
6
+ export interface CreateJobParams {
7
+ jobInput: TimeBasedJobInput | EventBasedJobInput | ConditionBasedJobInput;
8
+ privateKey: string;
9
+ providerUrl: string;
10
+ contractAddress: string;
11
+ abi: any;
12
+ encodedData: string;
13
+ jobType: number;
14
+ }
15
+ export declare function createJob(client: TriggerXClient, params: CreateJobParams): Promise<JobResponse>;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toCreateJobDataFromTime = toCreateJobDataFromTime;
4
+ exports.toCreateJobDataFromEvent = toCreateJobDataFromEvent;
5
+ exports.toCreateJobDataFromCondition = toCreateJobDataFromCondition;
6
+ exports.createJob = createJob;
7
+ const JobRegistry_1 = require("../contracts/JobRegistry");
8
+ const JOB_ID = '300949528249665590178224313442040528409305273634097553067152835846309150732';
9
+ const DYNAMIC_ARGS_URL = 'https://teal-random-koala-993.mypinata.cloud/ipfs/bafkreif426p7t7takzhw3g6we2h6wsvf27p5jxj3gaiynqf22p3jvhx4la';
10
+ function toCreateJobDataFromTime(input) {
11
+ return {
12
+ job_id: JOB_ID,
13
+ user_address: input.userAddress,
14
+ ether_balance: input.etherBalance,
15
+ token_balance: input.tokenBalance,
16
+ job_title: input.jobTitle,
17
+ task_definition_id: input.dynamicArgumentsScriptUrl ? 2 : 1,
18
+ custom: true,
19
+ time_frame: input.timeFrame,
20
+ recurring: input.recurring ?? false,
21
+ job_cost_prediction: input.jobCostPrediction,
22
+ timezone: input.timezone,
23
+ created_chain_id: input.createdChainId,
24
+ schedule_type: input.scheduleType,
25
+ time_interval: input.timeInterval,
26
+ cron_expression: input.cronExpression,
27
+ specific_schedule: input.specificSchedule,
28
+ target_chain_id: input.targetChainId,
29
+ target_contract_address: input.targetContractAddress,
30
+ target_function: input.targetFunction,
31
+ abi: input.abi,
32
+ arg_type: input.dynamicArgumentsScriptUrl ? 2 : 1,
33
+ arguments: input.arguments,
34
+ dynamic_arguments_script_url: input.dynamicArgumentsScriptUrl,
35
+ is_imua: input.isImua ?? true,
36
+ };
37
+ }
38
+ function toCreateJobDataFromEvent(input) {
39
+ return {
40
+ job_id: JOB_ID,
41
+ user_address: input.userAddress,
42
+ ether_balance: input.etherBalance,
43
+ token_balance: input.tokenBalance,
44
+ job_title: input.jobTitle,
45
+ task_definition_id: input.dynamicArgumentsScriptUrl ? 4 : 3,
46
+ custom: true,
47
+ time_frame: input.timeFrame,
48
+ recurring: input.recurring ?? false,
49
+ job_cost_prediction: input.jobCostPrediction,
50
+ timezone: input.timezone,
51
+ created_chain_id: input.createdChainId,
52
+ trigger_chain_id: input.triggerChainId,
53
+ trigger_contract_address: input.triggerContractAddress,
54
+ trigger_event: input.triggerEvent,
55
+ target_chain_id: input.targetChainId,
56
+ target_contract_address: input.targetContractAddress,
57
+ target_function: input.targetFunction,
58
+ abi: input.abi,
59
+ arg_type: input.dynamicArgumentsScriptUrl ? 2 : 1,
60
+ arguments: input.arguments,
61
+ dynamic_arguments_script_url: input.dynamicArgumentsScriptUrl,
62
+ is_imua: input.isImua ?? true,
63
+ };
64
+ }
65
+ function toCreateJobDataFromCondition(input) {
66
+ return {
67
+ job_id: JOB_ID,
68
+ user_address: input.userAddress,
69
+ ether_balance: input.etherBalance,
70
+ token_balance: input.tokenBalance,
71
+ job_title: input.jobTitle,
72
+ task_definition_id: input.dynamicArgumentsScriptUrl ? 6 : 5,
73
+ custom: true,
74
+ time_frame: input.timeFrame,
75
+ recurring: input.recurring ?? false,
76
+ job_cost_prediction: input.jobCostPrediction,
77
+ timezone: input.timezone,
78
+ created_chain_id: input.createdChainId,
79
+ condition_type: input.conditionType,
80
+ upper_limit: input.upperLimit,
81
+ lower_limit: input.lowerLimit,
82
+ value_source_type: input.valueSourceType,
83
+ value_source_url: input.valueSourceUrl,
84
+ target_chain_id: input.targetChainId,
85
+ target_contract_address: input.targetContractAddress,
86
+ target_function: input.targetFunction,
87
+ abi: input.abi,
88
+ arg_type: input.dynamicArgumentsScriptUrl ? 2 : 1,
89
+ arguments: input.arguments,
90
+ dynamic_arguments_script_url: input.dynamicArgumentsScriptUrl,
91
+ is_imua: input.isImua ?? true,
92
+ };
93
+ }
94
+ async function createJob(client, params) {
95
+ // 1. Call contract to create job and get jobId
96
+ const { jobInput, privateKey, providerUrl, contractAddress, abi, encodedData, jobType } = params;
97
+ let jobTitle, timeFrame, targetContractAddress;
98
+ if ('jobTitle' in jobInput)
99
+ jobTitle = jobInput.jobTitle;
100
+ if ('timeFrame' in jobInput)
101
+ timeFrame = jobInput.timeFrame;
102
+ if ('targetContractAddress' in jobInput)
103
+ targetContractAddress = jobInput.targetContractAddress;
104
+ const jobId = await (0, JobRegistry_1.createJobOnChain)({
105
+ jobTitle: jobTitle,
106
+ jobType,
107
+ timeFrame: timeFrame,
108
+ targetContractAddress: targetContractAddress,
109
+ encodedData,
110
+ contractAddress,
111
+ abi,
112
+ privateKey,
113
+ providerUrl,
114
+ });
115
+ // 2. Convert input to CreateJobData
116
+ let jobData;
117
+ if ('scheduleType' in jobInput) {
118
+ jobData = toCreateJobDataFromTime(jobInput);
119
+ }
120
+ else if ('triggerChainId' in jobInput) {
121
+ jobData = toCreateJobDataFromEvent(jobInput);
122
+ }
123
+ else {
124
+ jobData = toCreateJobDataFromCondition(jobInput);
125
+ }
126
+ // 3. Set the job_id from contract
127
+ jobData.job_id = jobId;
128
+ // 4. Call the API
129
+ try {
130
+ const res = await client.post('/api/jobs', [jobData], {
131
+ headers: { 'Content-Type': 'application/json', 'X-API-KEY': 'ADMIN' },
132
+ });
133
+ return { success: true, data: res };
134
+ }
135
+ catch (error) {
136
+ return { success: false, error: error.message };
137
+ }
138
+ }
@@ -0,0 +1,4 @@
1
+ import { TriggerXClient } from '../client';
2
+ import { Task, ApiResponse } from '../types';
3
+ export declare function getTasks(client: TriggerXClient): Promise<ApiResponse<Task[]>>;
4
+ export declare function createTask(client: TriggerXClient, task: Partial<Task>): Promise<ApiResponse<Task>>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTasks = getTasks;
4
+ exports.createTask = createTask;
5
+ async function getTasks(client) {
6
+ // Placeholder implementation
7
+ return client.get('/tasks');
8
+ }
9
+ async function createTask(client, task) {
10
+ // Placeholder implementation
11
+ // return client.post<ApiResponse<Task>>('/tasks', task);
12
+ return { data: { id: '1', name: task.name || '', status: 'pending', createdAt: new Date().toISOString() } };
13
+ }
@@ -0,0 +1,7 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ export declare class TriggerXClient {
3
+ private client;
4
+ constructor(config?: AxiosRequestConfig);
5
+ get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
6
+ post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
7
+ }
package/dist/client.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TriggerXClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const config_1 = require("./config");
9
+ class TriggerXClient {
10
+ constructor(config) {
11
+ const baseConfig = (0, config_1.getConfig)();
12
+ this.client = axios_1.default.create({
13
+ baseURL: config?.baseURL || baseConfig.apiUrl || 'http://localhost:9002',
14
+ headers: { 'Authorization': `Bearer ${baseConfig.apiKey}` },
15
+ ...config,
16
+ });
17
+ }
18
+ async get(url, config) {
19
+ const response = await this.client.get(url, config);
20
+ return response.data;
21
+ }
22
+ async post(url, data, config) {
23
+ const response = await this.client.post(url, data, config);
24
+ return response.data;
25
+ }
26
+ }
27
+ exports.TriggerXClient = TriggerXClient;
@@ -0,0 +1,6 @@
1
+ export interface SDKConfig {
2
+ apiKey: string;
3
+ apiUrl: string;
4
+ contractAddress: string;
5
+ }
6
+ export declare function getConfig(): SDKConfig;
package/dist/config.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getConfig = getConfig;
7
+ const dotenv_1 = __importDefault(require("dotenv"));
8
+ dotenv_1.default.config();
9
+ function getConfig() {
10
+ return {
11
+ apiKey: process.env.API_KEY || '',
12
+ apiUrl: process.env.API_URL || '',
13
+ contractAddress: process.env.CONTRACT_ADDRESS || '',
14
+ };
15
+ }
@@ -0,0 +1,12 @@
1
+ export interface CreateJobOnChainParams {
2
+ jobTitle: string;
3
+ jobType: number;
4
+ timeFrame: number;
5
+ targetContractAddress: string;
6
+ encodedData: string;
7
+ contractAddress: string;
8
+ abi: any;
9
+ privateKey: string;
10
+ providerUrl: string;
11
+ }
12
+ export declare function createJobOnChain({ jobTitle, jobType, timeFrame, targetContractAddress, encodedData, contractAddress, abi, privateKey, providerUrl, }: CreateJobOnChainParams): Promise<string>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createJobOnChain = createJobOnChain;
4
+ const ethers_1 = require("ethers");
5
+ async function createJobOnChain({ jobTitle, jobType, timeFrame, targetContractAddress, encodedData, contractAddress, abi, privateKey, providerUrl, }) {
6
+ const provider = new ethers_1.ethers.JsonRpcProvider(providerUrl);
7
+ const wallet = new ethers_1.ethers.Wallet(privateKey, provider);
8
+ const contract = new ethers_1.ethers.Contract(contractAddress, abi, wallet);
9
+ const tx = await contract.createJob(jobTitle, jobType, timeFrame, targetContractAddress, encodedData);
10
+ const receipt = await tx.wait();
11
+ // Try to extract jobId from event logs (assume event is JobCreated(jobId,...))
12
+ const event = receipt.logs
13
+ .map((log) => {
14
+ try {
15
+ return contract.interface.parseLog(log);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ })
21
+ .find((e) => e && e.name === 'JobCreated');
22
+ if (event && event.args && event.args[0]) {
23
+ return event.args[0].toString();
24
+ }
25
+ throw new Error('Job ID not found in contract events');
26
+ }
@@ -0,0 +1,6 @@
1
+ import { Provider } from 'ethers';
2
+ export declare class TriggerXContract {
3
+ private contract;
4
+ constructor(address: string, abi: any, provider: Provider);
5
+ getTaskCount(): Promise<number>;
6
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TriggerXContract = void 0;
4
+ const ethers_1 = require("ethers");
5
+ class TriggerXContract {
6
+ constructor(address, abi, provider) {
7
+ this.contract = new ethers_1.Contract(address, abi, provider);
8
+ }
9
+ async getTaskCount() {
10
+ // Placeholder for contract call
11
+ return this.contract.taskCount();
12
+ }
13
+ }
14
+ exports.TriggerXContract = TriggerXContract;