@intent-engine/client 0.1.23 → 0.1.27
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/dist/src/accounts.d.ts +6 -0
- package/dist/src/accounts.js +15 -1
- package/dist/src/accounts.js.map +1 -1
- package/dist/src/budget.d.ts +6 -4
- package/dist/src/budget.js +24 -9
- package/dist/src/budget.js.map +1 -1
- package/dist/src/client-committee.d.ts +8 -0
- package/dist/src/client-committee.js +34 -0
- package/dist/src/client-committee.js.map +1 -0
- package/dist/src/client-errors.d.ts +33 -0
- package/dist/src/client-errors.js +65 -0
- package/dist/src/client-errors.js.map +1 -0
- package/dist/src/client-intents.d.ts +12 -0
- package/dist/src/client-intents.js +140 -0
- package/dist/src/client-intents.js.map +1 -0
- package/dist/src/client-reads.d.ts +7 -0
- package/dist/src/client-reads.js +61 -0
- package/dist/src/client-reads.js.map +1 -0
- package/dist/src/client-settle.d.ts +7 -0
- package/dist/src/client-settle.js +180 -0
- package/dist/src/client-settle.js.map +1 -0
- package/dist/src/client-types.d.ts +192 -0
- package/dist/src/client-types.js +9 -0
- package/dist/src/client-types.js.map +1 -0
- package/dist/src/client-watch.d.ts +4 -0
- package/dist/src/client-watch.js +97 -0
- package/dist/src/client-watch.js.map +1 -0
- package/dist/src/client.d.ts +5 -140
- package/dist/src/client.js +28 -309
- package/dist/src/client.js.map +1 -1
- package/dist/src/confirmation.d.ts +11 -0
- package/dist/src/confirmation.js +94 -0
- package/dist/src/confirmation.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/intent-notifications.d.ts +13 -0
- package/dist/src/intent-notifications.js +106 -0
- package/dist/src/intent-notifications.js.map +1 -0
- package/dist/src/job-deliveries.d.ts +40 -0
- package/dist/src/job-deliveries.js +92 -0
- package/dist/src/job-deliveries.js.map +1 -0
- package/dist/src/job-memos.d.ts +17 -0
- package/dist/src/job-memos.js +64 -0
- package/dist/src/job-memos.js.map +1 -0
- package/dist/src/job-origins.d.ts +30 -0
- package/dist/src/job-origins.js +53 -0
- package/dist/src/job-origins.js.map +1 -0
- package/dist/src/job-proofs.d.ts +17 -0
- package/dist/src/job-proofs.js +54 -0
- package/dist/src/job-proofs.js.map +1 -0
- package/dist/src/job-scan.d.ts +20 -0
- package/dist/src/job-scan.js +70 -0
- package/dist/src/job-scan.js.map +1 -0
- package/dist/src/job-specs.d.ts +40 -0
- package/dist/src/job-specs.js +107 -0
- package/dist/src/job-specs.js.map +1 -0
- package/dist/src/jobs.d.ts +6 -77
- package/dist/src/jobs.js +6 -186
- package/dist/src/jobs.js.map +1 -1
- package/dist/src/memoized-transport.d.ts +4 -0
- package/dist/src/memoized-transport.js +66 -0
- package/dist/src/memoized-transport.js.map +1 -0
- package/dist/src/reputation.d.ts +53 -0
- package/dist/src/reputation.js +176 -0
- package/dist/src/reputation.js.map +1 -0
- package/dist/src/rpc-retry.d.ts +16 -0
- package/dist/src/rpc-retry.js +62 -0
- package/dist/src/rpc-retry.js.map +1 -0
- package/dist/src/rpc-shapes.d.ts +230 -0
- package/dist/src/rpc-shapes.js +2 -0
- package/dist/src/rpc-shapes.js.map +1 -0
- package/dist/src/rpc-transport.d.ts +6 -0
- package/dist/src/rpc-transport.js +236 -0
- package/dist/src/rpc-transport.js.map +1 -0
- package/dist/src/simple-orders.d.ts +24 -0
- package/dist/src/simple-orders.js +101 -0
- package/dist/src/simple-orders.js.map +1 -0
- package/dist/src/simple-tokens.d.ts +19 -0
- package/dist/src/simple-tokens.js +84 -0
- package/dist/src/simple-tokens.js.map +1 -0
- package/dist/src/simple-types.d.ts +111 -0
- package/dist/src/simple-types.js +2 -0
- package/dist/src/simple-types.js.map +1 -0
- package/dist/src/simple-work.d.ts +12 -0
- package/dist/src/simple-work.js +69 -0
- package/dist/src/simple-work.js.map +1 -0
- package/dist/src/simple.d.ts +6 -0
- package/dist/src/simple.js +53 -0
- package/dist/src/simple.js.map +1 -0
- package/dist/src/svm.js +83 -27
- package/dist/src/svm.js.map +1 -1
- package/dist/src/transaction-keys.d.ts +6 -0
- package/dist/src/transaction-keys.js +19 -0
- package/dist/src/transaction-keys.js.map +1 -0
- package/dist/src/transport.d.ts +7 -223
- package/dist/src/transport.js +6 -467
- package/dist/src/transport.js.map +1 -1
- package/package.json +17 -6
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { createNoopSigner, getAddressDecoder } from "@solana/kit";
|
|
2
|
+
import { attestedProofMessage, buildCommitteeBatch, buildFillAttested, claimBoardAddress, CLAIMS_OPEN, getClaimBoardDecoder, getClaimBoardDiscriminatorBytes, IntentCoreError, stakeReceiverOnRelease, buildFillAttestedCommittee, committeeProofDigest, committeeSigners, decodeParams, feeBpsFor, IntentStatus, isSha256Hex, Kind, releaseMemo, signEd25519Instruction, splitFees, verifyCommitteeVote, } from "@intent-engine/core";
|
|
3
|
+
import { chainTime, createdAccount, engineAccount, loadIntent, SYSTEM_PROGRAM_ADDRESS } from "./accounts.js";
|
|
4
|
+
import { loadCommittee } from "./client-committee.js";
|
|
5
|
+
import { EscrowExpired, NotSettleable, PayeeMoved, PayToNotWallet, VoteRejected } from "./client-errors.js";
|
|
6
|
+
import { memoInstruction } from "./jobs.js";
|
|
7
|
+
import { tokenAccountIfMissing } from "./setup.js";
|
|
8
|
+
async function claimStakeTo(transport, intent, claims, payTo) {
|
|
9
|
+
if (claims !== CLAIMS_OPEN)
|
|
10
|
+
return null;
|
|
11
|
+
const board = await claimBoardAddress(intent);
|
|
12
|
+
const data = await engineAccount(transport, board, getClaimBoardDiscriminatorBytes(), "claim board");
|
|
13
|
+
const view = getClaimBoardDecoder().decode(data);
|
|
14
|
+
try {
|
|
15
|
+
return stakeReceiverOnRelease(view, await chainTime(transport), [payTo]);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error instanceof IntentCoreError) {
|
|
19
|
+
throw new NotSettleable(intent, `is claimed by ${view.worker} until ${view.until}, so only that worker can be paid until then`);
|
|
20
|
+
}
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function checkedSha256(deliveredSha256) {
|
|
25
|
+
const lowered = deliveredSha256?.toLowerCase();
|
|
26
|
+
if (lowered !== undefined && !isSha256Hex(lowered)) {
|
|
27
|
+
throw new RangeError("deliveredSha256 must be 64 hex digits");
|
|
28
|
+
}
|
|
29
|
+
return lowered;
|
|
30
|
+
}
|
|
31
|
+
async function planRelease({ transport, mint, config }, target, judgeOf) {
|
|
32
|
+
const { owner, nonce, payTo, result, payer } = target;
|
|
33
|
+
const [{ address, intent: held }, settings] = await Promise.all([loadIntent(transport, owner, nonce), config()]);
|
|
34
|
+
const params = decodeParams(held.kind, Uint8Array.from(held.params));
|
|
35
|
+
if (params.kind !== Kind.AttestedResult) {
|
|
36
|
+
throw new NotSettleable(address, "is not an AttestedResult intent");
|
|
37
|
+
}
|
|
38
|
+
if (params.specHash.every((b) => b === 0)) {
|
|
39
|
+
throw new NotSettleable(address, "commits no spec hash, so it is not a proof intent");
|
|
40
|
+
}
|
|
41
|
+
if (held.status !== IntentStatus.Open) {
|
|
42
|
+
throw new NotSettleable(address, "is not open");
|
|
43
|
+
}
|
|
44
|
+
const { feeOwner, judge } = await judgeOf(params.attestor, address);
|
|
45
|
+
if (held.expiresAt <= (await chainTime(transport))) {
|
|
46
|
+
throw new EscrowExpired(address, held.expiresAt);
|
|
47
|
+
}
|
|
48
|
+
const holder = await transport.getAccount(payTo);
|
|
49
|
+
if (holder !== null && holder.owner !== SYSTEM_PROGRAM_ADDRESS) {
|
|
50
|
+
throw new PayToNotWallet(payTo, holder.owner);
|
|
51
|
+
}
|
|
52
|
+
const stakeTo = await claimStakeTo(transport, address, held.claims, payTo);
|
|
53
|
+
const { tokenProgram } = await mint(held.inputMint);
|
|
54
|
+
const account = (wallet) => tokenAccountIfMissing(transport, payer, wallet, held.inputMint, tokenProgram);
|
|
55
|
+
const amountIn = held.escrowed - held.filled;
|
|
56
|
+
const kindBps = feeBpsFor(settings, held.kind);
|
|
57
|
+
const maxFeeBps = kindBps + held.partnerBps;
|
|
58
|
+
const shares = splitFees(amountIn - params.judgeFee, kindBps, held.partnerBps, held.partnerCutBps);
|
|
59
|
+
const feeRecipient = shares.protocol > 0n ? settings.feeRecipient : undefined;
|
|
60
|
+
const partner = shares.partner > 0n ? held.partner : undefined;
|
|
61
|
+
const paidJudge = params.judgeFee > 0n ? feeOwner : undefined;
|
|
62
|
+
const payee = await account(payTo);
|
|
63
|
+
if (payee.create.length === 0) {
|
|
64
|
+
const existing = await createdAccount(transport, payee.address);
|
|
65
|
+
const data = existing === null || existing.owner !== tokenProgram || existing.data.length < 64 ? null : existing.data;
|
|
66
|
+
if (data === null ||
|
|
67
|
+
getAddressDecoder().decode(data.subarray(0, 32)) !== held.inputMint ||
|
|
68
|
+
getAddressDecoder().decode(data.subarray(32, 64)) !== payTo) {
|
|
69
|
+
throw new PayeeMoved(payTo, payee.address);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const others = await Promise.all([feeRecipient, partner, paidJudge].filter((wallet) => wallet !== undefined).map(account));
|
|
73
|
+
const fields = { amountIn, result, maxFeeBps };
|
|
74
|
+
return {
|
|
75
|
+
intent: address,
|
|
76
|
+
judge,
|
|
77
|
+
proof: {
|
|
78
|
+
...fields,
|
|
79
|
+
domain: Uint8Array.from(settings.domain),
|
|
80
|
+
intent: address,
|
|
81
|
+
payee: payee.address,
|
|
82
|
+
filled: held.filled,
|
|
83
|
+
revision: held.revision,
|
|
84
|
+
specHash: params.specHash,
|
|
85
|
+
},
|
|
86
|
+
fill: {
|
|
87
|
+
...fields,
|
|
88
|
+
owner,
|
|
89
|
+
nonce,
|
|
90
|
+
inputMint: held.inputMint,
|
|
91
|
+
inputTokenProgram: tokenProgram,
|
|
92
|
+
payee: payee.address,
|
|
93
|
+
...(feeRecipient === undefined ? {} : { feeRecipient }),
|
|
94
|
+
...(partner === undefined ? {} : { partner }),
|
|
95
|
+
...(paidJudge === undefined ? {} : { judge: paidJudge }),
|
|
96
|
+
},
|
|
97
|
+
setup: [payee, ...others].flatMap(({ create }) => create),
|
|
98
|
+
claims: held.claims === CLAIMS_OPEN
|
|
99
|
+
? { claims: await claimBoardAddress(address), ...(stakeTo === null ? {} : { stakeTo }) }
|
|
100
|
+
: {},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function recorded(payer, deliveredSha256) {
|
|
104
|
+
return deliveredSha256 === undefined ? [] : [memoInstruction(payer, releaseMemo(deliveredSha256))];
|
|
105
|
+
}
|
|
106
|
+
export function proofSettlement(context) {
|
|
107
|
+
const settleProof = async (input) => {
|
|
108
|
+
const { judge } = input;
|
|
109
|
+
const deliveredSha256 = checkedSha256(input.deliveredSha256);
|
|
110
|
+
const payer = input.payer ?? judge;
|
|
111
|
+
const plan = await planRelease(context, { ...input, payer }, async (attestor, intent) => {
|
|
112
|
+
if (attestor !== judge.address) {
|
|
113
|
+
throw new NotSettleable(intent, `names ${attestor} as its judge, not ${judge.address}`);
|
|
114
|
+
}
|
|
115
|
+
return { feeOwner: judge.address, judge: judge.address };
|
|
116
|
+
});
|
|
117
|
+
const message = await attestedProofMessage(judge.address, plan.proof);
|
|
118
|
+
const settle = await buildFillAttested({ ...plan.fill, ...plan.claims, solver: judge });
|
|
119
|
+
return context.send([...plan.setup, await signEd25519Instruction(judge, message), settle, ...recorded(judge, deliveredSha256)], payer);
|
|
120
|
+
};
|
|
121
|
+
return settleProof;
|
|
122
|
+
}
|
|
123
|
+
export function committeeSettlement(context) {
|
|
124
|
+
const planned = async (target) => {
|
|
125
|
+
const plan = await planRelease(context, target, async (attestor, intent) => {
|
|
126
|
+
const committee = await loadCommittee(context.transport, attestor);
|
|
127
|
+
if (committee === null) {
|
|
128
|
+
throw new NotSettleable(intent, `names ${attestor} as its judge, which is not a committee`);
|
|
129
|
+
}
|
|
130
|
+
return { feeOwner: committee.feeWallet, judge: committee };
|
|
131
|
+
});
|
|
132
|
+
return { plan, committee: plan.judge, digest: await committeeProofDigest(plan.proof) };
|
|
133
|
+
};
|
|
134
|
+
const committeeBallot = async (input) => {
|
|
135
|
+
const { plan, committee, digest } = await planned({ ...input, payer: createNoopSigner(input.payTo) });
|
|
136
|
+
return { intent: plan.intent, committee, payee: plan.proof.payee, digest };
|
|
137
|
+
};
|
|
138
|
+
const prepareCommitteeRelease = async (input) => {
|
|
139
|
+
const deliveredSha256 = checkedSha256(input.deliveredSha256);
|
|
140
|
+
const payer = input.payer ?? input.solver;
|
|
141
|
+
const { plan, committee, digest } = await planned({ ...input, payer });
|
|
142
|
+
for (const vote of input.votes) {
|
|
143
|
+
if (!(await verifyCommitteeVote(vote, digest))) {
|
|
144
|
+
throw new VoteRejected(vote.member, plan.intent);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (deliveredSha256 !== undefined && !input.votes.some((vote) => vote.member === input.solver.address)) {
|
|
148
|
+
throw new NotSettleable(plan.intent, `records the delivered work only when a member who voted submits the release, and ${input.solver.address} did not vote`);
|
|
149
|
+
}
|
|
150
|
+
const needed = [...input.votes]
|
|
151
|
+
.sort((a, b) => committee.members.indexOf(a.member) - committee.members.indexOf(b.member))
|
|
152
|
+
.slice(0, committee.threshold);
|
|
153
|
+
const { instruction, mask } = buildCommitteeBatch(committee, digest, needed);
|
|
154
|
+
const settle = await buildFillAttestedCommittee({
|
|
155
|
+
...plan.fill,
|
|
156
|
+
...plan.claims,
|
|
157
|
+
solver: input.solver,
|
|
158
|
+
committee: committee.address,
|
|
159
|
+
signers: mask,
|
|
160
|
+
});
|
|
161
|
+
return {
|
|
162
|
+
intent: plan.intent,
|
|
163
|
+
committee,
|
|
164
|
+
payee: plan.proof.payee,
|
|
165
|
+
signers: committeeSigners(committee, mask),
|
|
166
|
+
payer,
|
|
167
|
+
setup: plan.setup,
|
|
168
|
+
instructions: [instruction, settle, ...recorded(input.solver, deliveredSha256)],
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
const settleCommittee = async (input) => {
|
|
172
|
+
const { setup, instructions, payer } = await prepareCommitteeRelease(input);
|
|
173
|
+
if (setup.length > 0) {
|
|
174
|
+
await context.send(setup, payer);
|
|
175
|
+
}
|
|
176
|
+
return context.send(instructions, payer);
|
|
177
|
+
};
|
|
178
|
+
return { committeeBallot, prepareCommitteeRelease, settleCommittee };
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=client-settle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-settle.js","sourceRoot":"","sources":["../../src/client-settle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { Address, Instruction, KeyPairSigner, Signature, TransactionSigner } from "@solana/kit";
|
|
2
|
+
import type { CommitteeTerms, CommitteeVote, Config, EngineEvent, Intent, IntentParams } from "@intent-engine/core";
|
|
3
|
+
import type { Priority } from "./budget.js";
|
|
4
|
+
import type { FeedbackInput, Reputation, ReputationOptions } from "./reputation.js";
|
|
5
|
+
import type { EngineError } from "./errors.js";
|
|
6
|
+
import type { DeliverInput, Delivery, DeliveryRecord, Job, Spec, SpecFetch } from "./jobs.js";
|
|
7
|
+
import type { Notifications, Simulation, Transport } from "./transport.js";
|
|
8
|
+
export type ClientOptions = {
|
|
9
|
+
url: string;
|
|
10
|
+
transport?: Transport;
|
|
11
|
+
notifications?: Notifications;
|
|
12
|
+
priority?: Priority;
|
|
13
|
+
pollMs?: number;
|
|
14
|
+
resyncSeconds?: number;
|
|
15
|
+
fetch?: SpecFetch;
|
|
16
|
+
};
|
|
17
|
+
export type IntentAccount = {
|
|
18
|
+
address: Address;
|
|
19
|
+
intent: Intent;
|
|
20
|
+
};
|
|
21
|
+
export type IntentFilter = {
|
|
22
|
+
owner?: Address;
|
|
23
|
+
status?: number;
|
|
24
|
+
};
|
|
25
|
+
export type WatchCallback = (changed: IntentAccount[], closed: IntentAccount[]) => void;
|
|
26
|
+
export type WatchOptions = {
|
|
27
|
+
owner?: Address;
|
|
28
|
+
onError?: (error: unknown) => void;
|
|
29
|
+
};
|
|
30
|
+
export type Mint = {
|
|
31
|
+
decimals: number;
|
|
32
|
+
tokenProgram: Address;
|
|
33
|
+
};
|
|
34
|
+
export type CreateIntentInput = {
|
|
35
|
+
signer: TransactionSigner;
|
|
36
|
+
params: IntentParams;
|
|
37
|
+
inputMint: Address;
|
|
38
|
+
outputMint: Address;
|
|
39
|
+
expiresIn?: bigint;
|
|
40
|
+
expiresAt?: bigint;
|
|
41
|
+
nonce?: bigint;
|
|
42
|
+
receiver?: Address;
|
|
43
|
+
specUrl?: string;
|
|
44
|
+
};
|
|
45
|
+
export type CreatedIntent = {
|
|
46
|
+
signature: Signature;
|
|
47
|
+
intent: Address;
|
|
48
|
+
nonce: bigint;
|
|
49
|
+
};
|
|
50
|
+
export type SettleProofInput = {
|
|
51
|
+
judge: KeyPairSigner;
|
|
52
|
+
owner: Address;
|
|
53
|
+
nonce: bigint;
|
|
54
|
+
payTo: Address;
|
|
55
|
+
result: bigint;
|
|
56
|
+
payer?: TransactionSigner;
|
|
57
|
+
deliveredSha256?: string;
|
|
58
|
+
};
|
|
59
|
+
export type CommitteeView = CommitteeTerms & {
|
|
60
|
+
address: Address;
|
|
61
|
+
id: Uint8Array;
|
|
62
|
+
createdAt: bigint;
|
|
63
|
+
};
|
|
64
|
+
export type CreateCommitteeInput = CommitteeTerms & {
|
|
65
|
+
payer: TransactionSigner;
|
|
66
|
+
};
|
|
67
|
+
export type CreatedCommittee = {
|
|
68
|
+
committee: Address;
|
|
69
|
+
signature: Signature | null;
|
|
70
|
+
};
|
|
71
|
+
export type BallotInput = {
|
|
72
|
+
owner: Address;
|
|
73
|
+
nonce: bigint;
|
|
74
|
+
payTo: Address;
|
|
75
|
+
result: bigint;
|
|
76
|
+
};
|
|
77
|
+
export type CommitteeBallot = {
|
|
78
|
+
intent: Address;
|
|
79
|
+
committee: CommitteeView;
|
|
80
|
+
payee: Address;
|
|
81
|
+
digest: Uint8Array;
|
|
82
|
+
};
|
|
83
|
+
export type SettleCommitteeInput = BallotInput & {
|
|
84
|
+
solver: TransactionSigner;
|
|
85
|
+
votes: readonly CommitteeVote[];
|
|
86
|
+
payer?: TransactionSigner;
|
|
87
|
+
deliveredSha256?: string;
|
|
88
|
+
};
|
|
89
|
+
export type CommitteeRelease = {
|
|
90
|
+
intent: Address;
|
|
91
|
+
committee: CommitteeView;
|
|
92
|
+
payee: Address;
|
|
93
|
+
signers: Address[];
|
|
94
|
+
payer: TransactionSigner;
|
|
95
|
+
setup: Instruction[];
|
|
96
|
+
instructions: Instruction[];
|
|
97
|
+
};
|
|
98
|
+
export type HistoryEvent = EngineEvent & {
|
|
99
|
+
signature: Signature;
|
|
100
|
+
slot: bigint;
|
|
101
|
+
blockTime: bigint | null;
|
|
102
|
+
deliveredSha256?: string;
|
|
103
|
+
};
|
|
104
|
+
export type FillInput = {
|
|
105
|
+
solver: TransactionSigner;
|
|
106
|
+
owner: Address;
|
|
107
|
+
nonce: bigint;
|
|
108
|
+
amountIn?: bigint;
|
|
109
|
+
amountOut?: bigint;
|
|
110
|
+
route?: readonly Instruction[];
|
|
111
|
+
};
|
|
112
|
+
export type Fill = {
|
|
113
|
+
steps: 1 | 2;
|
|
114
|
+
solver: Address;
|
|
115
|
+
delivered: bigint;
|
|
116
|
+
required: bigint;
|
|
117
|
+
fee: bigint;
|
|
118
|
+
net: bigint;
|
|
119
|
+
signature: Signature;
|
|
120
|
+
slot: bigint;
|
|
121
|
+
blockTime: bigint | null;
|
|
122
|
+
};
|
|
123
|
+
export type TokenBalance = {
|
|
124
|
+
mint: Address;
|
|
125
|
+
name: string | undefined;
|
|
126
|
+
account: Address;
|
|
127
|
+
amount: bigint;
|
|
128
|
+
decimals: number;
|
|
129
|
+
};
|
|
130
|
+
export type Balances = {
|
|
131
|
+
sol: bigint;
|
|
132
|
+
tokens: TokenBalance[];
|
|
133
|
+
};
|
|
134
|
+
export type Client = {
|
|
135
|
+
readonly url: string;
|
|
136
|
+
readonly transport: Transport;
|
|
137
|
+
config(): Promise<Config>;
|
|
138
|
+
intent(owner: Address, nonce: bigint): Promise<IntentAccount | null>;
|
|
139
|
+
intents(filter?: IntentFilter): Promise<IntentAccount[]>;
|
|
140
|
+
history(intent: Address, limit?: number): Promise<HistoryEvent[]>;
|
|
141
|
+
nextNonce(owner: Address): Promise<bigint>;
|
|
142
|
+
simulate(instructions: readonly Instruction[], signer: TransactionSigner): Promise<Simulation>;
|
|
143
|
+
send(instructions: readonly Instruction[], signer: TransactionSigner): Promise<Signature>;
|
|
144
|
+
watch(onChange: WatchCallback, signal: AbortSignal, filter?: WatchOptions): Promise<void>;
|
|
145
|
+
explain(error: unknown): EngineError | null;
|
|
146
|
+
mint(address: Address): Promise<Mint>;
|
|
147
|
+
chainTime(): Promise<bigint>;
|
|
148
|
+
createIntent(input: CreateIntentInput): Promise<CreatedIntent>;
|
|
149
|
+
cancel(signer: TransactionSigner, nonce: bigint): Promise<Signature>;
|
|
150
|
+
unwrap(signer: TransactionSigner): Promise<Signature | null>;
|
|
151
|
+
settleProof(input: SettleProofInput): Promise<Signature>;
|
|
152
|
+
committee(address: Address): Promise<CommitteeView | null>;
|
|
153
|
+
createCommittee(input: CreateCommitteeInput): Promise<CreatedCommittee>;
|
|
154
|
+
committeeBallot(input: BallotInput): Promise<CommitteeBallot>;
|
|
155
|
+
prepareCommitteeRelease(input: SettleCommitteeInput): Promise<CommitteeRelease>;
|
|
156
|
+
settleCommittee(input: SettleCommitteeInput): Promise<Signature>;
|
|
157
|
+
reputation(wallet: Address, options?: ReputationOptions): Promise<Reputation>;
|
|
158
|
+
feedback(input: FeedbackInput): Promise<Signature>;
|
|
159
|
+
fill(input: FillInput): Promise<Signature>;
|
|
160
|
+
fillOf(intent: Address): Promise<Fill | null>;
|
|
161
|
+
expire(cranker: TransactionSigner, owner: Address, nonce: bigint): Promise<Signature>;
|
|
162
|
+
close(cranker: TransactionSigner, owner: Address, nonce: bigint): Promise<Signature>;
|
|
163
|
+
balances(owner: Address, mints: readonly Address[]): Promise<Balances>;
|
|
164
|
+
jobs(filter?: {
|
|
165
|
+
attestor?: Address;
|
|
166
|
+
}): Promise<Job[]>;
|
|
167
|
+
spec(intent: Address): Promise<Spec | null>;
|
|
168
|
+
deliver(input: DeliverInput): Promise<Signature>;
|
|
169
|
+
deliveries(filter: {
|
|
170
|
+
judge: Address;
|
|
171
|
+
intent?: Address;
|
|
172
|
+
}): Promise<Delivery[]>;
|
|
173
|
+
deliveryRecord(filter: {
|
|
174
|
+
judge: Address;
|
|
175
|
+
intent?: Address;
|
|
176
|
+
pages?: number;
|
|
177
|
+
}): Promise<DeliveryRecord>;
|
|
178
|
+
};
|
|
179
|
+
export declare const SPEC_URL_NEEDS_PROOF = "specUrl needs an AttestedResult intent with a non-zero specHash";
|
|
180
|
+
export declare const DEFAULT_EXPIRES_IN = 3600n;
|
|
181
|
+
export declare const MIN_EXPIRES_IN = 60n;
|
|
182
|
+
export declare const MAX_EXPIRES_IN = 31536000n;
|
|
183
|
+
export declare const EXPIRES_IN_RANGE: string;
|
|
184
|
+
export declare const HISTORY_LIMIT = 100;
|
|
185
|
+
export declare const WATCH_POLL_MS = 2000;
|
|
186
|
+
export declare const WATCH_WAIT_SECONDS = 10;
|
|
187
|
+
export type ClientContext = {
|
|
188
|
+
transport: Transport;
|
|
189
|
+
send(instructions: readonly Instruction[], signer: TransactionSigner): Promise<Signature>;
|
|
190
|
+
mint(address: Address): Promise<Mint>;
|
|
191
|
+
config(): Promise<Config>;
|
|
192
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const SPEC_URL_NEEDS_PROOF = "specUrl needs an AttestedResult intent with a non-zero specHash";
|
|
2
|
+
export const DEFAULT_EXPIRES_IN = 3600n;
|
|
3
|
+
export const MIN_EXPIRES_IN = 60n;
|
|
4
|
+
export const MAX_EXPIRES_IN = 31536000n;
|
|
5
|
+
export const EXPIRES_IN_RANGE = `expiresIn must be from ${MIN_EXPIRES_IN} to ${MAX_EXPIRES_IN} seconds`;
|
|
6
|
+
export const HISTORY_LIMIT = 100;
|
|
7
|
+
export const WATCH_POLL_MS = 2_000;
|
|
8
|
+
export const WATCH_WAIT_SECONDS = 10;
|
|
9
|
+
//# sourceMappingURL=client-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-types.js","sourceRoot":"","sources":["../../src/client-types.ts"],"names":[],"mappings":"AAyJA,MAAM,CAAC,MAAM,oBAAoB,GAAG,iEAAiE,CAAC;AAEtG,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAM,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAW,CAAC;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,cAAc,OAAO,cAAc,UAAU,CAAC;AACxG,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IntentAccount, WatchCallback, WatchOptions } from "./client-types.js";
|
|
2
|
+
import { type Notifications, type ProgramAccount, type Transport } from "./transport.js";
|
|
3
|
+
export declare const decoded: ({ address, data }: ProgramAccount) => IntentAccount;
|
|
4
|
+
export declare function watchIntents(transport: Transport, notifications: Notifications | undefined, pollMs: number, resyncSeconds: number): (onChange: WatchCallback, signal: AbortSignal, filter?: WatchOptions) => Promise<void>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { getIntentDecoder } from "@intent-engine/core";
|
|
2
|
+
import { changesFrom, pause } from "./transport.js";
|
|
3
|
+
export const decoded = ({ address, data }) => ({ address, intent: getIntentDecoder().decode(data) });
|
|
4
|
+
export function watchIntents(transport, notifications, pollMs, resyncSeconds) {
|
|
5
|
+
const watch = async (onChange, signal, filter = {}) => {
|
|
6
|
+
if (signal.aborted) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const seen = new Map();
|
|
10
|
+
const fresh = (accounts) => accounts.flatMap((account) => {
|
|
11
|
+
const view = decoded(account);
|
|
12
|
+
if (filter.owner !== undefined && view.intent.owner !== filter.owner) {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
const key = Buffer.from(account.data).toString("base64");
|
|
16
|
+
if (seen.get(account.address)?.key === key) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
seen.set(account.address, { key, view });
|
|
20
|
+
return [view];
|
|
21
|
+
});
|
|
22
|
+
let read = false;
|
|
23
|
+
const report = (changed, closed, first = false) => {
|
|
24
|
+
if ((changed.length > 0 || closed.length > 0 || first) && !signal.aborted) {
|
|
25
|
+
onChange(changed, closed);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
let highest;
|
|
29
|
+
const raise = (slot) => {
|
|
30
|
+
if (slot !== undefined && (highest === undefined || slot > highest)) {
|
|
31
|
+
highest = slot;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const failed = (error) => {
|
|
35
|
+
if (!signal.aborted) {
|
|
36
|
+
filter.onError?.(error);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const sync = async (heard) => {
|
|
40
|
+
raise(heard);
|
|
41
|
+
const floor = highest;
|
|
42
|
+
const reading = {
|
|
43
|
+
...(floor === undefined ? {} : { minContextSlot: floor }),
|
|
44
|
+
onSlot: (slot) => {
|
|
45
|
+
reading.at = slot;
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
const accounts = await transport.intents(filter.owner, reading).catch((error) => {
|
|
49
|
+
failed(error);
|
|
50
|
+
return null;
|
|
51
|
+
});
|
|
52
|
+
if (accounts === null) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (reading.at !== undefined && floor !== undefined && reading.at < floor) {
|
|
56
|
+
failed(new Error(`the intents read at slot ${reading.at} is older than slot ${floor}, which the watch has already seen`));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
raise(reading.at);
|
|
60
|
+
const present = new Set(accounts.map(({ address }) => address));
|
|
61
|
+
const changed = fresh(accounts);
|
|
62
|
+
const closed = [...seen].filter(([address]) => !present.has(address)).map(([, { view }]) => view);
|
|
63
|
+
for (const { address } of closed) {
|
|
64
|
+
seen.delete(address);
|
|
65
|
+
}
|
|
66
|
+
report(changed, closed, !read);
|
|
67
|
+
read = true;
|
|
68
|
+
};
|
|
69
|
+
if (notifications === undefined) {
|
|
70
|
+
while (!signal.aborted) {
|
|
71
|
+
await sync();
|
|
72
|
+
await pause(pollMs, signal);
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const changes = changesFrom(notifications);
|
|
77
|
+
const stop = () => changes.close();
|
|
78
|
+
signal.addEventListener("abort", stop, { once: true });
|
|
79
|
+
try {
|
|
80
|
+
await sync();
|
|
81
|
+
let synced = Date.now();
|
|
82
|
+
while (!signal.aborted) {
|
|
83
|
+
report(fresh((await changes.wait(resyncSeconds)) ?? []), []);
|
|
84
|
+
if (!signal.aborted && Date.now() - synced >= resyncSeconds * 1000) {
|
|
85
|
+
await sync(changes.slot?.());
|
|
86
|
+
synced = Date.now();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
signal.removeEventListener("abort", stop);
|
|
92
|
+
changes.close();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
return watch;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=client-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-watch.js","sourceRoot":"","sources":["../../src/client-watch.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,141 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import { type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { type Notifications, type Simulation, type Transport } from "./transport.js";
|
|
7
|
-
export type ClientOptions = {
|
|
8
|
-
url: string;
|
|
9
|
-
transport?: Transport;
|
|
10
|
-
notifications?: Notifications;
|
|
11
|
-
priority?: Priority;
|
|
12
|
-
pollMs?: number;
|
|
13
|
-
resyncSeconds?: number;
|
|
14
|
-
fetch?: SpecFetch;
|
|
15
|
-
};
|
|
16
|
-
export type IntentAccount = {
|
|
17
|
-
address: Address;
|
|
18
|
-
intent: Intent;
|
|
19
|
-
};
|
|
20
|
-
export type IntentFilter = {
|
|
21
|
-
owner?: Address;
|
|
22
|
-
status?: number;
|
|
23
|
-
};
|
|
24
|
-
export type WatchCallback = (changed: IntentAccount[], closed: IntentAccount[]) => void;
|
|
25
|
-
export type Mint = {
|
|
26
|
-
decimals: number;
|
|
27
|
-
tokenProgram: Address;
|
|
28
|
-
};
|
|
29
|
-
export type CreateIntentInput = {
|
|
30
|
-
signer: TransactionSigner;
|
|
31
|
-
params: IntentParams;
|
|
32
|
-
inputMint: Address;
|
|
33
|
-
outputMint: Address;
|
|
34
|
-
expiresIn?: bigint;
|
|
35
|
-
expiresAt?: bigint;
|
|
36
|
-
nonce?: bigint;
|
|
37
|
-
receiver?: Address;
|
|
38
|
-
specUrl?: string;
|
|
39
|
-
};
|
|
40
|
-
export type CreatedIntent = {
|
|
41
|
-
signature: Signature;
|
|
42
|
-
intent: Address;
|
|
43
|
-
nonce: bigint;
|
|
44
|
-
};
|
|
45
|
-
export type SettleProofInput = {
|
|
46
|
-
judge: KeyPairSigner;
|
|
47
|
-
owner: Address;
|
|
48
|
-
nonce: bigint;
|
|
49
|
-
payTo: Address;
|
|
50
|
-
result: bigint;
|
|
51
|
-
payer?: TransactionSigner;
|
|
52
|
-
deliveredSha256?: string;
|
|
53
|
-
};
|
|
54
|
-
export type HistoryEvent = EngineEvent & {
|
|
55
|
-
signature: Signature;
|
|
56
|
-
slot: bigint;
|
|
57
|
-
blockTime: bigint | null;
|
|
58
|
-
};
|
|
59
|
-
export type FillInput = {
|
|
60
|
-
solver: TransactionSigner;
|
|
61
|
-
owner: Address;
|
|
62
|
-
nonce: bigint;
|
|
63
|
-
amountIn?: bigint;
|
|
64
|
-
amountOut?: bigint;
|
|
65
|
-
route?: readonly Instruction[];
|
|
66
|
-
};
|
|
67
|
-
export type Fill = {
|
|
68
|
-
steps: 1 | 2;
|
|
69
|
-
solver: Address;
|
|
70
|
-
delivered: bigint;
|
|
71
|
-
required: bigint;
|
|
72
|
-
fee: bigint;
|
|
73
|
-
net: bigint;
|
|
74
|
-
signature: Signature;
|
|
75
|
-
slot: bigint;
|
|
76
|
-
blockTime: bigint | null;
|
|
77
|
-
};
|
|
78
|
-
export type TokenBalance = {
|
|
79
|
-
mint: Address;
|
|
80
|
-
name: string | undefined;
|
|
81
|
-
account: Address;
|
|
82
|
-
amount: bigint;
|
|
83
|
-
decimals: number;
|
|
84
|
-
};
|
|
85
|
-
export type Balances = {
|
|
86
|
-
sol: bigint;
|
|
87
|
-
tokens: TokenBalance[];
|
|
88
|
-
};
|
|
89
|
-
export type Client = {
|
|
90
|
-
readonly url: string;
|
|
91
|
-
readonly transport: Transport;
|
|
92
|
-
config(): Promise<Config>;
|
|
93
|
-
intent(owner: Address, nonce: bigint): Promise<IntentAccount | null>;
|
|
94
|
-
intents(filter?: IntentFilter): Promise<IntentAccount[]>;
|
|
95
|
-
history(intent: Address, limit?: number): Promise<HistoryEvent[]>;
|
|
96
|
-
nextNonce(owner: Address): Promise<bigint>;
|
|
97
|
-
simulate(instructions: readonly Instruction[], signer: TransactionSigner): Promise<Simulation>;
|
|
98
|
-
send(instructions: readonly Instruction[], signer: TransactionSigner): Promise<Signature>;
|
|
99
|
-
watch(onChange: WatchCallback, signal: AbortSignal, filter?: {
|
|
100
|
-
owner?: Address;
|
|
101
|
-
}): Promise<void>;
|
|
102
|
-
explain(error: unknown): EngineError | null;
|
|
103
|
-
mint(address: Address): Promise<Mint>;
|
|
104
|
-
chainTime(): Promise<bigint>;
|
|
105
|
-
createIntent(input: CreateIntentInput): Promise<CreatedIntent>;
|
|
106
|
-
cancel(signer: TransactionSigner, nonce: bigint): Promise<Signature>;
|
|
107
|
-
unwrap(signer: TransactionSigner): Promise<Signature | null>;
|
|
108
|
-
settleProof(input: SettleProofInput): Promise<Signature>;
|
|
109
|
-
fill(input: FillInput): Promise<Signature>;
|
|
110
|
-
fillOf(intent: Address): Promise<Fill | null>;
|
|
111
|
-
expire(cranker: TransactionSigner, owner: Address, nonce: bigint): Promise<Signature>;
|
|
112
|
-
close(cranker: TransactionSigner, owner: Address, nonce: bigint): Promise<Signature>;
|
|
113
|
-
balances(owner: Address, mints: readonly Address[]): Promise<Balances>;
|
|
114
|
-
jobs(filter?: {
|
|
115
|
-
attestor?: Address;
|
|
116
|
-
}): Promise<Job[]>;
|
|
117
|
-
spec(intent: Address): Promise<Spec | null>;
|
|
118
|
-
deliver(input: DeliverInput): Promise<Signature>;
|
|
119
|
-
deliveries(filter: {
|
|
120
|
-
judge: Address;
|
|
121
|
-
intent?: Address;
|
|
122
|
-
}): Promise<Delivery[]>;
|
|
123
|
-
};
|
|
124
|
-
export declare const SPEC_URL_NEEDS_PROOF = "specUrl needs an AttestedResult intent with a non-zero specHash";
|
|
125
|
-
export declare const DEFAULT_EXPIRES_IN = 3600n;
|
|
126
|
-
export declare const HISTORY_LIMIT = 100;
|
|
127
|
-
export declare const WATCH_POLL_MS = 2000;
|
|
128
|
-
export declare const WATCH_WAIT_SECONDS = 10;
|
|
129
|
-
export declare class NoFreeNonce extends Error {
|
|
130
|
-
readonly owner: Address;
|
|
131
|
-
constructor(owner: Address);
|
|
132
|
-
}
|
|
133
|
-
export declare class NotSettleable extends Error {
|
|
134
|
-
readonly intent: Address;
|
|
135
|
-
constructor(intent: Address, reason: string);
|
|
136
|
-
}
|
|
137
|
-
export declare class NotFillable extends Error {
|
|
138
|
-
readonly intent: Address;
|
|
139
|
-
constructor(intent: Address, reason: string);
|
|
140
|
-
}
|
|
1
|
+
export { loadCommittee } from "./client-committee.js";
|
|
2
|
+
import { type Client, type ClientOptions } from "./client-types.js";
|
|
3
|
+
export type { Balances, BallotInput, Client, ClientOptions, CommitteeBallot, CommitteeRelease, CommitteeView, CreateCommitteeInput, CreatedCommittee, CreatedIntent, CreateIntentInput, Fill, FillInput, HistoryEvent, IntentAccount, IntentFilter, Mint, SettleCommitteeInput, SettleProofInput, TokenBalance, WatchCallback, WatchOptions, } from "./client-types.js";
|
|
4
|
+
export { DEFAULT_EXPIRES_IN, EXPIRES_IN_RANGE, HISTORY_LIMIT, MAX_EXPIRES_IN, MIN_EXPIRES_IN, SPEC_URL_NEEDS_PROOF, WATCH_POLL_MS, WATCH_WAIT_SECONDS, } from "./client-types.js";
|
|
5
|
+
export { EscrowExpired, NoFreeNonce, NotFillable, NotSettleable, PayeeMoved, PayToNotWallet, VoteRejected, } from "./client-errors.js";
|
|
141
6
|
export declare function createClient(options: ClientOptions): Client;
|