@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.
- package/README.md +96 -24
- package/dist/NosanaClient.d.ts +5 -5
- package/dist/NosanaClient.js +6 -5
- package/dist/NosanaClient.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/services/programs/jobs/JobsProgram.d.ts +152 -0
- package/dist/services/programs/{JobsProgram.js → jobs/JobsProgram.js} +133 -224
- package/dist/services/programs/jobs/JobsProgram.js.map +1 -0
- package/dist/services/programs/jobs/index.d.ts +1 -0
- package/dist/services/programs/jobs/index.js +2 -0
- package/dist/services/programs/jobs/index.js.map +1 -0
- package/dist/services/programs/jobs/instructions/delist.d.ts +9 -0
- package/dist/services/programs/jobs/instructions/delist.js +29 -0
- package/dist/services/programs/jobs/instructions/delist.js.map +1 -0
- package/dist/services/programs/jobs/instructions/end.d.ts +9 -0
- package/dist/services/programs/jobs/instructions/end.js +36 -0
- package/dist/services/programs/jobs/instructions/end.js.map +1 -0
- package/dist/services/programs/jobs/instructions/extend.d.ts +11 -0
- package/dist/services/programs/jobs/instructions/extend.js +27 -0
- package/dist/services/programs/jobs/instructions/extend.js.map +1 -0
- package/dist/services/programs/jobs/instructions/index.d.ts +4 -0
- package/dist/services/programs/jobs/instructions/index.js +5 -0
- package/dist/services/programs/jobs/instructions/index.js.map +1 -0
- package/dist/services/programs/jobs/instructions/post.d.ts +13 -0
- package/dist/services/programs/jobs/instructions/post.js +36 -0
- package/dist/services/programs/jobs/instructions/post.js.map +1 -0
- package/dist/services/programs/jobs/instructions/types.d.ts +16 -0
- package/dist/services/programs/jobs/instructions/types.js +2 -0
- package/dist/services/programs/jobs/instructions/types.js.map +1 -0
- package/dist/services/programs/jobs/monitor/index.d.ts +3 -0
- package/dist/services/programs/jobs/monitor/index.js +3 -0
- package/dist/services/programs/jobs/monitor/index.js.map +1 -0
- package/dist/services/programs/jobs/monitor/monitor.d.ts +22 -0
- package/dist/services/programs/jobs/monitor/monitor.js +180 -0
- package/dist/services/programs/jobs/monitor/monitor.js.map +1 -0
- package/dist/services/programs/jobs/monitor/types.d.ts +27 -0
- package/dist/services/programs/jobs/monitor/types.js +9 -0
- package/dist/services/programs/jobs/monitor/types.js.map +1 -0
- package/dist/services/programs/{MerkleDistributorProgram.d.ts → merkleDistributor/MerkleDistributorProgram.d.ts} +4 -4
- package/dist/services/programs/{MerkleDistributorProgram.js → merkleDistributor/MerkleDistributorProgram.js} +3 -3
- package/dist/services/programs/merkleDistributor/MerkleDistributorProgram.js.map +1 -0
- package/dist/services/programs/merkleDistributor/index.d.ts +1 -0
- package/dist/services/programs/merkleDistributor/index.js +2 -0
- package/dist/services/programs/merkleDistributor/index.js.map +1 -0
- package/dist/services/programs/{StakeProgram.d.ts → stake/StakeProgram.d.ts} +4 -4
- package/dist/services/programs/{StakeProgram.js → stake/StakeProgram.js} +2 -2
- package/dist/services/programs/stake/StakeProgram.js.map +1 -0
- package/dist/services/programs/stake/index.d.ts +1 -0
- package/dist/services/programs/stake/index.js +2 -0
- package/dist/services/programs/stake/index.js.map +1 -0
- package/dist/services/{SolanaService.d.ts → solana/SolanaService.d.ts} +31 -3
- package/dist/services/{SolanaService.js → solana/SolanaService.js} +84 -3
- package/dist/services/solana/SolanaService.js.map +1 -0
- package/dist/services/solana/index.d.ts +1 -0
- package/dist/services/solana/index.js +2 -0
- package/dist/services/solana/index.js.map +1 -0
- package/dist/services/token/TokenService.d.ts +63 -0
- package/dist/services/{TokenService.js → token/TokenService.js} +69 -2
- package/dist/services/token/TokenService.js.map +1 -0
- package/dist/services/token/index.d.ts +1 -0
- package/dist/services/token/index.js +2 -0
- package/dist/services/token/index.js.map +1 -0
- package/dist/types.d.ts +3 -1
- package/dist/utils/convertHttpToWebSocketUrl.d.ts +28 -0
- package/dist/utils/convertHttpToWebSocketUrl.js +37 -0
- package/dist/utils/convertHttpToWebSocketUrl.js.map +1 -0
- package/dist/utils/getStaticAccounts.d.ts +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/services/SolanaService.js.map +0 -1
- package/dist/services/TokenService.d.ts +0 -41
- package/dist/services/TokenService.js.map +0 -1
- package/dist/services/programs/JobsProgram.d.ts +0 -106
- package/dist/services/programs/JobsProgram.js.map +0 -1
- package/dist/services/programs/MerkleDistributorProgram.js.map +0 -1
- package/dist/services/programs/StakeProgram.js.map +0 -1
package/README.md
CHANGED
|
@@ -340,41 +340,71 @@ await client.solana.buildSignAndSend(instruction);
|
|
|
340
340
|
|
|
341
341
|
#### Monitor Account Updates
|
|
342
342
|
|
|
343
|
+
The SDK provides two monitoring methods using async iterators for real-time account updates via WebSocket:
|
|
344
|
+
|
|
345
|
+
**Simple Monitoring** (`monitor()`) - Automatically merges run account data into job events:
|
|
346
|
+
|
|
343
347
|
```typescript
|
|
344
|
-
async monitor(
|
|
345
|
-
onJobAccount?: (job: Job) => void | Promise<void>,
|
|
346
|
-
onMarketAccount?: (market: Market) => void | Promise<void>,
|
|
347
|
-
onRunAccount?: (run: Run) => void | Promise<void>,
|
|
348
|
-
onError?: (error: Error, accountType?: string) => void | Promise<void>
|
|
349
|
-
}): Promise<() => void>
|
|
348
|
+
async monitor(): Promise<[AsyncIterable<SimpleMonitorEvent>, () => void]>
|
|
350
349
|
```
|
|
351
350
|
|
|
352
|
-
Subscribe to real-time account updates via WebSocket. Includes automatic reconnection on failure.
|
|
353
|
-
|
|
354
351
|
```typescript
|
|
355
|
-
|
|
356
|
-
const stopMonitoring = await client.jobs.monitor({
|
|
357
|
-
onJobAccount: async (job) => {
|
|
358
|
-
console.log('Job update:', job.address, job.state);
|
|
352
|
+
import { MonitorEventType } from '@nosana/kit';
|
|
359
353
|
|
|
354
|
+
// Start monitoring
|
|
355
|
+
const [eventStream, stop] = await client.jobs.monitor();
|
|
356
|
+
|
|
357
|
+
// Process events using async iteration
|
|
358
|
+
for await (const event of eventStream) {
|
|
359
|
+
if (event.type === MonitorEventType.JOB) {
|
|
360
|
+
console.log('Job update:', event.data.address, event.data.state);
|
|
361
|
+
// event.data will have state, node, and timeStart from run account if it exists
|
|
362
|
+
|
|
360
363
|
// Process updates - save to database, trigger workflows, etc.
|
|
361
|
-
if (
|
|
362
|
-
await processCompletedJob(
|
|
364
|
+
if (event.data.state === JobState.COMPLETED) {
|
|
365
|
+
await processCompletedJob(event.data);
|
|
363
366
|
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
367
|
+
} else if (event.type === MonitorEventType.MARKET) {
|
|
368
|
+
console.log('Market update:', event.data.address);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Stop monitoring when done
|
|
373
|
+
stop();
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**Detailed Monitoring** (`monitorDetailed()`) - Provides separate events for job, market, and run accounts:
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
async monitorDetailed(): Promise<[AsyncIterable<MonitorEvent>, () => void]>
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
```typescript
|
|
383
|
+
import { MonitorEventType } from '@nosana/kit';
|
|
384
|
+
|
|
385
|
+
// Start detailed monitoring
|
|
386
|
+
const [eventStream, stop] = await client.jobs.monitorDetailed();
|
|
387
|
+
|
|
388
|
+
// Process events using async iteration
|
|
389
|
+
for await (const event of eventStream) {
|
|
390
|
+
switch (event.type) {
|
|
391
|
+
case MonitorEventType.JOB:
|
|
392
|
+
console.log('Job update:', event.data.address);
|
|
393
|
+
break;
|
|
394
|
+
case MonitorEventType.MARKET:
|
|
395
|
+
console.log('Market update:', event.data.address);
|
|
396
|
+
break;
|
|
397
|
+
case MonitorEventType.RUN:
|
|
398
|
+
console.log('Run started:', event.data.job, 'on node', event.data.node);
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
372
402
|
|
|
373
403
|
// Stop monitoring when done
|
|
374
|
-
|
|
404
|
+
stop();
|
|
375
405
|
```
|
|
376
406
|
|
|
377
|
-
|
|
407
|
+
Both methods handle WebSocket reconnection automatically and continue processing updates until explicitly stopped. The simple `monitor()` method is recommended for most use cases as it automatically merges run account data into job updates, eliminating the need to manually track run accounts.
|
|
378
408
|
|
|
379
409
|
## Account Types
|
|
380
410
|
|
|
@@ -473,6 +503,13 @@ getBalance(address?: Address | string): Promise<bigint>
|
|
|
473
503
|
|
|
474
504
|
// Derive program derived address
|
|
475
505
|
pda(seeds: Array<Address | string>, programId: Address): Promise<Address>
|
|
506
|
+
|
|
507
|
+
// Get instruction to transfer SOL
|
|
508
|
+
transfer(params: {
|
|
509
|
+
to: Address | string;
|
|
510
|
+
amount: number | bigint;
|
|
511
|
+
from?: TransactionSigner;
|
|
512
|
+
}): Promise<Instruction> // Returns TransferSolInstruction
|
|
476
513
|
```
|
|
477
514
|
|
|
478
515
|
### Examples
|
|
@@ -495,6 +532,16 @@ console.log(`Balance: ${balance} lamports`);
|
|
|
495
532
|
|
|
496
533
|
// Derive PDA
|
|
497
534
|
const pda = await client.solana.pda(['seed1', 'seed2'], programAddress);
|
|
535
|
+
|
|
536
|
+
// Get instruction to transfer SOL
|
|
537
|
+
const transferSolIx = await client.solana.transfer({
|
|
538
|
+
to: 'recipient-address',
|
|
539
|
+
amount: 1000000, // lamports (can be number or bigint)
|
|
540
|
+
// from is optional - uses wallet if not provided
|
|
541
|
+
});
|
|
542
|
+
|
|
543
|
+
// Execute the transfer
|
|
544
|
+
await client.solana.buildSignAndSend(transferSolIx);
|
|
498
545
|
```
|
|
499
546
|
|
|
500
547
|
## IPFS Service
|
|
@@ -1010,6 +1057,31 @@ console.log(`Balance: ${balance} NOS`);
|
|
|
1010
1057
|
// Returns 0 if no token account exists
|
|
1011
1058
|
```
|
|
1012
1059
|
|
|
1060
|
+
### Transfer Tokens
|
|
1061
|
+
|
|
1062
|
+
Get instruction(s) to transfer SPL tokens. Returns either 1 or 2 instructions depending on whether the recipient's associated token account needs to be created:
|
|
1063
|
+
|
|
1064
|
+
```typescript
|
|
1065
|
+
// Get transfer instruction(s)
|
|
1066
|
+
const instructions = await client.nos.transfer({
|
|
1067
|
+
to: 'recipient-address',
|
|
1068
|
+
amount: 1000000, // token base units (can be number or bigint)
|
|
1069
|
+
// from is optional - uses wallet if not provided
|
|
1070
|
+
});
|
|
1071
|
+
|
|
1072
|
+
// Execute the transfer
|
|
1073
|
+
// instructions is a tuple:
|
|
1074
|
+
// - [TransferInstruction] when recipient ATA exists (1 instruction)
|
|
1075
|
+
// - [CreateAssociatedTokenIdempotentInstruction, TransferInstruction] when ATA needs creation (2 instructions)
|
|
1076
|
+
await client.solana.buildSignAndSend(instructions);
|
|
1077
|
+
```
|
|
1078
|
+
|
|
1079
|
+
The function automatically:
|
|
1080
|
+
- Finds the sender's associated token account
|
|
1081
|
+
- Finds the recipient's associated token account
|
|
1082
|
+
- Creates the recipient's ATA if it doesn't exist (returns 2 instructions: create ATA + transfer)
|
|
1083
|
+
- Returns only the transfer instruction if the recipient's ATA already exists (returns 1 instruction)
|
|
1084
|
+
|
|
1013
1085
|
### Type Definitions
|
|
1014
1086
|
|
|
1015
1087
|
```typescript
|
package/dist/NosanaClient.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ import { type NosanaApi } from '@nosana/api';
|
|
|
4
4
|
import { type NosanaAuthorization } from '@nosana/authorization';
|
|
5
5
|
import { Logger } from './logger/Logger.js';
|
|
6
6
|
import { ClientConfig, PartialClientConfig } from './config/index.js';
|
|
7
|
-
import { type JobsProgram } from './services/programs/
|
|
8
|
-
import { type StakeProgram } from './services/programs/
|
|
9
|
-
import { type MerkleDistributorProgram } from './services/programs/
|
|
10
|
-
import { type SolanaService } from './services/
|
|
11
|
-
import { type TokenService } from './services/
|
|
7
|
+
import { type JobsProgram } from './services/programs/jobs/index.js';
|
|
8
|
+
import { type StakeProgram } from './services/programs/stake/index.js';
|
|
9
|
+
import { type MerkleDistributorProgram } from './services/programs/merkleDistributor/index.js';
|
|
10
|
+
import { type SolanaService } from './services/solana/index.js';
|
|
11
|
+
import { type TokenService } from './services/token/index.js';
|
|
12
12
|
import type { Wallet } from './types.js';
|
|
13
13
|
/**
|
|
14
14
|
* The Nosana client interface. Contains all the services and programs
|
package/dist/NosanaClient.js
CHANGED
|
@@ -4,11 +4,11 @@ import { createNosanaApi } from '@nosana/api';
|
|
|
4
4
|
import { createNosanaAuthorization } from '@nosana/authorization';
|
|
5
5
|
import { Logger } from './logger/Logger.js';
|
|
6
6
|
import { getNosanaConfig } from './config/index.js';
|
|
7
|
-
import { createJobsProgram } from './services/programs/
|
|
8
|
-
import { createStakeProgram } from './services/programs/
|
|
9
|
-
import { createMerkleDistributorProgram, } from './services/programs/
|
|
10
|
-
import { createSolanaService } from './services/
|
|
11
|
-
import { createTokenService } from './services/
|
|
7
|
+
import { createJobsProgram } from './services/programs/jobs/index.js';
|
|
8
|
+
import { createStakeProgram } from './services/programs/stake/index.js';
|
|
9
|
+
import { createMerkleDistributorProgram, } from './services/programs/merkleDistributor/index.js';
|
|
10
|
+
import { createSolanaService } from './services/solana/index.js';
|
|
11
|
+
import { createTokenService } from './services/token/index.js';
|
|
12
12
|
import { walletToAuthorizationSigner } from './utils/walletToAuthorizationSigner.js';
|
|
13
13
|
/**
|
|
14
14
|
* Creates a new Nosana client instance.
|
|
@@ -48,6 +48,7 @@ export function createNosanaClient(network = NosanaNetwork.MAINNET, customConfig
|
|
|
48
48
|
const programDeps = {
|
|
49
49
|
logger,
|
|
50
50
|
solana,
|
|
51
|
+
nos,
|
|
51
52
|
getWallet,
|
|
52
53
|
};
|
|
53
54
|
// Initialize programs
|
package/dist/NosanaClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NosanaClient.js","sourceRoot":"","sources":["../src/NosanaClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAA4B,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAgB,eAAe,EAAuB,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,
|
|
1
|
+
{"version":3,"file":"NosanaClient.js","sourceRoot":"","sources":["../src/NosanaClient.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,16 +7,16 @@ export type { Wallet } from './types.js';
|
|
|
7
7
|
export * from './config/index.js';
|
|
8
8
|
export * from './errors/NosanaError.js';
|
|
9
9
|
export * from './logger/Logger.js';
|
|
10
|
-
export { createJobsProgram, type JobsProgram, JobState, MarketQueueType, } from './services/programs/
|
|
11
|
-
export type { Job, Market, Run } from './services/programs/
|
|
12
|
-
export { createStakeProgram, type StakeProgram } from './services/programs/
|
|
13
|
-
export type { Stake } from './services/programs/
|
|
14
|
-
export { createMerkleDistributorProgram, type MerkleDistributorProgram, ClaimTarget, } from './services/programs/
|
|
15
|
-
export type { MerkleDistributor, ClaimStatus, } from './services/programs/
|
|
16
|
-
export { ClaimStatusNotFoundError } from './services/programs/
|
|
10
|
+
export { createJobsProgram, type JobsProgram, JobState, MarketQueueType, } from './services/programs/jobs/index.js';
|
|
11
|
+
export type { Job, Market, Run } from './services/programs/jobs/index.js';
|
|
12
|
+
export { createStakeProgram, type StakeProgram } from './services/programs/stake/index.js';
|
|
13
|
+
export type { Stake } from './services/programs/stake/index.js';
|
|
14
|
+
export { createMerkleDistributorProgram, type MerkleDistributorProgram, ClaimTarget, } from './services/programs/merkleDistributor/index.js';
|
|
15
|
+
export type { MerkleDistributor, ClaimStatus, } from './services/programs/merkleDistributor/index.js';
|
|
16
|
+
export { ClaimStatusNotFoundError } from './services/programs/merkleDistributor/index.js';
|
|
17
17
|
export { solBytesArrayToIpfsHash, ipfsHashToSolBytesArray } from '@nosana/ipfs';
|
|
18
|
-
export { createTokenService, type TokenService } from './services/
|
|
19
|
-
export type { TokenAccount, TokenAccountWithBalance } from './services/
|
|
18
|
+
export { createTokenService, type TokenService } from './services/token/index.js';
|
|
19
|
+
export type { TokenAccount, TokenAccountWithBalance } from './services/token/index.js';
|
|
20
20
|
export * as JobsClient from './generated_clients/jobs/index.js';
|
|
21
21
|
export * as StakingClient from './generated_clients/staking/index.js';
|
|
22
22
|
export * as MerkleDistributorClient from './generated_clients/merkle_distributor/index.js';
|
package/dist/index.js
CHANGED
|
@@ -9,16 +9,16 @@ export * from './config/index.js';
|
|
|
9
9
|
export * from './errors/NosanaError.js';
|
|
10
10
|
export * from './logger/Logger.js';
|
|
11
11
|
// Export JobsProgram and related types
|
|
12
|
-
export { createJobsProgram, JobState, MarketQueueType, } from './services/programs/
|
|
12
|
+
export { createJobsProgram, JobState, MarketQueueType, } from './services/programs/jobs/index.js';
|
|
13
13
|
// Export StakeProgram and related types
|
|
14
|
-
export { createStakeProgram } from './services/programs/
|
|
14
|
+
export { createStakeProgram } from './services/programs/stake/index.js';
|
|
15
15
|
// Export MerkleDistributorProgram and related types
|
|
16
|
-
export { createMerkleDistributorProgram, ClaimTarget, } from './services/programs/
|
|
17
|
-
export { ClaimStatusNotFoundError } from './services/programs/
|
|
16
|
+
export { createMerkleDistributorProgram, ClaimTarget, } from './services/programs/merkleDistributor/index.js';
|
|
17
|
+
export { ClaimStatusNotFoundError } from './services/programs/merkleDistributor/index.js';
|
|
18
18
|
// Export IPFS utilities from @nosana/ipfs
|
|
19
19
|
export { solBytesArrayToIpfsHash, ipfsHashToSolBytesArray } from '@nosana/ipfs';
|
|
20
20
|
// Export token service
|
|
21
|
-
export { createTokenService } from './services/
|
|
21
|
+
export { createTokenService } from './services/token/index.js';
|
|
22
22
|
// Export generated clients under namespaces to avoid naming conflicts
|
|
23
23
|
export * as JobsClient from './generated_clients/jobs/index.js';
|
|
24
24
|
export * as StakingClient from './generated_clients/staking/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAqB,MAAM,mBAAmB,CAAC;AAE1E,oFAAoF;AACpF,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,iCAAiC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AAEnC,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EAEjB,QAAQ,EACR,eAAe,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAqB,MAAM,mBAAmB,CAAC;AAE1E,oFAAoF;AACpF,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,iCAAiC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AAEnC,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EAEjB,QAAQ,EACR,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAG3C,wCAAwC;AACxC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oCAAoC,CAAC;AAG3F,oDAAoD;AACpD,OAAO,EACL,8BAA8B,EAE9B,WAAW,GACZ,MAAM,gDAAgD,CAAC;AAKxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,0CAA0C;AAC1C,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEhF,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAqB,MAAM,2BAA2B,CAAC;AAGlF,sEAAsE;AACtE,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAChE,OAAO,KAAK,aAAa,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,uBAAuB,MAAM,iDAAiD,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { type ConvertTypesForDb } from '../../../utils/index.js';
|
|
2
|
+
import type { Address } from '@solana/kit';
|
|
3
|
+
import type { ProgramDeps } from '../../../types.js';
|
|
4
|
+
import type { ProgramConfig } from '../../../config/types.js';
|
|
5
|
+
import * as Instructions from './instructions/index.js';
|
|
6
|
+
import * as programClient from '../../../generated_clients/jobs/index.js';
|
|
7
|
+
import type { SimpleMonitorEvent, MonitorEvent } from './monitor/index.js';
|
|
8
|
+
export declare enum JobState {
|
|
9
|
+
QUEUED = 0,
|
|
10
|
+
RUNNING = 1,
|
|
11
|
+
COMPLETED = 2,
|
|
12
|
+
STOPPED = 3
|
|
13
|
+
}
|
|
14
|
+
export declare enum MarketQueueType {
|
|
15
|
+
JOB_QUEUE = 0,
|
|
16
|
+
NODE_QUEUE = 1
|
|
17
|
+
}
|
|
18
|
+
export type Job = Omit<ConvertTypesForDb<programClient.JobAccountArgs>, 'state'> & {
|
|
19
|
+
address: Address;
|
|
20
|
+
state: JobState;
|
|
21
|
+
};
|
|
22
|
+
export type Market = Omit<ConvertTypesForDb<programClient.MarketAccountArgs>, 'queueType'> & {
|
|
23
|
+
address: Address;
|
|
24
|
+
queueType: MarketQueueType;
|
|
25
|
+
};
|
|
26
|
+
export type Run = ConvertTypesForDb<programClient.RunAccountArgs> & {
|
|
27
|
+
address: Address;
|
|
28
|
+
};
|
|
29
|
+
export { MonitorEventType } from './monitor/index.js';
|
|
30
|
+
export type { SimpleMonitorEvent, MonitorEvent } from './monitor/index.js';
|
|
31
|
+
/**
|
|
32
|
+
* Jobs program interface
|
|
33
|
+
*/
|
|
34
|
+
export interface JobsProgram {
|
|
35
|
+
/**
|
|
36
|
+
* Fetch a job account by address
|
|
37
|
+
*/
|
|
38
|
+
get(addr: Address, checkRun?: boolean): Promise<Job>;
|
|
39
|
+
/**
|
|
40
|
+
* Fetch a run account by address
|
|
41
|
+
*/
|
|
42
|
+
run(addr: Address): Promise<Run>;
|
|
43
|
+
/**
|
|
44
|
+
* Fetch a market account by address
|
|
45
|
+
*/
|
|
46
|
+
market(addr: Address): Promise<Market>;
|
|
47
|
+
/**
|
|
48
|
+
* Fetch multiple job accounts by address
|
|
49
|
+
*/
|
|
50
|
+
multiple(addresses: Address[], checkRuns?: boolean): Promise<Job[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Fetch all job accounts
|
|
53
|
+
*/
|
|
54
|
+
all(filters?: {
|
|
55
|
+
state?: JobState;
|
|
56
|
+
market?: Address;
|
|
57
|
+
node?: Address;
|
|
58
|
+
project?: Address;
|
|
59
|
+
}, checkRuns?: boolean): Promise<Job[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Fetch all run accounts
|
|
62
|
+
*/
|
|
63
|
+
runs(filters?: {
|
|
64
|
+
node?: Address;
|
|
65
|
+
job?: Address;
|
|
66
|
+
}): Promise<Run[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Fetch all market accounts
|
|
69
|
+
*/
|
|
70
|
+
markets(): Promise<Market[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Post a new job to the marketplace
|
|
73
|
+
*/
|
|
74
|
+
post: Instructions.Post;
|
|
75
|
+
/**
|
|
76
|
+
* Extend an existing job's timeout
|
|
77
|
+
*/
|
|
78
|
+
extend: Instructions.Extend;
|
|
79
|
+
/**
|
|
80
|
+
* Delist a job from the marketplace
|
|
81
|
+
*/
|
|
82
|
+
delist: Instructions.Delist;
|
|
83
|
+
/**
|
|
84
|
+
* Stop a running job
|
|
85
|
+
*/
|
|
86
|
+
end(params: {
|
|
87
|
+
job: Address;
|
|
88
|
+
}): Promise<ReturnType<typeof programClient.getEndInstruction>>;
|
|
89
|
+
/**
|
|
90
|
+
* Monitor program account updates using async iterators.
|
|
91
|
+
* Automatically merges run account data into job account updates.
|
|
92
|
+
* Returns a tuple of [eventStream, stopFunction].
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const [eventStream, stop] = await jobsProgram.monitor();
|
|
97
|
+
* for await (const event of eventStream) {
|
|
98
|
+
* if (event.type === MonitorEventType.JOB) {
|
|
99
|
+
* console.log('Job updated:', event.data.address);
|
|
100
|
+
* } else if (event.type === MonitorEventType.MARKET) {
|
|
101
|
+
* console.log('Market updated:', event.data.address);
|
|
102
|
+
* }
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
monitor(): Promise<[AsyncIterable<SimpleMonitorEvent>, () => void]>;
|
|
107
|
+
/**
|
|
108
|
+
* Monitor program account updates with detailed events for each account type.
|
|
109
|
+
* Provides separate events for job, market, and run accounts.
|
|
110
|
+
* Returns a tuple of [eventStream, stopFunction].
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const [eventStream, stop] = await jobsProgram.monitorDetailed();
|
|
115
|
+
* for await (const event of eventStream) {
|
|
116
|
+
* switch (event.type) {
|
|
117
|
+
* case MonitorEventType.JOB:
|
|
118
|
+
* console.log('Job updated:', event.data.address);
|
|
119
|
+
* break;
|
|
120
|
+
* case MonitorEventType.MARKET:
|
|
121
|
+
* console.log('Market updated:', event.data.address);
|
|
122
|
+
* break;
|
|
123
|
+
* case MonitorEventType.RUN:
|
|
124
|
+
* console.log('Run updated:', event.data.address);
|
|
125
|
+
* break;
|
|
126
|
+
* }
|
|
127
|
+
* }
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
monitorDetailed(): Promise<[AsyncIterable<MonitorEvent>, () => void]>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Creates a new JobsProgram instance.
|
|
134
|
+
*
|
|
135
|
+
* @param deps - Program dependencies (config, logger, solana service, wallet getter)
|
|
136
|
+
* @returns A JobsProgram instance with methods to interact with the jobs program
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* import { createJobsProgram } from '@nosana/kit';
|
|
141
|
+
*
|
|
142
|
+
* const jobsProgram = createJobsProgram({
|
|
143
|
+
* config,
|
|
144
|
+
* logger,
|
|
145
|
+
* solana,
|
|
146
|
+
* getWallet,
|
|
147
|
+
* });
|
|
148
|
+
*
|
|
149
|
+
* const job = await jobsProgram.get('job-address');
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export declare function createJobsProgram(deps: ProgramDeps, config: ProgramConfig): JobsProgram;
|