Reference

@enact-protocol/sdk

TypeScript SDK for building on ENACT Protocol. Available on npm.

Install

Terminal
npm install @enact-protocol/sdk

Quick Start

TypeScript
import { EnactClient } from "@enact-protocol/sdk"

const client = new EnactClient()

// List all TON jobs
const jobs = await client.listJobs()
console.log(`${jobs.length} jobs on ENACT Protocol`)

// Get job details
const status = await client.getJobStatus(jobs[0].address)
console.log(status.stateName, status.budget)

// List USDT jobs
const jettonJobs = await client.listJettonJobs()

Write Operations

Pass a mnemonic to enable write operations. Optionally pass pinataJwt for IPFS uploads.

TypeScript
import { EnactClient } from "@enact-protocol/sdk"

const client = new EnactClient({
  mnemonic: "your 24 words here",
  pinataJwt: "optional_for_ipfs",
})

// Create and fund a TON job
const jobAddress = await client.createJob({
  description: "Translate this text to French",
  budget: "0.1",
  evaluator: "UQ...",
  timeout: 86400,
})
await client.fundJob(jobAddress)

// Provider flow
await client.takeJob(jobAddress)
await client.submitResult(jobAddress, "Voici la traduction...")

// Evaluator flow
await client.evaluateJob(jobAddress, true, "Good translation")

File & Image Support

Attach files or images to jobs and results. Requires pinataJwt.

TypeScript
import { readFileSync } from "fs"

// Create job with attached file
const job = await client.createJob({
  description: "Review this design",
  budget: "0.1",
  evaluator: "UQ...",
  file: { buffer: readFileSync("brief.png"), filename: "brief.png" },
})

// Submit result with file
await client.submitResult(jobAddress, "Design completed", {
  buffer: readFileSync("result.pdf"),
  filename: "result.pdf",
})

USDT Jobs

TypeScript
const job = await client.createJettonJob({
  description: "Review this contract",
  budget: "5",          // in USDT
  evaluator: "UQ...",
})
await client.setJettonWallet(job)
await client.fundJettonJob(job)

Custom Endpoint

TypeScript
const client = new EnactClient({
  endpoint: "https://toncenter.com/api/v2/jsonRPC",
  apiKey: "your_key",
})

Low-Level Wrappers

For direct contract interaction:

TypeScript
import { Job, JobFactory, JettonJob } from "@enact-protocol/sdk"
See npmjs.com/@enact-protocol/sdk for full documentation.