@nosana/kit 2.0.18 → 2.0.23

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 (80) hide show
  1. package/README.md +96 -24
  2. package/dist/NosanaClient.d.ts +5 -5
  3. package/dist/NosanaClient.js +6 -5
  4. package/dist/NosanaClient.js.map +1 -1
  5. package/dist/index.d.ts +9 -9
  6. package/dist/index.js +5 -5
  7. package/dist/index.js.map +1 -1
  8. package/dist/services/programs/jobs/JobsProgram.d.ts +152 -0
  9. package/dist/services/programs/{JobsProgram.js → jobs/JobsProgram.js} +133 -224
  10. package/dist/services/programs/jobs/JobsProgram.js.map +1 -0
  11. package/dist/services/programs/jobs/index.d.ts +1 -0
  12. package/dist/services/programs/jobs/index.js +2 -0
  13. package/dist/services/programs/jobs/index.js.map +1 -0
  14. package/dist/services/programs/jobs/instructions/delist.d.ts +9 -0
  15. package/dist/services/programs/jobs/instructions/delist.js +29 -0
  16. package/dist/services/programs/jobs/instructions/delist.js.map +1 -0
  17. package/dist/services/programs/jobs/instructions/end.d.ts +9 -0
  18. package/dist/services/programs/jobs/instructions/end.js +36 -0
  19. package/dist/services/programs/jobs/instructions/end.js.map +1 -0
  20. package/dist/services/programs/jobs/instructions/extend.d.ts +11 -0
  21. package/dist/services/programs/jobs/instructions/extend.js +27 -0
  22. package/dist/services/programs/jobs/instructions/extend.js.map +1 -0
  23. package/dist/services/programs/jobs/instructions/index.d.ts +4 -0
  24. package/dist/services/programs/jobs/instructions/index.js +5 -0
  25. package/dist/services/programs/jobs/instructions/index.js.map +1 -0
  26. package/dist/services/programs/jobs/instructions/post.d.ts +13 -0
  27. package/dist/services/programs/jobs/instructions/post.js +36 -0
  28. package/dist/services/programs/jobs/instructions/post.js.map +1 -0
  29. package/dist/services/programs/jobs/instructions/types.d.ts +16 -0
  30. package/dist/services/programs/jobs/instructions/types.js +2 -0
  31. package/dist/services/programs/jobs/instructions/types.js.map +1 -0
  32. package/dist/services/programs/jobs/monitor/index.d.ts +3 -0
  33. package/dist/services/programs/jobs/monitor/index.js +3 -0
  34. package/dist/services/programs/jobs/monitor/index.js.map +1 -0
  35. package/dist/services/programs/jobs/monitor/monitor.d.ts +22 -0
  36. package/dist/services/programs/jobs/monitor/monitor.js +180 -0
  37. package/dist/services/programs/jobs/monitor/monitor.js.map +1 -0
  38. package/dist/services/programs/jobs/monitor/types.d.ts +27 -0
  39. package/dist/services/programs/jobs/monitor/types.js +9 -0
  40. package/dist/services/programs/jobs/monitor/types.js.map +1 -0
  41. package/dist/services/programs/{MerkleDistributorProgram.d.ts → merkleDistributor/MerkleDistributorProgram.d.ts} +4 -4
  42. package/dist/services/programs/{MerkleDistributorProgram.js → merkleDistributor/MerkleDistributorProgram.js} +3 -3
  43. package/dist/services/programs/merkleDistributor/MerkleDistributorProgram.js.map +1 -0
  44. package/dist/services/programs/merkleDistributor/index.d.ts +1 -0
  45. package/dist/services/programs/merkleDistributor/index.js +2 -0
  46. package/dist/services/programs/merkleDistributor/index.js.map +1 -0
  47. package/dist/services/programs/{StakeProgram.d.ts → stake/StakeProgram.d.ts} +4 -4
  48. package/dist/services/programs/{StakeProgram.js → stake/StakeProgram.js} +2 -2
  49. package/dist/services/programs/stake/StakeProgram.js.map +1 -0
  50. package/dist/services/programs/stake/index.d.ts +1 -0
  51. package/dist/services/programs/stake/index.js +2 -0
  52. package/dist/services/programs/stake/index.js.map +1 -0
  53. package/dist/services/{SolanaService.d.ts → solana/SolanaService.d.ts} +31 -3
  54. package/dist/services/{SolanaService.js → solana/SolanaService.js} +84 -3
  55. package/dist/services/solana/SolanaService.js.map +1 -0
  56. package/dist/services/solana/index.d.ts +1 -0
  57. package/dist/services/solana/index.js +2 -0
  58. package/dist/services/solana/index.js.map +1 -0
  59. package/dist/services/token/TokenService.d.ts +63 -0
  60. package/dist/services/{TokenService.js → token/TokenService.js} +69 -2
  61. package/dist/services/token/TokenService.js.map +1 -0
  62. package/dist/services/token/index.d.ts +1 -0
  63. package/dist/services/token/index.js +2 -0
  64. package/dist/services/token/index.js.map +1 -0
  65. package/dist/types.d.ts +3 -1
  66. package/dist/utils/convertHttpToWebSocketUrl.d.ts +28 -0
  67. package/dist/utils/convertHttpToWebSocketUrl.js +37 -0
  68. package/dist/utils/convertHttpToWebSocketUrl.js.map +1 -0
  69. package/dist/utils/getStaticAccounts.d.ts +1 -1
  70. package/dist/utils/index.d.ts +1 -0
  71. package/dist/utils/index.js +1 -0
  72. package/dist/utils/index.js.map +1 -1
  73. package/package.json +4 -4
  74. package/dist/services/SolanaService.js.map +0 -1
  75. package/dist/services/TokenService.d.ts +0 -41
  76. package/dist/services/TokenService.js.map +0 -1
  77. package/dist/services/programs/JobsProgram.d.ts +0 -106
  78. package/dist/services/programs/JobsProgram.js.map +0 -1
  79. package/dist/services/programs/MerkleDistributorProgram.js.map +0 -1
  80. package/dist/services/programs/StakeProgram.js.map +0 -1
