SDK Installation
Install and use the ironq-sdk TypeScript package
The ironq-sdk package provides TypeScript types, PDA derivation helpers, and constants for integrating with IronQ.
Install
npm install ironq-sdk
# or
yarn add ironq-sdk
Peer dependencies: @coral-xyz/anchor >=0.30.0, @solana/web3.js >=1.90.0
Usage with Anchor
import { Program } from "@coral-xyz/anchor";
import { Ironq } from "../target/types/ironq";
import idl from "../target/idl/ironq.json";
// Initialize the program client
const program = new Program<Ironq>(idl, provider);
// Create a job
await program.methods
.createJob(rewardAmount, dataHash, priority, maxRetries)
.accountsPartial({
creator,
queue,
job,
creatorTokenAccount,
vault,
tokenProgram,
systemProgram,
})
.rpc();
// Fetch a job account (fully typed)
const job = await program.account.job.fetch(jobPDA);
console.log(job.status); // { open: {} } | { claimed: {} } | ...
Types
import type { QueueConfig, Job, Worker, JobResult, JobStatus } from "ironq-sdk";
JobStatus
type JobStatus =
| { open: {} }
| { claimed: {} }
| { submitted: {} }
| { completed: {} }
| { disputed: {} }
| { expired: {} }
| { cancelled: {} };
QueueConfig
interface QueueConfig {
version: number;
authority: PublicKey;
rewardMint: PublicKey;
arbiter: PublicKey;
vault: PublicKey;
minWorkerStake: BN;
jobTimeout: BN;
slashRateBps: number;
crankRewardBps: number;
totalJobsCreated: BN;
totalActiveWorkers: number;
isPaused: boolean;
maxConcurrentJobs: number;
pendingAuthority: PublicKey | null;
bump: number;
}
Job
interface Job {
version: number;
queue: PublicKey;
jobId: BN;
creator: PublicKey;
worker: PublicKey;
status: JobStatus;
rewardAmount: BN;
dataHash: number[];
createdAt: BN;
claimedAt: BN;
deadline: BN;
priority: number;
maxRetries: number;
retryCount: number;
bump: number;
}
Worker
interface Worker {
version: number;
queue: PublicKey;
wallet: PublicKey;
stakeAmount: BN;
jobsCompleted: number;
jobsFailed: number;
totalEarned: BN;
activeJobs: number;
maxConcurrentJobs: number;
isActive: boolean;
registeredAt: BN;
bump: number;
}
JobResult
interface JobResult {
version: number;
job: PublicKey;
worker: PublicKey;
resultHash: number[];
submittedAt: BN;
bump: number;
}
Constants
import { PROGRAM_ID, SEEDS } from "ironq-sdk";
PROGRAM_ID; // PublicKey: J6GjTDeKugyMhFEuTYnEbsBCVSHsPimmbHcURbJ3wtrQ
SEEDS.QUEUE; // Buffer.from("queue")
SEEDS.VAULT; // Buffer.from("vault")
SEEDS.JOB; // Buffer.from("job")
SEEDS.WORKER; // Buffer.from("worker")
SEEDS.RESULT; // Buffer.from("result")