@telaro/sacp 1.0.0
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/INTEGRATION.md +238 -0
- package/README.md +253 -0
- package/dist/codec.d.ts +35 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +63 -0
- package/dist/codec.js.map +1 -0
- package/dist/constants.d.ts +50 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +50 -0
- package/dist/constants.js.map +1 -0
- package/dist/dispatcher.d.ts +87 -0
- package/dist/dispatcher.d.ts.map +1 -0
- package/dist/dispatcher.js +175 -0
- package/dist/dispatcher.js.map +1 -0
- package/dist/events.d.ts +93 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +142 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/job.d.ts +99 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +297 -0
- package/dist/job.js.map +1 -0
- package/dist/lst.d.ts +52 -0
- package/dist/lst.d.ts.map +1 -0
- package/dist/lst.js +58 -0
- package/dist/lst.js.map +1 -0
- package/dist/negotiation.d.ts +66 -0
- package/dist/negotiation.d.ts.map +1 -0
- package/dist/negotiation.js +184 -0
- package/dist/negotiation.js.map +1 -0
- package/dist/offering.d.ts +65 -0
- package/dist/offering.d.ts.map +1 -0
- package/dist/offering.js +190 -0
- package/dist/offering.js.map +1 -0
- package/dist/pdas.d.ts +44 -0
- package/dist/pdas.d.ts.map +1 -0
- package/dist/pdas.js +95 -0
- package/dist/pdas.js.map +1 -0
- package/dist/runtime.d.ts +244 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +481 -0
- package/dist/runtime.js.map +1 -0
- package/dist/signer.d.ts +107 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +94 -0
- package/dist/signer.js.map +1 -0
- package/dist/take_rate.d.ts +44 -0
- package/dist/take_rate.d.ts.map +1 -0
- package/dist/take_rate.js +141 -0
- package/dist/take_rate.js.map +1 -0
- package/dist/timeout.d.ts +35 -0
- package/dist/timeout.d.ts.map +1 -0
- package/dist/timeout.js +113 -0
- package/dist/timeout.js.map +1 -0
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +133 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +315 -0
- package/dist/validation.js.map +1 -0
- package/dist/watcher.d.ts +67 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +176 -0
- package/dist/watcher.js.map +1 -0
- package/dist/wormhole.d.ts +88 -0
- package/dist/wormhole.d.ts.map +1 -0
- package/dist/wormhole.js +152 -0
- package/dist/wormhole.js.map +1 -0
- package/package.json +138 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { type FetchedJob, type FetchedVerdict } from "./job.js";
|
|
3
|
+
import { listOfferings, type FetchedOffering, type RegisterOfferingParams, type UpdateOfferingParams } from "./offering.js";
|
|
4
|
+
import { type FetchedNegotiation } from "./negotiation.js";
|
|
5
|
+
import { type FetchedSacpConfig } from "./take_rate.js";
|
|
6
|
+
import type { VerdictWinner } from "./types.js";
|
|
7
|
+
import type { SacpSigner } from "./signer.js";
|
|
8
|
+
/**
|
|
9
|
+
* v0.8 — high-level runtime layer.
|
|
10
|
+
*
|
|
11
|
+
* Wraps the low-level instruction builders in an `SacpClient` +
|
|
12
|
+
* `JobSession` pair so the typical consumer writes intent ("this
|
|
13
|
+
* client is accepting the work") rather than account derivations,
|
|
14
|
+
* Treasury ATA bootstraps, and explicit `sendAndConfirmTransaction`
|
|
15
|
+
* boilerplate.
|
|
16
|
+
*
|
|
17
|
+
* Low-level builders stay exported. The runtime is purely additive.
|
|
18
|
+
*/
|
|
19
|
+
/** Per-role keys for a Job that the client needs to drive end-to-end. */
|
|
20
|
+
export interface JobActors {
|
|
21
|
+
client: SacpSigner;
|
|
22
|
+
provider?: SacpSigner;
|
|
23
|
+
/** Evaluator signer is optional — only needed when this runtime
|
|
24
|
+
* instance plays the evaluator role. */
|
|
25
|
+
evaluator?: SacpSigner;
|
|
26
|
+
}
|
|
27
|
+
/** Cached on-chain state for a Job + derived ATAs the runtime needs. */
|
|
28
|
+
export interface JobSnapshot {
|
|
29
|
+
job: FetchedJob;
|
|
30
|
+
config: FetchedSacpConfig;
|
|
31
|
+
clientAta: PublicKey;
|
|
32
|
+
providerAta: PublicKey;
|
|
33
|
+
evaluatorAta: PublicKey;
|
|
34
|
+
treasuryAta: PublicKey;
|
|
35
|
+
}
|
|
36
|
+
/** What a given role can do right now, given the Job's state. */
|
|
37
|
+
export type JobAction = "fund" | "submit_work" | "accept" | "dispute" | "submit_verdict" | "reclaim" | "record_verdict" | "publish_settlement";
|
|
38
|
+
export interface SacpClientConfig {
|
|
39
|
+
connection: Connection;
|
|
40
|
+
/**
|
|
41
|
+
* Optional fee payer for any helper that pre-creates an ATA on
|
|
42
|
+
* behalf of a role (e.g. ensuring the Treasury ATA before settle).
|
|
43
|
+
* Falls back to whichever signer drives the relevant action.
|
|
44
|
+
*/
|
|
45
|
+
payer?: SacpSigner;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Top-level entry point. One instance per RPC connection; spin up new
|
|
49
|
+
* `JobSession`s for each Job you create or attach to.
|
|
50
|
+
*/
|
|
51
|
+
export declare class SacpClient {
|
|
52
|
+
readonly connection: Connection;
|
|
53
|
+
readonly payer: SacpSigner | undefined;
|
|
54
|
+
constructor(config: SacpClientConfig);
|
|
55
|
+
/**
|
|
56
|
+
* Create a new Job and return a session you can drive through its
|
|
57
|
+
* lifecycle. Combines `create_job` + the first `fund_job` into the
|
|
58
|
+
* caller's hands — the session begins in the `Open` state, and the
|
|
59
|
+
* client funds it via `session.fund()`.
|
|
60
|
+
*/
|
|
61
|
+
createJob(params: {
|
|
62
|
+
jobId: bigint;
|
|
63
|
+
actors: JobActors;
|
|
64
|
+
bondMint: PublicKey;
|
|
65
|
+
amount: bigint;
|
|
66
|
+
workUri: string;
|
|
67
|
+
submitWindowSecs?: bigint;
|
|
68
|
+
}): Promise<JobSession>;
|
|
69
|
+
/**
|
|
70
|
+
* Attach to an existing Job. Use this on the provider/evaluator side
|
|
71
|
+
* after they receive a Job ID off-band (webhook, queue, watcher).
|
|
72
|
+
*/
|
|
73
|
+
openJob(args: {
|
|
74
|
+
jobId: bigint;
|
|
75
|
+
actors: JobActors;
|
|
76
|
+
bondMint?: PublicKey;
|
|
77
|
+
}): Promise<JobSession>;
|
|
78
|
+
/** v0.9 — Offering registry namespace. Provider operations
|
|
79
|
+
* (register / update / close) plus buyer-side discovery (browse /
|
|
80
|
+
* createJobFromOffering). */
|
|
81
|
+
get offering(): OfferingNamespace;
|
|
82
|
+
/** v1.0 Phase 8 — Negotiation namespace. propose / counter /
|
|
83
|
+
* accept / materialize / cancel + session helper. */
|
|
84
|
+
get negotiation(): NegotiationNamespace;
|
|
85
|
+
/**
|
|
86
|
+
* Ensure the protocol Treasury ATA exists for `bondMint`. Idempotent.
|
|
87
|
+
* Pre-v0.6 there was nothing to do; v0.6+ every settlement reads
|
|
88
|
+
* this account, so call once per mint before the first settle.
|
|
89
|
+
*
|
|
90
|
+
* Works with any `SacpSigner` (`LocalSigner`, `RemoteSigner`,
|
|
91
|
+
* `WalletAdapterSigner`) — builds the create-ATA instruction and
|
|
92
|
+
* delegates the send to the signer. Skips the network call entirely
|
|
93
|
+
* when the ATA already exists.
|
|
94
|
+
*/
|
|
95
|
+
ensureTreasuryAta(bondMint: PublicKey, payer?: SacpSigner): Promise<PublicKey>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Stateful handle to one Job. Tracks role keys, derived ATAs, and
|
|
99
|
+
* fetches the current on-chain state on demand. Each lifecycle action
|
|
100
|
+
* (fund, submitWork, accept, dispute, submitVerdict, reclaim) is a
|
|
101
|
+
* single SDK call.
|
|
102
|
+
*/
|
|
103
|
+
export declare class JobSession {
|
|
104
|
+
readonly client: SacpClient;
|
|
105
|
+
readonly jobId: bigint;
|
|
106
|
+
readonly bondMint: PublicKey;
|
|
107
|
+
readonly actors: JobActors;
|
|
108
|
+
readonly clientAta: PublicKey;
|
|
109
|
+
readonly providerAta: PublicKey;
|
|
110
|
+
readonly evaluatorAta: PublicKey;
|
|
111
|
+
readonly treasuryAta: PublicKey;
|
|
112
|
+
private cached;
|
|
113
|
+
private constructor();
|
|
114
|
+
static attach(client: SacpClient, args: {
|
|
115
|
+
jobId: bigint;
|
|
116
|
+
actors: JobActors;
|
|
117
|
+
bondMint: PublicKey;
|
|
118
|
+
}): JobSession;
|
|
119
|
+
/** Force-refresh the on-chain Job state + Config (take rate may
|
|
120
|
+
* have shifted between settlement calls). */
|
|
121
|
+
refresh(): Promise<JobSnapshot>;
|
|
122
|
+
/** Most recently fetched Job snapshot, or `null` if `refresh()`
|
|
123
|
+
* hasn't been called yet. */
|
|
124
|
+
get snapshot(): JobSnapshot | null;
|
|
125
|
+
/**
|
|
126
|
+
* What this session's actors can do right now. Returns one entry
|
|
127
|
+
* per (role, action) pair so a UI can drive the right button per
|
|
128
|
+
* connected wallet.
|
|
129
|
+
*/
|
|
130
|
+
availableActions(): Promise<Array<{
|
|
131
|
+
role: "client" | "provider" | "evaluator" | "anyone";
|
|
132
|
+
action: JobAction;
|
|
133
|
+
}>>;
|
|
134
|
+
fund(amount?: bigint): Promise<string>;
|
|
135
|
+
submitWork(submissionUri: string): Promise<string>;
|
|
136
|
+
accept(): Promise<string>;
|
|
137
|
+
dispute(reasonHash: Uint8Array): Promise<string>;
|
|
138
|
+
submitVerdict(winner: VerdictWinner, options?: {
|
|
139
|
+
evidenceUri?: string;
|
|
140
|
+
}): Promise<string>;
|
|
141
|
+
reclaim(): Promise<string>;
|
|
142
|
+
fetchVerdict(): Promise<FetchedVerdict | null>;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* v0.9 — Offering helpers grouped behind `sacp.offering.*`. Each
|
|
146
|
+
* method is a one-shot thin wrapper around the low-level builders so
|
|
147
|
+
* providers register a catalog entry, browse / discover other
|
|
148
|
+
* providers, and buyers turn an Offering into a `JobSession` in a
|
|
149
|
+
* single call.
|
|
150
|
+
*/
|
|
151
|
+
export declare class OfferingNamespace {
|
|
152
|
+
private readonly client;
|
|
153
|
+
constructor(client: SacpClient);
|
|
154
|
+
/** Register a new Offering as the provider. Returns the offering
|
|
155
|
+
* PDA + the signed tx signature. */
|
|
156
|
+
register(provider: SacpSigner, params: Omit<RegisterOfferingParams, "provider">): Promise<{
|
|
157
|
+
pda: PublicKey;
|
|
158
|
+
signature: string;
|
|
159
|
+
}>;
|
|
160
|
+
update(provider: SacpSigner, params: Omit<UpdateOfferingParams, "provider">): Promise<string>;
|
|
161
|
+
close(provider: SacpSigner, slotId: number): Promise<string>;
|
|
162
|
+
fetch(provider: PublicKey, slotId: number): Promise<FetchedOffering | null>;
|
|
163
|
+
browse(filter?: Parameters<typeof listOfferings>[1]): Promise<FetchedOffering[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Turn an Offering into a Job in one call. Pulls bond_mint and
|
|
166
|
+
* default_evaluator from the Offering, lets the buyer override the
|
|
167
|
+
* evaluator and supply work_uri + amount. Validates amount falls
|
|
168
|
+
* within the Offering's min/max band.
|
|
169
|
+
*
|
|
170
|
+
* The returned `JobSession` is already in the `Open` state — call
|
|
171
|
+
* `.fund()` immediately to lock the escrow.
|
|
172
|
+
*/
|
|
173
|
+
createJobFrom(offering: FetchedOffering, args: {
|
|
174
|
+
jobId: bigint;
|
|
175
|
+
client: SacpSigner;
|
|
176
|
+
provider: SacpSigner;
|
|
177
|
+
/** Override the Offering's default evaluator. The override
|
|
178
|
+
* needs to be a real signer (the runtime stubs the rest). */
|
|
179
|
+
evaluator: SacpSigner;
|
|
180
|
+
amount: bigint;
|
|
181
|
+
workUri: string;
|
|
182
|
+
submitWindowSecs?: bigint;
|
|
183
|
+
}): Promise<JobSession>;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* v1.0 Phase 8 — Negotiation namespace + NegotiationSession.
|
|
187
|
+
*
|
|
188
|
+
* `sacp.negotiation.propose(...)` opens a Negotiation. The returned
|
|
189
|
+
* session exposes counter / accept / cancel / materialize, plus
|
|
190
|
+
* `availableActions()` so a UI knows whose turn it is.
|
|
191
|
+
*/
|
|
192
|
+
export declare class NegotiationNamespace {
|
|
193
|
+
private readonly client;
|
|
194
|
+
constructor(client: SacpClient);
|
|
195
|
+
propose(buyer: SacpSigner, args: {
|
|
196
|
+
provider: PublicKey;
|
|
197
|
+
evaluator: PublicKey;
|
|
198
|
+
bondMint: PublicKey;
|
|
199
|
+
negotiationId: bigint;
|
|
200
|
+
amount: bigint;
|
|
201
|
+
workUri: string;
|
|
202
|
+
submitWindowSecs: bigint;
|
|
203
|
+
}): Promise<NegotiationSession>;
|
|
204
|
+
attach(args: {
|
|
205
|
+
buyer: PublicKey;
|
|
206
|
+
negotiationId: bigint;
|
|
207
|
+
}): NegotiationSession;
|
|
208
|
+
fetch(buyer: PublicKey, negotiationId: bigint): Promise<FetchedNegotiation | null>;
|
|
209
|
+
}
|
|
210
|
+
export interface NegotiationSessionAction {
|
|
211
|
+
role: "buyer" | "provider";
|
|
212
|
+
action: "counter" | "accept" | "cancel" | "materialize";
|
|
213
|
+
}
|
|
214
|
+
export declare class NegotiationSession {
|
|
215
|
+
readonly client: SacpClient;
|
|
216
|
+
readonly buyer: PublicKey;
|
|
217
|
+
readonly negotiationId: bigint;
|
|
218
|
+
constructor(args: {
|
|
219
|
+
client: SacpClient;
|
|
220
|
+
buyer: PublicKey;
|
|
221
|
+
negotiationId: bigint;
|
|
222
|
+
});
|
|
223
|
+
refresh(): Promise<FetchedNegotiation>;
|
|
224
|
+
counter(signer: SacpSigner, terms: {
|
|
225
|
+
amount: bigint;
|
|
226
|
+
workUri: string;
|
|
227
|
+
submitWindowSecs: bigint;
|
|
228
|
+
}): Promise<string>;
|
|
229
|
+
accept(signer: SacpSigner): Promise<string>;
|
|
230
|
+
cancel(signer: SacpSigner): Promise<string>;
|
|
231
|
+
/**
|
|
232
|
+
* Buyer-only. After the negotiation is Accepted, mint the Job +
|
|
233
|
+
* escrow vault. Returns the created jobId so callers can attach a
|
|
234
|
+
* `JobSession` immediately.
|
|
235
|
+
*/
|
|
236
|
+
materialize(buyer: SacpSigner, args: {
|
|
237
|
+
jobId: bigint;
|
|
238
|
+
bondMint: PublicKey;
|
|
239
|
+
}): Promise<bigint>;
|
|
240
|
+
/** Returns which side(s) can act, given the current state + last
|
|
241
|
+
* proposer. UIs use this to enable / disable buttons. */
|
|
242
|
+
availableActions(): Promise<NegotiationSessionAction[]>;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|