@intent-engine/client 0.1.26 → 0.1.28
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/client-claims.d.ts +15 -0
- package/dist/src/client-claims.js +38 -0
- package/dist/src/client-claims.js.map +1 -0
- 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 +5 -0
- package/dist/src/client-errors.js +10 -0
- package/dist/src/client-errors.js.map +1 -1
- package/dist/src/client-intents.js +9 -2
- package/dist/src/client-intents.js.map +1 -1
- package/dist/src/client-settle.d.ts +7 -2
- package/dist/src/client-settle.js +155 -59
- package/dist/src/client-settle.js.map +1 -1
- package/dist/src/client-types.d.ts +51 -1
- package/dist/src/client-types.js.map +1 -1
- package/dist/src/client.d.ts +4 -2
- package/dist/src/client.js +18 -2
- package/dist/src/client.js.map +1 -1
- 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/job-memos.d.ts +2 -1
- package/dist/src/job-memos.js +18 -5
- package/dist/src/job-memos.js.map +1 -1
- package/dist/src/jobs.d.ts +1 -1
- package/dist/src/jobs.js +1 -1
- package/dist/src/jobs.js.map +1 -1
- 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/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/package.json +3 -3
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Address, Instruction, KeyPairSigner, Signature, TransactionSigner } from "@solana/kit";
|
|
2
|
-
import type { Config, EngineEvent, Intent, IntentParams } from "@intent-engine/core";
|
|
2
|
+
import type { CommitteeTerms, CommitteeVote, Config, EngineEvent, Intent, IntentParams, ProfileView } from "@intent-engine/core";
|
|
3
3
|
import type { Priority } from "./budget.js";
|
|
4
|
+
import type { ClaimsView } from "./client-claims.js";
|
|
5
|
+
import type { FeedbackInput, Reputation, ReputationOptions } from "./reputation.js";
|
|
4
6
|
import type { EngineError } from "./errors.js";
|
|
5
7
|
import type { DeliverInput, Delivery, DeliveryRecord, Job, Spec, SpecFetch } from "./jobs.js";
|
|
6
8
|
import type { Notifications, Simulation, Transport } from "./transport.js";
|
|
@@ -55,6 +57,45 @@ export type SettleProofInput = {
|
|
|
55
57
|
payer?: TransactionSigner;
|
|
56
58
|
deliveredSha256?: string;
|
|
57
59
|
};
|
|
60
|
+
export type CommitteeView = CommitteeTerms & {
|
|
61
|
+
address: Address;
|
|
62
|
+
id: Uint8Array;
|
|
63
|
+
createdAt: bigint;
|
|
64
|
+
};
|
|
65
|
+
export type CreateCommitteeInput = CommitteeTerms & {
|
|
66
|
+
payer: TransactionSigner;
|
|
67
|
+
};
|
|
68
|
+
export type CreatedCommittee = {
|
|
69
|
+
committee: Address;
|
|
70
|
+
signature: Signature | null;
|
|
71
|
+
};
|
|
72
|
+
export type BallotInput = {
|
|
73
|
+
owner: Address;
|
|
74
|
+
nonce: bigint;
|
|
75
|
+
payTo: Address;
|
|
76
|
+
result: bigint;
|
|
77
|
+
};
|
|
78
|
+
export type CommitteeBallot = {
|
|
79
|
+
intent: Address;
|
|
80
|
+
committee: CommitteeView;
|
|
81
|
+
payee: Address;
|
|
82
|
+
digest: Uint8Array;
|
|
83
|
+
};
|
|
84
|
+
export type SettleCommitteeInput = BallotInput & {
|
|
85
|
+
solver: TransactionSigner;
|
|
86
|
+
votes: readonly CommitteeVote[];
|
|
87
|
+
payer?: TransactionSigner;
|
|
88
|
+
deliveredSha256?: string;
|
|
89
|
+
};
|
|
90
|
+
export type CommitteeRelease = {
|
|
91
|
+
intent: Address;
|
|
92
|
+
committee: CommitteeView;
|
|
93
|
+
payee: Address;
|
|
94
|
+
signers: Address[];
|
|
95
|
+
payer: TransactionSigner;
|
|
96
|
+
setup: Instruction[];
|
|
97
|
+
instructions: Instruction[];
|
|
98
|
+
};
|
|
58
99
|
export type HistoryEvent = EngineEvent & {
|
|
59
100
|
signature: Signature;
|
|
60
101
|
slot: bigint;
|
|
@@ -109,6 +150,15 @@ export type Client = {
|
|
|
109
150
|
cancel(signer: TransactionSigner, nonce: bigint): Promise<Signature>;
|
|
110
151
|
unwrap(signer: TransactionSigner): Promise<Signature | null>;
|
|
111
152
|
settleProof(input: SettleProofInput): Promise<Signature>;
|
|
153
|
+
committee(address: Address): Promise<CommitteeView | null>;
|
|
154
|
+
createCommittee(input: CreateCommitteeInput): Promise<CreatedCommittee>;
|
|
155
|
+
committeeBallot(input: BallotInput): Promise<CommitteeBallot>;
|
|
156
|
+
prepareCommitteeRelease(input: SettleCommitteeInput): Promise<CommitteeRelease>;
|
|
157
|
+
settleCommittee(input: SettleCommitteeInput): Promise<Signature>;
|
|
158
|
+
claims(owner: Address, nonce: bigint): Promise<ClaimsView | null>;
|
|
159
|
+
profile(wallet: Address): Promise<ProfileView | null>;
|
|
160
|
+
reputation(wallet: Address, options?: ReputationOptions): Promise<Reputation>;
|
|
161
|
+
feedback(input: FeedbackInput): Promise<Signature>;
|
|
112
162
|
fill(input: FillInput): Promise<Signature>;
|
|
113
163
|
fillOf(intent: Address): Promise<Fill | null>;
|
|
114
164
|
expire(cranker: TransactionSigner, owner: Address, nonce: bigint): Promise<Signature>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-types.js","sourceRoot":"","sources":["../../src/client-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client-types.js","sourceRoot":"","sources":["../../src/client-types.ts"],"names":[],"mappings":"AA4JA,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"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { loadCommittee } from "./client-committee.js";
|
|
2
|
+
export { type ClaimsView, loadClaims, loadProfile } from "./client-claims.js";
|
|
1
3
|
import { type Client, type ClientOptions } from "./client-types.js";
|
|
2
|
-
export type { Balances, Client, ClientOptions, CreatedIntent, CreateIntentInput, Fill, FillInput, HistoryEvent, IntentAccount, IntentFilter, Mint, SettleProofInput, TokenBalance, WatchCallback, WatchOptions, } from "./client-types.js";
|
|
4
|
+
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";
|
|
3
5
|
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";
|
|
4
|
-
export { EscrowExpired, NoFreeNonce, NotFillable, NotSettleable, PayeeMoved, PayToNotWallet } from "./client-errors.js";
|
|
6
|
+
export { EscrowExpired, NoFreeNonce, NotFillable, NotSettleable, PayeeMoved, PayToNotWallet, VoteRejected, } from "./client-errors.js";
|
|
5
7
|
export declare function createClient(options: ClientOptions): Client;
|
package/dist/src/client.js
CHANGED
|
@@ -3,14 +3,19 @@ import { chainTime, loadConfig, loadIntent, loadUser, MissingAccount, mintOf } f
|
|
|
3
3
|
import { budgeted, simulated } from "./budget.js";
|
|
4
4
|
import { intentSends, nonceAfter } from "./client-intents.js";
|
|
5
5
|
import { clientReads } from "./client-reads.js";
|
|
6
|
-
import {
|
|
6
|
+
import { committeeSends } from "./client-committee.js";
|
|
7
|
+
import { loadClaims, loadProfile } from "./client-claims.js";
|
|
8
|
+
import { feedbackInstructions, reputationOf } from "./reputation.js";
|
|
9
|
+
export { loadCommittee } from "./client-committee.js";
|
|
10
|
+
export { loadClaims, loadProfile } from "./client-claims.js";
|
|
11
|
+
import { committeeSettlement, proofSettlement } from "./client-settle.js";
|
|
7
12
|
import { WATCH_POLL_MS, WATCH_WAIT_SECONDS } from "./client-types.js";
|
|
8
13
|
import { decoded, watchIntents } from "./client-watch.js";
|
|
9
14
|
import { explain } from "./errors.js";
|
|
10
15
|
import { deliveriesOf, deliveryInstructions, deliveryRecord, jobsOf, readSpec } from "./jobs.js";
|
|
11
16
|
import { intentNotifications, rpcTransport, signatureWatch } from "./transport.js";
|
|
12
17
|
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";
|
|
13
|
-
export { EscrowExpired, NoFreeNonce, NotFillable, NotSettleable, PayeeMoved, PayToNotWallet } from "./client-errors.js";
|
|
18
|
+
export { EscrowExpired, NoFreeNonce, NotFillable, NotSettleable, PayeeMoved, PayToNotWallet, VoteRejected, } from "./client-errors.js";
|
|
14
19
|
export function createClient(options) {
|
|
15
20
|
const { url, priority = 0n, pollMs = WATCH_POLL_MS, resyncSeconds = WATCH_WAIT_SECONDS } = options;
|
|
16
21
|
const transport = options.transport ?? rpcTransport(createSolanaRpc(url), undefined, signatureWatch(url));
|
|
@@ -33,6 +38,8 @@ export function createClient(options) {
|
|
|
33
38
|
const { createIntent, cancel, unwrap, fill, expire, close } = intentSends(context);
|
|
34
39
|
const { history, fillOf, balances } = clientReads(context);
|
|
35
40
|
const settleProof = proofSettlement(context);
|
|
41
|
+
const { committeeBallot, prepareCommitteeRelease, settleCommittee } = committeeSettlement(context);
|
|
42
|
+
const { committee, createCommittee } = committeeSends(context);
|
|
36
43
|
return {
|
|
37
44
|
url,
|
|
38
45
|
transport,
|
|
@@ -63,6 +70,15 @@ export function createClient(options) {
|
|
|
63
70
|
cancel,
|
|
64
71
|
unwrap,
|
|
65
72
|
settleProof,
|
|
73
|
+
committee,
|
|
74
|
+
createCommittee,
|
|
75
|
+
committeeBallot,
|
|
76
|
+
prepareCommitteeRelease,
|
|
77
|
+
settleCommittee,
|
|
78
|
+
claims: (owner, nonce) => loadClaims(transport, owner, nonce),
|
|
79
|
+
profile: (wallet) => loadProfile(transport, wallet),
|
|
80
|
+
reputation: (wallet, options) => reputationOf(transport, wallet, options),
|
|
81
|
+
feedback: async (input) => send(await feedbackInstructions(transport, input), input.owner),
|
|
66
82
|
fill,
|
|
67
83
|
fillOf,
|
|
68
84
|
expire,
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAA4D,MAAM,aAAa,CAAC;AACtH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -3,6 +3,8 @@ export * from "./budget.js";
|
|
|
3
3
|
export * from "./client.js";
|
|
4
4
|
export * from "./errors.js";
|
|
5
5
|
export * from "./jobs.js";
|
|
6
|
+
export * from "./reputation.js";
|
|
6
7
|
export * from "./setup.js";
|
|
8
|
+
export * from "./simple.js";
|
|
7
9
|
export * from "./transport.js";
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|
package/dist/src/job-memos.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export type FollowUp = {
|
|
|
8
8
|
export declare function followUpMemo(sha256: string, release: string): string;
|
|
9
9
|
export declare function parseFollowUpMemo(text: string): FollowUp | null;
|
|
10
10
|
export declare function memosSignedBy(transaction: EngineTransaction, signer: Address): string[];
|
|
11
|
-
export declare function
|
|
11
|
+
export declare function releaseSigners(release: EngineTransaction, attestor: Address): Address[];
|
|
12
|
+
export declare function followUpOf(transactions: readonly EngineTransaction[], release: string, attestor: Address, signers?: readonly Address[]): (FollowUp & {
|
|
12
13
|
signature: string;
|
|
13
14
|
}) | null;
|
|
14
15
|
export declare function recordedDelivery(transactions: readonly EngineTransaction[], release: EngineTransaction, attestor: Address): string | null;
|
package/dist/src/job-memos.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AccountRole } from "@solana/kit";
|
|
2
2
|
import { getTransferSolInstruction } from "@solana-program/system";
|
|
3
|
-
import { parseReleaseMemo, releaseMemo } from "@intent-engine/core";
|
|
3
|
+
import { decodeEvent, parseReleaseMemo, releaseMemo } from "@intent-engine/core";
|
|
4
4
|
import { MEMO_PROGRAM_ADDRESS } from "./transport.js";
|
|
5
5
|
export const RELEASE_MARK = " release:";
|
|
6
6
|
const BASE58_SIGNATURE = /^[1-9A-HJ-NP-Za-km-z]{32,88}$/;
|
|
@@ -22,9 +22,18 @@ export function parseFollowUpMemo(text) {
|
|
|
22
22
|
export function memosSignedBy(transaction, signer) {
|
|
23
23
|
return (transaction.memos ?? []).filter((_, i) => transaction.memoSigners?.[i]?.includes(signer) === true);
|
|
24
24
|
}
|
|
25
|
-
export function
|
|
25
|
+
export function releaseSigners(release, attestor) {
|
|
26
|
+
for (const data of release.emitted) {
|
|
27
|
+
const event = decodeEvent(data);
|
|
28
|
+
if (event?.name === "CommitteeAttested" && event.fields.committee === attestor) {
|
|
29
|
+
return [...event.fields.signers];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return [attestor];
|
|
33
|
+
}
|
|
34
|
+
export function followUpOf(transactions, release, attestor, signers = [attestor]) {
|
|
26
35
|
for (const transaction of transactions) {
|
|
27
|
-
if (transaction.failed || transaction.feePayer
|
|
36
|
+
if (transaction.failed || transaction.feePayer === undefined || !signers.includes(transaction.feePayer)) {
|
|
28
37
|
continue;
|
|
29
38
|
}
|
|
30
39
|
const found = (transaction.memos ?? []).map(parseFollowUpMemo).find((memo) => memo !== null && memo.release === release);
|
|
@@ -35,11 +44,15 @@ export function followUpOf(transactions, release, attestor) {
|
|
|
35
44
|
return null;
|
|
36
45
|
}
|
|
37
46
|
export function recordedDelivery(transactions, release, attestor) {
|
|
38
|
-
const
|
|
47
|
+
const signers = releaseSigners(release, attestor);
|
|
48
|
+
const inline = signers
|
|
49
|
+
.flatMap((signer) => memosSignedBy(release, signer))
|
|
50
|
+
.map(parseReleaseMemo)
|
|
51
|
+
.find((hash) => hash !== null);
|
|
39
52
|
if (inline !== undefined) {
|
|
40
53
|
return inline;
|
|
41
54
|
}
|
|
42
|
-
return followUpOf(transactions, release.signature, attestor)?.sha256 ?? null;
|
|
55
|
+
return followUpOf(transactions, release.signature, attestor, signers)?.sha256 ?? null;
|
|
43
56
|
}
|
|
44
57
|
export function followUpInstructions(judge, intent, sha256, release) {
|
|
45
58
|
return [memoInstruction(judge, followUpMemo(sha256, release)), getTransferSolInstruction({ source: judge, destination: intent, amount: 0n })];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-memos.js","sourceRoot":"","sources":["../../src/job-memos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkF,MAAM,aAAa,CAAC;AAC1H,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"job-memos.js","sourceRoot":"","sources":["../../src/job-memos.ts"],"names":[],"mappings":"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"}
|
package/dist/src/jobs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { DELIVERY_PAGES, DELIVERY_SCAN, MEMOS_PER_TRANSACTION, type Scan, scan, type ScanOptions, SIGNATURE_PAGE, transactionAt, } from "./job-scan.js";
|
|
2
2
|
export { createdAtOf, creationSlotOf, historyCovers, intentAt, JOBS_LIMIT, openProofEscrows } from "./job-proofs.js";
|
|
3
3
|
export { DEVNET_GENESIS_HASH, type Job, jobsOf, MAINNET_GENESIS_HASH, MAX_SPEC_BYTES, PLAIN_HTTP_ON_PUBLIC, plainHttpOnPublic, PUBLIC_GENESIS_HASHES, readSpec, type Spec, type SpecFetch, SPEC_SCAN, SPEC_TIMEOUT_MS, SpecUnreadable, specUrlOf, TESTNET_GENESIS_HASH, } from "./job-specs.js";
|
|
4
|
-
export { type FollowUp, followUpInstructions, followUpMemo, followUpOf, memoInstruction, memosSignedBy, parseFollowUpMemo, recordedDelivery, RELEASE_MARK, } from "./job-memos.js";
|
|
4
|
+
export { type FollowUp, followUpInstructions, followUpMemo, followUpOf, memoInstruction, memosSignedBy, parseFollowUpMemo, recordedDelivery, releaseSigners, RELEASE_MARK, } from "./job-memos.js";
|
|
5
5
|
export { type Announcement, announcements, type DeliverInput, deliveriesOf, type Delivery, deliveryInstructions, deliveryRecord, type DeliveryRecord, firstDelivery, NotDeliverable, } from "./job-deliveries.js";
|
|
6
6
|
export { creationProof, type EngineCall, engineCalls, escrowOrigin, type EscrowOrigin, type EscrowProof, type Lifecycle, lifecycleDeliveries, originDeliveries, } from "./job-origins.js";
|
package/dist/src/jobs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { DELIVERY_PAGES, DELIVERY_SCAN, MEMOS_PER_TRANSACTION, scan, SIGNATURE_PAGE, transactionAt, } from "./job-scan.js";
|
|
2
2
|
export { createdAtOf, creationSlotOf, historyCovers, intentAt, JOBS_LIMIT, openProofEscrows } from "./job-proofs.js";
|
|
3
3
|
export { DEVNET_GENESIS_HASH, jobsOf, MAINNET_GENESIS_HASH, MAX_SPEC_BYTES, PLAIN_HTTP_ON_PUBLIC, plainHttpOnPublic, PUBLIC_GENESIS_HASHES, readSpec, SPEC_SCAN, SPEC_TIMEOUT_MS, SpecUnreadable, specUrlOf, TESTNET_GENESIS_HASH, } from "./job-specs.js";
|
|
4
|
-
export { followUpInstructions, followUpMemo, followUpOf, memoInstruction, memosSignedBy, parseFollowUpMemo, recordedDelivery, RELEASE_MARK, } from "./job-memos.js";
|
|
4
|
+
export { followUpInstructions, followUpMemo, followUpOf, memoInstruction, memosSignedBy, parseFollowUpMemo, recordedDelivery, releaseSigners, RELEASE_MARK, } from "./job-memos.js";
|
|
5
5
|
export { announcements, deliveriesOf, deliveryInstructions, deliveryRecord, firstDelivery, NotDeliverable, } from "./job-deliveries.js";
|
|
6
6
|
export { creationProof, engineCalls, escrowOrigin, lifecycleDeliveries, originDeliveries, } from "./job-origins.js";
|
|
7
7
|
//# sourceMappingURL=jobs.js.map
|
package/dist/src/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,EAErB,IAAI,EAEJ,cAAc,EACd,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrH,OAAO,EACL,mBAAmB,EAEnB,MAAM,EACN,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,QAAQ,EAGR,SAAS,EACT,eAAe,EACf,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,aAAa,EAEb,YAAY,EAEZ,oBAAoB,EACpB,cAAc,EAEd,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EAEb,WAAW,EACX,YAAY,EAIZ,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,EAErB,IAAI,EAEJ,cAAc,EACd,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrH,OAAO,EACL,mBAAmB,EAEnB,MAAM,EACN,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,QAAQ,EAGR,SAAS,EACT,eAAe,EACf,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,aAAa,EAEb,YAAY,EAEZ,oBAAoB,EACpB,cAAc,EAEd,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EAEb,WAAW,EACX,YAAY,EAIZ,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Address, Instruction, Signature, TransactionSigner } from "@solana/kit";
|
|
2
|
+
import type { Transport } from "./transport.js";
|
|
3
|
+
export type WorkOutcome = "paid" | "paid-other" | "refunded" | "open" | "unknown";
|
|
4
|
+
export type WorkRecord = {
|
|
5
|
+
intent: Address;
|
|
6
|
+
sha256: string;
|
|
7
|
+
announced: Signature;
|
|
8
|
+
slot: bigint;
|
|
9
|
+
blockTime: bigint | null;
|
|
10
|
+
outcome: WorkOutcome;
|
|
11
|
+
owner?: Address;
|
|
12
|
+
attestor?: Address;
|
|
13
|
+
committee?: Address[];
|
|
14
|
+
mint?: Address;
|
|
15
|
+
earned?: bigint;
|
|
16
|
+
release?: Signature;
|
|
17
|
+
selfDealt: boolean;
|
|
18
|
+
feedback?: number;
|
|
19
|
+
};
|
|
20
|
+
export type Earned = {
|
|
21
|
+
mint: Address;
|
|
22
|
+
amount: bigint;
|
|
23
|
+
};
|
|
24
|
+
export type Reputation = {
|
|
25
|
+
wallet: Address;
|
|
26
|
+
complete: boolean;
|
|
27
|
+
announced: number;
|
|
28
|
+
paid: number;
|
|
29
|
+
selfDealt: number;
|
|
30
|
+
payers: number;
|
|
31
|
+
judges: number;
|
|
32
|
+
committeeJudged: number;
|
|
33
|
+
earned: Earned[];
|
|
34
|
+
feedback: {
|
|
35
|
+
count: number;
|
|
36
|
+
average: number | null;
|
|
37
|
+
};
|
|
38
|
+
first: bigint | null;
|
|
39
|
+
last: bigint | null;
|
|
40
|
+
records: WorkRecord[];
|
|
41
|
+
};
|
|
42
|
+
export type ReputationOptions = {
|
|
43
|
+
pages?: number;
|
|
44
|
+
history?: number;
|
|
45
|
+
};
|
|
46
|
+
export declare function reputationOf(transport: Transport, wallet: Address, options?: ReputationOptions): Promise<Reputation>;
|
|
47
|
+
export type FeedbackInput = {
|
|
48
|
+
owner: TransactionSigner;
|
|
49
|
+
intent: Address;
|
|
50
|
+
score: number;
|
|
51
|
+
note?: string;
|
|
52
|
+
};
|
|
53
|
+
export declare function feedbackInstructions(transport: Transport, input: FeedbackInput, history?: number): Promise<Instruction[]>;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { getTransferSolInstruction } from "@solana-program/system";
|
|
2
|
+
import { decodeEvent, feedbackMemo, DELIVERY_MEMO_PREFIX, FILL_ATTESTED_SPLIT_COMMITTEE_DISCRIMINATOR, FILL_ATTESTED_SPLIT_DISCRIMINATOR, findAssociatedTokenAddress, getFillAttestedSplitCommitteeInstructionDataDecoder, getFillAttestedSplitInstructionDataDecoder, parseDeliveryMemo, parseFeedbackMemo, splitN, } from "@intent-engine/core";
|
|
3
|
+
import { mintOf } from "./accounts.js";
|
|
4
|
+
import { loadCommittee } from "./client-committee.js";
|
|
5
|
+
import { HISTORY_LIMIT } from "./client-types.js";
|
|
6
|
+
import { memoInstruction, recordedDelivery } from "./job-memos.js";
|
|
7
|
+
import { NotSettleable } from "./client-errors.js";
|
|
8
|
+
import { engineCalls } from "./job-origins.js";
|
|
9
|
+
import { DELIVERY_PAGES, MEMOS_PER_TRANSACTION, scan } from "./job-scan.js";
|
|
10
|
+
const SPLIT_INTENT_ACCOUNT = 2;
|
|
11
|
+
const startsWith = (data, head) => data.length >= head.length && Array.from(head).every((b, i) => data[i] === b);
|
|
12
|
+
function splitClaim(release, intent) {
|
|
13
|
+
for (const { data, accounts } of engineCalls(release)) {
|
|
14
|
+
if (accounts?.[SPLIT_INTENT_ACCOUNT] !== intent) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
if (startsWith(data, FILL_ATTESTED_SPLIT_DISCRIMINATOR)) {
|
|
19
|
+
return getFillAttestedSplitInstructionDataDecoder().decode(data).claim;
|
|
20
|
+
}
|
|
21
|
+
if (startsWith(data, FILL_ATTESTED_SPLIT_COMMITTEE_DISCRIMINATOR)) {
|
|
22
|
+
return getFillAttestedSplitCommitteeInstructionDataDecoder().decode(data).claim;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
function announcedBy(wallet, transactions) {
|
|
32
|
+
const found = new Map();
|
|
33
|
+
for (const { signature, slot, blockTime, failed, memos, feePayer } of transactions) {
|
|
34
|
+
if (failed || feePayer !== wallet) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
for (const memo of (memos ?? []).slice(0, MEMOS_PER_TRANSACTION).map(parseDeliveryMemo)) {
|
|
38
|
+
if (memo === null) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const key = `${memo.intent}:${memo.sha256}`;
|
|
42
|
+
const held = found.get(key);
|
|
43
|
+
if (held === undefined || slot < held.slot || (slot === held.slot && signature < held.announced)) {
|
|
44
|
+
found.set(key, { intent: memo.intent, sha256: memo.sha256, announced: signature, slot, blockTime });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return [...found.values()];
|
|
49
|
+
}
|
|
50
|
+
function eventsOf(transactions, intent) {
|
|
51
|
+
return transactions
|
|
52
|
+
.filter(({ failed }) => !failed)
|
|
53
|
+
.flatMap((transaction) => transaction.emitted
|
|
54
|
+
.map((data) => decodeEvent(data))
|
|
55
|
+
.filter((event) => event !== null && "intent" in event.fields && event.fields.intent === intent)
|
|
56
|
+
.map((event) => ({ event, transaction })));
|
|
57
|
+
}
|
|
58
|
+
function feedbackOf(transactions, intent, owner) {
|
|
59
|
+
const ordered = [...transactions].filter(({ failed }) => !failed).sort((a, b) => (a.slot < b.slot ? -1 : a.slot > b.slot ? 1 : 0));
|
|
60
|
+
for (const { memos, memoSigners } of ordered) {
|
|
61
|
+
for (const [i, text] of (memos ?? []).entries()) {
|
|
62
|
+
const memo = parseFeedbackMemo(text);
|
|
63
|
+
if (memo !== null && memo.intent === intent && memoSigners?.[i]?.includes(owner) === true) {
|
|
64
|
+
return memo.score;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
async function judgeOf(transport, attestor) {
|
|
71
|
+
const committee = await loadCommittee(transport, attestor);
|
|
72
|
+
return committee === null ? undefined : [...committee.members];
|
|
73
|
+
}
|
|
74
|
+
async function recordOf(transport, wallet, work, history) {
|
|
75
|
+
const transactions = await transport.engineTransactions(history, work.intent);
|
|
76
|
+
const events = eventsOf(transactions, work.intent);
|
|
77
|
+
const created = events.find(({ event }) => event.name === "IntentCreated")?.event;
|
|
78
|
+
const released = events.find(({ event }) => event.name === "IntentAttested" || event.name === "IntentSplit");
|
|
79
|
+
const refunded = events.some(({ event }) => event.name === "IntentCancelled" || event.name === "IntentExpired");
|
|
80
|
+
const complete = created !== undefined || transactions.length < history;
|
|
81
|
+
const base = { ...work, selfDealt: false };
|
|
82
|
+
const owner = created?.name === "IntentCreated" ? created.fields.owner : released?.event.name === "IntentAttested" || released?.event.name === "IntentSplit" ? released.event.fields.owner : undefined;
|
|
83
|
+
const mint = created?.name === "IntentCreated" ? created.fields.inputMint : undefined;
|
|
84
|
+
if (released === undefined || (released.event.name !== "IntentAttested" && released.event.name !== "IntentSplit")) {
|
|
85
|
+
const outcome = refunded ? "refunded" : "open";
|
|
86
|
+
return { complete, record: { ...base, outcome, ...(owner === undefined ? {} : { owner }), ...(mint === undefined ? {} : { mint }) } };
|
|
87
|
+
}
|
|
88
|
+
const { event, transaction } = released;
|
|
89
|
+
const attestor = event.fields.attestor;
|
|
90
|
+
const committee = await judgeOf(transport, attestor);
|
|
91
|
+
const selfDealt = event.fields.owner === wallet ||
|
|
92
|
+
attestor === wallet ||
|
|
93
|
+
event.fields.owner === attestor ||
|
|
94
|
+
(committee !== undefined && (committee.includes(wallet) || committee.includes(event.fields.owner)));
|
|
95
|
+
const recorded = recordedDelivery(transactions, transaction, attestor);
|
|
96
|
+
const common = {
|
|
97
|
+
...base,
|
|
98
|
+
owner: event.fields.owner,
|
|
99
|
+
attestor,
|
|
100
|
+
...(committee === undefined ? {} : { committee }),
|
|
101
|
+
...(mint === undefined ? {} : { mint }),
|
|
102
|
+
release: transaction.signature,
|
|
103
|
+
selfDealt,
|
|
104
|
+
};
|
|
105
|
+
if (recorded !== work.sha256) {
|
|
106
|
+
return { complete, record: { ...common, outcome: "paid-other" } };
|
|
107
|
+
}
|
|
108
|
+
let earned;
|
|
109
|
+
if (event.name === "IntentAttested") {
|
|
110
|
+
if (mint === undefined) {
|
|
111
|
+
return { complete: false, record: { ...common, outcome: "unknown" } };
|
|
112
|
+
}
|
|
113
|
+
const { tokenProgram } = await mintOf(transport, mint);
|
|
114
|
+
const own = await findAssociatedTokenAddress({ owner: wallet, mint, tokenProgram });
|
|
115
|
+
earned = event.fields.payee === own ? event.fields.net : undefined;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const claim = splitClaim(transaction, work.intent);
|
|
119
|
+
const at = claim?.recipients.indexOf(wallet) ?? -1;
|
|
120
|
+
earned = claim === null || at < 0 ? undefined : splitN(event.fields.net, claim.weights)[at];
|
|
121
|
+
}
|
|
122
|
+
if (earned === undefined) {
|
|
123
|
+
return { complete, record: { ...common, outcome: "paid-other" } };
|
|
124
|
+
}
|
|
125
|
+
const feedback = feedbackOf(transactions, work.intent, event.fields.owner);
|
|
126
|
+
return { complete, record: { ...common, outcome: "paid", earned, ...(feedback === undefined ? {} : { feedback }) } };
|
|
127
|
+
}
|
|
128
|
+
export async function reputationOf(transport, wallet, options = {}) {
|
|
129
|
+
const { firstAvailableSlot } = transport;
|
|
130
|
+
const fullLedger = async () => firstAvailableSlot !== undefined && (await firstAvailableSlot.call(transport)) === 0n;
|
|
131
|
+
const scanned = await scan(transport, wallet, { memo: DELIVERY_MEMO_PREFIX, pages: options.pages ?? DELIVERY_PAGES, covered: fullLedger });
|
|
132
|
+
const works = announcedBy(wallet, scanned.transactions);
|
|
133
|
+
const read = await Promise.all(works.map((work) => recordOf(transport, wallet, work, options.history ?? HISTORY_LIMIT)));
|
|
134
|
+
const records = read.map(({ record }) => record).sort((a, b) => (a.slot < b.slot ? -1 : a.slot > b.slot ? 1 : 0));
|
|
135
|
+
const fair = records.filter((r) => r.outcome === "paid" && !r.selfDealt);
|
|
136
|
+
const earned = new Map();
|
|
137
|
+
for (const r of fair) {
|
|
138
|
+
if (r.mint !== undefined && r.earned !== undefined) {
|
|
139
|
+
earned.set(r.mint, (earned.get(r.mint) ?? 0n) + r.earned);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const scores = fair.flatMap((r) => (r.feedback === undefined ? [] : [r.feedback]));
|
|
143
|
+
const times = records.flatMap((r) => (r.blockTime === null ? [] : [r.blockTime]));
|
|
144
|
+
return {
|
|
145
|
+
wallet,
|
|
146
|
+
complete: scanned.complete && read.every(({ complete }) => complete),
|
|
147
|
+
announced: records.length,
|
|
148
|
+
paid: fair.length,
|
|
149
|
+
selfDealt: records.filter((r) => r.outcome === "paid" && r.selfDealt).length,
|
|
150
|
+
payers: new Set(fair.map((r) => r.owner)).size,
|
|
151
|
+
judges: new Set(fair.map((r) => r.attestor)).size,
|
|
152
|
+
committeeJudged: fair.filter((r) => r.committee !== undefined).length,
|
|
153
|
+
earned: [...earned].map(([mint, amount]) => ({ mint, amount })),
|
|
154
|
+
feedback: { count: scores.length, average: scores.length === 0 ? null : scores.reduce((a, b) => a + b, 0) / scores.length },
|
|
155
|
+
first: times.length === 0 ? null : times.reduce((a, b) => (a < b ? a : b)),
|
|
156
|
+
last: times.length === 0 ? null : times.reduce((a, b) => (a > b ? a : b)),
|
|
157
|
+
records,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
export async function feedbackInstructions(transport, input, history = HISTORY_LIMIT) {
|
|
161
|
+
const memo = feedbackMemo({ intent: input.intent, score: input.score, ...(input.note === undefined ? {} : { note: input.note }) });
|
|
162
|
+
const transactions = await transport.engineTransactions(history, input.intent);
|
|
163
|
+
const events = eventsOf(transactions, input.intent);
|
|
164
|
+
const released = events.find(({ event }) => event.name === "IntentAttested" || event.name === "IntentSplit")?.event;
|
|
165
|
+
if (released === undefined || (released.name !== "IntentAttested" && released.name !== "IntentSplit")) {
|
|
166
|
+
throw new NotSettleable(input.intent, "has no release among its recent transactions, so there is no work to give feedback on");
|
|
167
|
+
}
|
|
168
|
+
if (released.fields.owner !== input.owner.address) {
|
|
169
|
+
throw new NotSettleable(input.intent, `was paid for by ${released.fields.owner}, and only that owner gives feedback on it`);
|
|
170
|
+
}
|
|
171
|
+
if (feedbackOf(transactions, input.intent, input.owner.address) !== undefined) {
|
|
172
|
+
throw new NotSettleable(input.intent, "already has its owner's feedback; the first one counts");
|
|
173
|
+
}
|
|
174
|
+
return [memoInstruction(input.owner, memo), getTransferSolInstruction({ source: input.owner, destination: input.intent, amount: 0n })];
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=reputation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../src/reputation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Address, Signature, TransactionSigner } from "@solana/kit";
|
|
2
|
+
import { type Client, type ClientOptions } from "./client-types.js";
|
|
3
|
+
import type { LimitInput, PayForWorkInput, Preview, Sent, SwapInput } from "./simple-types.js";
|
|
4
|
+
export declare const ESCROW_EXPIRES_IN = 86400n;
|
|
5
|
+
export declare const PREVIEW_SIGNATURE: Signature;
|
|
6
|
+
export declare const RECORD_TOKEN_NEEDED = "paying in SOL off devnet needs recordToken: any other token, which only labels the escrow";
|
|
7
|
+
export type SimpleContext = {
|
|
8
|
+
url: string;
|
|
9
|
+
signer: TransactionSigner;
|
|
10
|
+
client: Client;
|
|
11
|
+
options: ClientOptions;
|
|
12
|
+
};
|
|
13
|
+
type Done = {
|
|
14
|
+
signature: Signature;
|
|
15
|
+
intent?: Address;
|
|
16
|
+
nonce?: bigint;
|
|
17
|
+
};
|
|
18
|
+
export declare function outcome(ctx: SimpleContext, preview: boolean | undefined, summary: string, act: (client: Client) => Promise<Done>): Promise<Sent | Preview>;
|
|
19
|
+
export declare function orderSends(ctx: SimpleContext): {
|
|
20
|
+
swap: (input: SwapInput) => Promise<Preview | Sent>;
|
|
21
|
+
limit: (input: LimitInput) => Promise<Preview | Sent>;
|
|
22
|
+
payForWork: (input: PayForWorkInput) => Promise<Preview | Sent>;
|
|
23
|
+
};
|
|
24
|
+
export {};
|