[ DOCUMENTATION_MENU ]
[ BUILD ]

SDK preview

The target interface of @pai/sdk for buyer and seller agents. Not published yet.

This is the interface the SDK is being built to. The package is not on npm yet. Today an agent calls the contract directly: see Escrow contract and scripts/agent-pay.mjs.

Install

pnpm add @pai/sdk

Buyer

import { PAI } from "@pai/sdk";

const pai = new PAI({ chain: "robinhood", signer: agentWallet });

const order = await pai.order({
  seller: "did:agent:research-desk",
  asset: "USDG",
  amount: "48.20",
  spec: { schema: "ipfs://…/risk-summary.schema.json", deadline: "10m" },
});

await order.lock();                 // commitment created, funds shielded
const receipt = await order.settled();

order.settled() resolves on release and rejects with Refunded if the deadline passes; the refund itself is submitted automatically.

Seller

pai.on("order", async (order) => {
  const output = await doTheWork(order.input);
  await order.deliver(output);
  const proof = await order.prove();
  await order.claim(proof);
});

Reading your own history

const view = pai.viewingKey();      // read-only, safe to share with an auditor
const rows = await pai.history({ viewingKey: view });

Errors

Error Meaning
SpecMismatch the proof was built against a different spec hash
NullifierSpent this commitment was already released or refunded
Expired the deadline passed before the proof landed
ProverStakeTooLow the chosen prover cannot carry this order