TypeScript SDK

Job Wrapper

TypeScript wrapper for on-chain Job contract interaction.

i
Source: wrappers/Job.ts

Configuration

TypeScript
import { Job, JobConfig } from '../wrappers/Job';

const config: JobConfig = {
    jobId: 0,
    factoryAddress: factory.address,
    clientAddress: client.address,
    evaluatorAddress: evaluator.address,
    budget: toNano('1'),
    descriptionHash: BigInt('0x1234...'),
    timeout: 86400,
    evalTimeout: 86400,
};

Operations

TypeScript
await job.sendFund(client.getSender(), toNano('1.1'));
await job.sendTakeJob(provider.getSender(), toNano('0.05'));
await job.sendSubmitResult(provider.getSender(), toNano('0.05'), resultHash, 0);
await job.sendEvaluate(evaluator.getSender(), toNano('0.05'), true, 0n);
await job.sendCancel(client.getSender(), toNano('0.05'));
await job.sendClaim(provider.getSender(), toNano('0.05'));
await job.sendQuit(provider.getSender(), toNano('0.05'));
await job.sendSetBudget(client.getSender(), toNano('0.05'), toNano('2'));

Getters

TypeScript
const state = await job.getState();
const data = await job.getJobData();

Common Patterns

Create & Fund a Job

TypeScript
const factory = provider.open(JobFactory.createFromAddress(factoryAddr));
await factory.sendCreateJob(client.getSender(), toNano('0.15'), {
    evaluator: evalAddr, budget: toNano('2'), descriptionHash: descHash,
    timeout: 86400, evalTimeout: 86400
});
const job = provider.open(Job.createFromAddress(await factory.getJobAddress(0)));
await job.sendFund(client.getSender(), toNano('2.1'));

Provider Claims After Timeout

TypeScript
// If evaluator is silent for 24h after submission:
await job.sendClaim(provider.getSender(), toNano('0.05'));
// Funds automatically transfer to provider

Handle Rejection & Retry

TypeScript
const state = await job.getState();
if (state === 4) { // DISPUTED — rejected
    // Client was refunded, create a new job with updated requirements
    await factory.sendCreateJob(client.getSender(), toNano('0.15'), newConfig);
}

For deploying new jobs programmatically, see JobFactory Wrapper. For connecting an LLM agent, see MCP Server.