@@ -1,11 +1,12 @@
1
- import { generateKeyPairSigner, parseBase64RpcAccount, } from '@solana/kit';
2
- import { ErrorCodes, NosanaError } from '../../errors/NosanaError.js';
3
- import * as programClient from '../../generated_clients/jobs/index.js';
4
- import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
5
1
  import bs58 from 'bs58';
6
2
  import { solBytesArrayToIpfsHash } from '@nosana/ipfs';
7
- import { convertBigIntToNumber } from '../../utils/index.js';
8
- import { getStaticAccounts } from '../../utils/getStaticAccounts.js';
3
+ import { parseBase64RpcAccount } from '@solana/kit';
4
+ import { ErrorCodes, NosanaError } from '../../../errors/NosanaError.js';
5
+ import { convertBigIntToNumber } from '../../../utils/index.js';
6
+ import { getStaticAccounts as getStaticAccountsFn, } from '../../../utils/getStaticAccounts.js';
7
+ import * as Instructions from './instructions/index.js';
8
+ import * as programClient from '../../../generated_clients/jobs/index.js';
9
+ import { createMonitorFunctions } from './monitor/index.js';
9
10
  export var JobState;
10
11
  (function (JobState) {
11
12
  JobState[JobState["QUEUED"] = 0] = "QUEUED";
@@ -18,6 +19,28 @@ export var MarketQueueType;
18
19
  MarketQueueType[MarketQueueType["JOB_QUEUE"] = 0] = "JOB_QUEUE";
19
20
  MarketQueueType[MarketQueueType["NODE_QUEUE"] = 1] = "NODE_QUEUE";
20
21
  })(MarketQueueType || (MarketQueueType = {}));
22
+ // Re-export monitor types for convenience
23
+ export { MonitorEventType } from './monitor/index.js';
24
+ /**
25
+ * Creates a new JobsProgram instance.
26
+ *
27
+ * @param deps - Program dependencies (config, logger, solana service, wallet getter)
28
+ * @returns A JobsProgram instance with methods to interact with the jobs program
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { createJobsProgram } from '@nosana/kit';
33
+ *
34
+ * const jobsProgram = createJobsProgram({
35
+ * config,
36
+ * logger,
37
+ * solana,
38
+ * getWallet,
39
+ * });
40
+ *
41
+ * const job = await jobsProgram.get('job-address');
42
+ * ```
43
+ */
21
44
  export function createJobsProgram(deps, config) {
22
45
  const programId = config.jobsAddress;
23
46
  const client = programClient;
@@ -58,6 +81,18 @@ export function createJobsProgram(deps, config) {
58
81
  ...convertBigIntToNumber(runAccountData),
59
82
  };
60
83
  }
84
+ /**
85
+ * Merge run account data into a job account.
86
+ * Updates the job state to RUNNING and sets node and timeStart from the run account.
87
+ */
88
+ function mergeRunIntoJob(job, run) {
89
+ return {
90
+ ...job,
91
+ state: JobState.RUNNING,
92
+ node: run.node,
93
+ timeStart: run.time,
94
+ };
95
+ }
61
96
  /**
62
97
  * Transform market account to include address and convert types
63
98
  */
@@ -71,131 +106,29 @@ export function createJobsProgram(deps, config) {
71
106
  };
72
107
  }
73
108
  /**
74
- * Set up WebSocket subscription for program notifications
75
- */
76
- async function setupSubscription(abortController) {
77
- try {
78
- // Set up the subscription using the correct API pattern
79
- const subscriptionIterable = await deps.solana.rpcSubscriptions
80
- .programNotifications(programId, { encoding: 'base64' })
81
- .subscribe({ abortSignal: abortController.signal });
82
- return subscriptionIterable;
83
- }
84
- catch (error) {
85
- throw new Error(`Failed to setup subscription: ${error}`);
86
- }
87
- }
88
- /**
89
- * Handle job account update
90
- */
91
- async function handleJobAccount(jobAccount, onJobAccount, _isMonitoring) {
92
- if (onJobAccount) {
93
- try {
94
- await onJobAccount(transformJobAccount(jobAccount));
95
- }
96
- catch (error) {
97
- deps.logger.error(`Error in onJobAccount callback: ${error}`);
98
- throw error;
99
- }
100
- }
101
- deps.logger.debug(`Processed job account ${jobAccount.address.toString()}`);
102
- }
103
- /**
104
- * Handle market account update
105
- */
106
- async function handleMarketAccount(marketAccount, onMarketAccount, _isMonitoring) {
107
- if (onMarketAccount) {
108
- try {
109
- await onMarketAccount(transformMarketAccount(marketAccount));
110
- }
111
- catch (error) {
112
- deps.logger.error(`Error in onMarketAccount callback: ${error}`);
113
- throw error;
114
- }
115
- }
116
- deps.logger.debug(`Processed market account ${marketAccount.address.toString()}`);
117
- }
118
- /**
119
- * Handle run account update
109
+ * Get the required wallet or throw an error if not available
120
110
  */
121
- async function handleRunAccount(runAccount, onRunAccount, _isMonitoring) {
122
- if (onRunAccount) {
123
- try {
124
- await onRunAccount(transformRunAccount(runAccount));
125
- }
126
- catch (error) {
127
- deps.logger.error(`Error in onRunAccount callback: ${error}`);
128
- throw error;
129
- }
111
+ function getRequiredWallet() {
112
+ const wallet = deps.getWallet();
113
+ if (!wallet) {
114
+ throw new NosanaError('Wallet is required for this operation', ErrorCodes.NO_WALLET);
130
115
  }
131
- deps.logger.debug(`Processed run account ${runAccount.address.toString()}`);
116
+ return wallet;
132
117
  }
133
- /**
134
- * Handle account update using callback functions
135
- */
136
- async function handleAccountUpdate(accountData, options, isMonitoring) {
137
- try {
138
- const { account, pubkey } = accountData;
139
- const encodedAccount = parseBase64RpcAccount(pubkey, account);
140
- const accountType = client.identifyNosanaJobsAccount(encodedAccount);
141
- switch (accountType) {
142
- case client.NosanaJobsAccount.JobAccount: {
143
- const jobAccount = client.decodeJobAccount(encodedAccount);
144
- await handleJobAccount(jobAccount, options.onJobAccount, isMonitoring);
145
- break;
146
- }
147
- case client.NosanaJobsAccount.MarketAccount: {
148
- const marketAccount = client.decodeMarketAccount(encodedAccount);
149
- await handleMarketAccount(marketAccount, options.onMarketAccount, isMonitoring);
150
- break;
151
- }
152
- case client.NosanaJobsAccount.RunAccount: {
153
- const runAccount = client.decodeRunAccount(encodedAccount);
154
- await handleRunAccount(runAccount, options.onRunAccount, isMonitoring);
155
- break;
156
- }
157
- default:
158
- deps.logger.error(`No support yet for account type: ${accountType}`);
159
- return;
160
- }
161
- }
162
- catch (error) {
163
- deps.logger.error(`Error in handleAccountUpdate: ${error}`);
164
- }
118
+ function getStaticAccounts() {
119
+ return getStaticAccountsFn(config, deps.solana, staticAccountsCache);
165
120
  }
166
- /**
167
- * Process subscription notifications
168
- */
169
- async function processSubscriptionNotifications(notificationIterable, options, isMonitoring) {
170
- try {
171
- for await (const notification of notificationIterable) {
172
- // Check if monitoring should continue
173
- if (!isMonitoring()) {
174
- deps.logger.info('Monitoring stopped, exiting subscription processing');
175
- break;
176
- }
177
- try {
178
- const { value } = notification;
179
- await handleAccountUpdate(value, options, isMonitoring);
180
- }
181
- catch (error) {
182
- deps.logger.error(`Error handling account update notification: ${error}`);
183
- if (options.onError) {
184
- try {
185
- await options.onError(error instanceof Error ? error : new Error(String(error)));
186
- }
187
- catch (callbackError) {
188
- deps.logger.error(`Error in onError callback: ${callbackError}`);
189
- }
190
- }
191
- }
192
- }
193
- }
194
- catch (error) {
195
- deps.logger.error(`Subscription error: ${error}`);
196
- // Throw the error so the calling function can restart the subscription
197
- throw error;
198
- }
121
+ function createInstructionsHelper(get, getRuns) {
122
+ return {
123
+ deps,
124
+ config,
125
+ client,
126
+ get,
127
+ getRuns,
128
+ getRequiredWallet,
129
+ getStaticAccounts,
130
+ getNosATA: deps.nos.getATA,
131
+ };
199
132
  }
200
133
  return {
201
134
  /**
@@ -469,115 +402,91 @@ export function createJobsProgram(deps, config) {
469
402
  * Post a new job to the marketplace
470
403
  */
471
404
  async post(params) {
472
- const jobKey = await generateKeyPairSigner();
473
- const runKey = await generateKeyPairSigner();
474
- const [associatedTokenAddress] = await findAssociatedTokenPda({
475
- mint: config.nosTokenAddress,
476
- owner: deps.getWallet().address,
477
- tokenProgram: TOKEN_PROGRAM_ADDRESS,
405
+ return Instructions.post(params, createInstructionsHelper(this.get, this.runs));
406
+ },
407
+ async extend(params) {
408
+ return Instructions.extend(params, createInstructionsHelper(this.get, this.runs));
409
+ },
410
+ async delist(params) {
411
+ return Instructions.delist(params, createInstructionsHelper(this.get, this.runs));
412
+ },
413
+ async end(params) {
414
+ return Instructions.end(params, createInstructionsHelper(this.get, this.runs));
415
+ },
416
+ /**
417
+ * Monitor program account updates using async iterators.
418
+ * Automatically merges run account data into job account updates.
419
+ * Uses WebSocket subscriptions with automatic restart on failure.
420
+ *
421
+ * @example
422
+ * ```typescript
423
+ * // Example: Simple monitoring - run accounts are automatically merged into job updates
424
+ * const [eventStream, stop] = await jobsProgram.monitor();
425
+ * for await (const event of eventStream) {
426
+ * if (event.type === MonitorEventType.JOB) {
427
+ * console.log('Job updated:', event.data.address.toString());
428
+ * // event.data will have state, node, and timeStart from run account if it exists
429
+ * } else if (event.type === MonitorEventType.MARKET) {
430
+ * console.log('Market updated:', event.data.address.toString());
431
+ * }
432
+ * }
433
+ * // Stop monitoring when done
434
+ * stop();
435
+ * ```
436
+ *
437
+ * @returns A tuple of [eventStream, stopFunction]
438
+ */
439
+ async monitor() {
440
+ const monitorFunctions = createMonitorFunctions(this.get, this.runs, {
441
+ deps,
442
+ config,
443
+ client,
444
+ transformJobAccount,
445
+ transformRunAccount,
446
+ transformMarketAccount,
447
+ mergeRunIntoJob,
478
448
  });
479
- try {
480
- const staticAccounts = await getStaticAccounts(config, deps.solana, staticAccountsCache);
481
- // Create the list instruction
482
- const instruction = client.getListInstruction({
483
- job: jobKey,
484
- market: params.market,
485
- run: runKey,
486
- user: associatedTokenAddress,
487
- vault: await deps.solana.pda([params.market, config.nosTokenAddress], staticAccounts.jobsProgram),
488
- payer: deps.getWallet(),
489
- rewardsReflection: staticAccounts.rewardsReflection,
490
- rewardsVault: staticAccounts.rewardsVault,
491
- authority: deps.getWallet(),
492
- rewardsProgram: staticAccounts.rewardsProgram,
493
- ipfsJob: bs58.decode(params.ipfsHash).subarray(2),
494
- timeout: params.timeout,
495
- });
496
- return instruction;
497
- }
498
- catch (err) {
499
- const errorMessage = `Failed to create list instruction: ${err instanceof Error ? err.message : String(err)}`;
500
- deps.logger.error(errorMessage);
501
- throw new Error(errorMessage);
502
- }
449
+ return monitorFunctions.monitor();
503
450
  },
504
451
  /**
505
- * Monitor program account updates using callback functions
506
- * Uses WebSocket subscriptions with automatic restart on failure
452
+ * Monitor program account updates with detailed events for each account type.
453
+ * Uses WebSocket subscriptions with automatic restart on failure.
454
+ * Provides separate events for job, market, and run accounts.
507
455
  *
508
456
  * @example
509
457
  * ```typescript
510
458
  * // Example: Monitor job accounts and save to file
511
- * const stopMonitoring = await jobsProgram.monitor({
512
- * onJobAccount: async (jobAccount) => {
513
- * console.log('Job updated:', jobAccount.address.toString());
514
- * // Save to database, file, or process as needed
515
- * },
516
- * onRunAccount: async (runAccount) => {
517
- * console.log('Run updated:', runAccount.address.toString());
518
- * },
519
- * onError: async (error, accountType) => {
520
- * console.error('Error processing account:', error, accountType);
459
+ * const [eventStream, stop] = await jobsProgram.monitorDetailed();
460
+ * for await (const event of eventStream) {
461
+ * switch (event.type) {
462
+ * case MonitorEventType.JOB:
463
+ * console.log('Job updated:', event.data.address.toString());
464
+ * break;
465
+ * case MonitorEventType.MARKET:
466
+ * console.log('Market updated:', event.data.address.toString());
467
+ * break;
468
+ * case MonitorEventType.RUN:
469
+ * console.log('Run updated:', event.data.address.toString());
470
+ * break;
521
471
  * }
522
- * });
523
- *
472
+ * }
524
473
  * // Stop monitoring when done
525
- * stopMonitoring();
474
+ * stop();
526
475
  * ```
527
476
  *
528
- * @param options Configuration options for monitoring
529
- * @returns A function to stop monitoring
477
+ * @returns A tuple of [eventStream, stopFunction]
530
478
  */
531
- async monitor(options = {}) {
532
- const { onJobAccount, onMarketAccount, onRunAccount, onError } = options;
533
- try {
534
- deps.logger.info(`Starting to monitor job program account updates for program: ${programId}`);
535
- let abortController = null;
536
- let isMonitoring = true;
537
- // Function to stop all monitoring
538
- const stopMonitoring = () => {
539
- isMonitoring = false;
540
- if (abortController) {
541
- abortController.abort();
542
- }
543
- deps.logger.info(`Stopped monitoring job program account updates`);
544
- };
545
- // Function to start/restart subscription with retry logic
546
- const startSubscription = async () => {
547
- while (isMonitoring) {
548
- try {
549
- deps.logger.info('Attempting to establish WebSocket subscription...');
550
- abortController = new AbortController();
551
- const subscriptionIterable = await setupSubscription(abortController);
552
- deps.logger.info('Successfully established WebSocket subscription');
553
- // Start processing subscription notifications
554
- await processSubscriptionNotifications(subscriptionIterable, { onJobAccount, onMarketAccount, onRunAccount, onError }, () => isMonitoring);
555
- }
556
- catch (error) {
557
- deps.logger.warn(`WebSocket subscription failed: ${error}`);
558
- // Clean up current subscription
559
- if (abortController) {
560
- abortController.abort();
561
- abortController = null;
562
- }
563
- if (isMonitoring) {
564
- deps.logger.info('Retrying WebSocket subscription in 5 seconds...');
565
- await new Promise((resolve) => setTimeout(resolve, 5000));
566
- }
567
- }
568
- }
569
- };
570
- // Start the subscription loop
571
- startSubscription().catch((error) => {
572
- deps.logger.error(`Failed to start subscription loop: ${error}`);
573
- });
574
- deps.logger.info(`Successfully started monitoring job program account updates`);
575
- return stopMonitoring;
576
- }
577
- catch (error) {
578
- deps.logger.error(`Failed to start monitoring job program accounts: ${error}`);
579
- throw new NosanaError('Failed to start monitoring job program accounts', ErrorCodes.RPC_ERROR, error);
580
- }
479
+ async monitorDetailed() {
480
+ const monitorFunctions = createMonitorFunctions(this.get, this.runs, {
481
+ deps,
482
+ config,
483
+ client,
484
+ transformJobAccount,
485
+ transformRunAccount,
486
+ transformMarketAccount,
487
+ mergeRunIntoJob,
488
+ });
489
+ return monitorFunctions.monitorDetailed();
581
490
  },
582
491
  };
583
492
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobsProgram.js","sourceRoot":"","sources":["../../../../src/services/programs/jobs/JobsProgram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './JobsProgram.js';
@@ -0,0 +1,2 @@
1
+ export * from './JobsProgram.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/programs/jobs/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Address } from '@solana/kit';
2
+ import type { getDelistInstruction } from '../../../../generated_clients/jobs/index.js';
3
+ import type { InstructionsHelperParams } from './types.js';
4
+ export type DelistParams = {
5
+ job: Address;
6
+ };
7
+ export type DelistInstruction = ReturnType<typeof getDelistInstruction>;
8
+ export type Delist = (params: DelistParams) => Promise<DelistInstruction>;
9
+ export declare function delist({ job }: DelistParams, { config, deps, client, get, getRequiredWallet, getStaticAccounts, getNosATA, }: InstructionsHelperParams): Promise<DelistInstruction>;
@@ -0,0 +1,29 @@
1
+ export async function delist({ job }, { config, deps, client, get, getRequiredWallet, getStaticAccounts, getNosATA, }) {
2
+ try {
3
+ const wallet = getRequiredWallet();
4
+ // Get Required accounts
5
+ const [{ market, payer }, { jobsProgram }] = await Promise.all([
6
+ get(job, false),
7
+ getStaticAccounts(),
8
+ ]);
9
+ // Get associated token address for the job's payer
10
+ const [payerATA, vault] = await Promise.all([
11
+ getNosATA(payer),
12
+ deps.solana.pda([market, config.nosTokenAddress], jobsProgram),
13
+ ]);
14
+ return client.getDelistInstruction({
15
+ job,
16
+ market,
17
+ vault,
18
+ deposit: payerATA, // Associated token address for the job's payer
19
+ payer,
20
+ authority: wallet,
21
+ });
22
+ }
23
+ catch (err) {
24
+ const errorMessage = `Failed to create delist instruction: ${err instanceof Error ? err.message : String(err)}`;
25
+ deps.logger.error(errorMessage);
26
+ throw new Error(errorMessage);
27
+ }
28
+ }
29
+ //# sourceMappingURL=delist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delist.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/delist.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,EAAE,GAAG,EAAgB,EACrB,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,GAAG,EACH,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACgB;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7D,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YACf,iBAAiB,EAAE;SACpB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1C,SAAS,CAAC,KAAK,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;SAC/D,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,oBAAoB,CAAC;YACjC,GAAG;YACH,MAAM;YACN,KAAK;YACL,OAAO,EAAE,QAAQ,EAAE,+CAA+C;YAClE,KAAK;YACL,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAChH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Address } from '@solana/kit';
2
+ import type { getEndInstruction } from '../../../../generated_clients/jobs/index.js';
3
+ import type { InstructionsHelperParams } from './types.js';
4
+ export type EndParams = {
5
+ job: Address;
6
+ };
7
+ export type EndInstruction = ReturnType<typeof getEndInstruction>;
8
+ export type End = (params: EndParams) => Promise<EndInstruction>;
9
+ export declare function end({ job }: EndParams, { config, deps, client, get, getRuns, getRequiredWallet, getStaticAccounts, getNosATA, }: InstructionsHelperParams): Promise<EndInstruction>;
@@ -0,0 +1,36 @@
1
+ export async function end({ job }, { config, deps, client, get, getRuns, getRequiredWallet, getStaticAccounts, getNosATA, }) {
2
+ try {
3
+ const wallet = getRequiredWallet();
4
+ // Get Required accounts
5
+ const [{ market, payer }, [run], { jobsProgram }] = await Promise.all([
6
+ get(job, false),
7
+ getRuns({ job }),
8
+ getStaticAccounts(),
9
+ ]);
10
+ if (!run) {
11
+ throw new Error('No job run account found for the specified job');
12
+ }
13
+ // Get associated token addresses
14
+ const [payerATA, nodeATA] = await Promise.all([
15
+ getNosATA(payer), // ATA for the job's payer (for deposit)
16
+ getNosATA(run.node), // ATA for the node (for user)
17
+ ]);
18
+ const vault = await deps.solana.pda([market, config.nosTokenAddress], jobsProgram);
19
+ return client.getEndInstruction({
20
+ job,
21
+ market: market,
22
+ run: run.address,
23
+ deposit: payerATA, // ATA of the job payer
24
+ user: nodeATA, // ATA of the node (from run account)
25
+ vault: vault,
26
+ payer: payer, // Use payer from the job account
27
+ authority: wallet,
28
+ });
29
+ }
30
+ catch (err) {
31
+ const errorMessage = `Failed to create end instruction: ${err instanceof Error ? err.message : String(err)}`;
32
+ deps.logger.error(errorMessage);
33
+ throw new Error(errorMessage);
34
+ }
35
+ }
36
+ //# sourceMappingURL=end.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/end.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,EAAE,GAAG,EAAa,EAClB,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,GAAG,EACH,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACgB;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YACf,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YAChB,iBAAiB,EAAE;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,iCAAiC;QACjC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5C,SAAS,CAAC,KAAK,CAAC,EAAE,wCAAwC;YAC1D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,8BAA8B;SACpD,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnF,OAAO,MAAM,CAAC,iBAAiB,CAAC;YAC9B,GAAG;YACH,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,CAAC,OAAO;YAChB,OAAO,EAAE,QAAQ,EAAE,uBAAuB;YAC1C,IAAI,EAAE,OAAO,EAAE,qCAAqC;YACpD,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK,EAAE,iCAAiC;YAC/C,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,qCAAqC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Address, TransactionSigner } from '@solana/kit';
2
+ import type { getExtendInstruction } from '../../../../generated_clients/jobs/index.js';
3
+ import type { InstructionsHelperParams } from './types.js';
4
+ export type ExtendParams = {
5
+ job: Address;
6
+ timeout: number | bigint;
7
+ payer?: TransactionSigner;
8
+ };
9
+ export type ExtendInstruction = ReturnType<typeof getExtendInstruction>;
10
+ export type Extend = (params: ExtendParams) => Promise<ExtendInstruction>;
11
+ export declare function extend({ job, timeout, payer }: ExtendParams, { config, deps, client, get, getRequiredWallet, getStaticAccounts, getNosATA, }: InstructionsHelperParams): Promise<ExtendInstruction>;
@@ -0,0 +1,27 @@
1
+ export async function extend({ job, timeout, payer }, { config, deps, client, get, getRequiredWallet, getStaticAccounts, getNosATA, }) {
2
+ try {
3
+ const wallet = getRequiredWallet();
4
+ // Use provided payer or fall back to wallet
5
+ const nosPayer = payer ?? wallet;
6
+ // Get Required accounts
7
+ const [{ market, timeout: currentTimeout }, associatedTokenAddress, { jobsProgram, ...staticAccounts },] = await Promise.all([get(job, false), getNosATA(nosPayer.address), getStaticAccounts()]);
8
+ const vault = await deps.solana.pda([market, config.nosTokenAddress], jobsProgram);
9
+ // Create the extend instruction
10
+ return client.getExtendInstruction({
11
+ job,
12
+ timeout: BigInt(currentTimeout) + BigInt(timeout),
13
+ market: market,
14
+ vault,
15
+ payer: nosPayer,
16
+ authority: wallet,
17
+ user: associatedTokenAddress,
18
+ ...staticAccounts,
19
+ });
20
+ }
21
+ catch (err) {
22
+ const errorMessage = `Failed to create extend instruction: ${err instanceof Error ? err.message : String(err)}`;
23
+ deps.logger.error(errorMessage);
24
+ throw new Error(errorMessage);
25
+ }
26
+ }
27
+ //# sourceMappingURL=extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/extend.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAgB,EACrC,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,GAAG,EACH,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACgB;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC;QAEjC,wBAAwB;QACxB,MAAM,CACJ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,EACnC,sBAAsB,EACtB,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,EACnC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnF,gCAAgC;QAChC,OAAO,MAAM,CAAC,oBAAoB,CAAC;YACjC,GAAG;YACH,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACjD,MAAM,EAAE,MAAM;YACd,KAAK;YACL,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,sBAAsB;YAC5B,GAAG,cAAc;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAChH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './delist.js';
2
+ export * from './end.js';
3
+ export * from './extend.js';
4
+ export * from './post.js';
@@ -0,0 +1,5 @@
1
+ export * from './delist.js';
2
+ export * from './end.js';
3
+ export * from './extend.js';
4
+ export * from './post.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type Address, type TransactionSigner } from '@solana/kit';
2
+ import type { getListInstruction } from '../../../../generated_clients/jobs/index.js';
3
+ import type { InstructionsHelperParams } from './types.js';
4
+ export type PostParams = {
5
+ market: Address;
6
+ timeout: number | bigint;
7
+ ipfsHash: string;
8
+ node?: Address;
9
+ payer?: TransactionSigner;
10
+ };
11
+ export type PostInstruction = ReturnType<typeof getListInstruction>;
12
+ export type Post = (params: PostParams) => Promise<PostInstruction>;
13
+ export declare function post({ market, timeout, ipfsHash, payer }: PostParams, { config, deps, client, getRequiredWallet, getStaticAccounts, getNosATA, }: InstructionsHelperParams): Promise<PostInstruction>;