@intent-engine/client 0.1.39 → 0.1.41
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 +2 -0
- package/dist/src/accounts.js +7 -3
- package/dist/src/accounts.js.map +1 -1
- package/dist/src/client-claims.d.ts +6 -0
- package/dist/src/client-claims.js +26 -10
- package/dist/src/client-claims.js.map +1 -1
- package/dist/src/client-types.d.ts +3 -0
- package/dist/src/client.d.ts +1 -1
- package/dist/src/client.js +3 -3
- package/dist/src/client.js.map +1 -1
- package/dist/src/funding.d.ts +15 -0
- package/dist/src/funding.js +92 -0
- package/dist/src/funding.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/job-deliveries.d.ts +14 -12
- package/dist/src/job-deliveries.js +40 -32
- package/dist/src/job-deliveries.js.map +1 -1
- package/dist/src/job-pay.d.ts +14 -0
- package/dist/src/job-pay.js +45 -0
- package/dist/src/job-pay.js.map +1 -0
- package/dist/src/job-proofs.d.ts +7 -1
- package/dist/src/job-proofs.js +16 -6
- package/dist/src/job-proofs.js.map +1 -1
- package/dist/src/job-specs.d.ts +2 -1
- package/dist/src/job-specs.js +2 -2
- package/dist/src/job-specs.js.map +1 -1
- package/dist/src/jobs.d.ts +3 -2
- package/dist/src/jobs.js +2 -1
- package/dist/src/jobs.js.map +1 -1
- package/dist/src/release-reads.d.ts +10 -0
- package/dist/src/release-reads.js +35 -0
- package/dist/src/release-reads.js.map +1 -0
- package/dist/src/reputation.d.ts +9 -0
- package/dist/src/reputation.js +48 -41
- package/dist/src/reputation.js.map +1 -1
- package/dist/src/rpc-shapes.d.ts +23 -0
- package/dist/src/rpc-transport.js +19 -1
- package/dist/src/rpc-transport.js.map +1 -1
- package/dist/src/svm.js +9 -4
- package/dist/src/svm.js.map +1 -1
- package/dist/src/transaction-keys.d.ts +7 -1
- package/dist/src/transaction-keys.js +17 -0
- package/dist/src/transaction-keys.js.map +1 -1
- package/dist/src/transport.d.ts +2 -2
- package/dist/src/transport.js +1 -1
- package/dist/src/transport.js.map +1 -1
- package/dist/src/trust.d.ts +27 -0
- package/dist/src/trust.js +180 -0
- package/dist/src/trust.js.map +1 -0
- package/package.json +2 -2
package/dist/src/accounts.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type Address } from "@solana/kit";
|
|
|
2
2
|
import { type MintCap } from "@intent-engine/core";
|
|
3
3
|
import type { AccountView, Transport } from "./transport.js";
|
|
4
4
|
export declare const SYSTEM_PROGRAM_ADDRESS: Address;
|
|
5
|
+
export declare function createdView(view: AccountView | null): AccountView | null;
|
|
5
6
|
export declare function createdAccount(transport: Transport, address: Address): Promise<AccountView | null>;
|
|
6
7
|
export declare class MissingAccount extends Error {
|
|
7
8
|
readonly address: Address;
|
|
@@ -47,5 +48,6 @@ export declare const EXTENDED_MINT_TYPE = 1;
|
|
|
47
48
|
export declare const CLOCK_SYSVAR: Address;
|
|
48
49
|
export declare function tokenAmountOf(data: Uint8Array | null): bigint | null;
|
|
49
50
|
export declare function chainTime(transport: Transport): Promise<bigint>;
|
|
51
|
+
export declare function clockTime(view: AccountView | null): bigint;
|
|
50
52
|
export declare function rentExemptMinimum(transport: Transport, dataLength: number): Promise<bigint>;
|
|
51
53
|
export declare function clusterDomain(transport: Transport): Promise<Uint8Array>;
|
package/dist/src/accounts.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { getBase58Encoder } from "@solana/kit";
|
|
2
2
|
import { decodeMintCapData, findConfigPda, findIntentPda, findMintCapAddress, findUserStatePda, getConfigDecoder, getConfigDiscriminatorBytes, getIntentDecoder, getIntentDiscriminatorBytes, getUserStateDecoder, INTENT_ENGINE_PROGRAM_ADDRESS, isMintCapData, TOKEN_2022_PROGRAM_ADDRESS, TOKEN_PROGRAM_ADDRESS, } from "@intent-engine/core";
|
|
3
3
|
export const SYSTEM_PROGRAM_ADDRESS = "11111111111111111111111111111111";
|
|
4
|
-
export
|
|
5
|
-
const view = await transport.getAccount(address);
|
|
4
|
+
export function createdView(view) {
|
|
6
5
|
return view === null || (view.owner === SYSTEM_PROGRAM_ADDRESS && view.data.length === 0) ? null : view;
|
|
7
6
|
}
|
|
7
|
+
export async function createdAccount(transport, address) {
|
|
8
|
+
return createdView(await transport.getAccount(address));
|
|
9
|
+
}
|
|
8
10
|
export class MissingAccount extends Error {
|
|
9
11
|
address;
|
|
10
12
|
constructor(what, address) {
|
|
@@ -113,7 +115,9 @@ export function tokenAmountOf(data) {
|
|
|
113
115
|
return new DataView(data.buffer, data.byteOffset).getBigUint64(TOKEN_AMOUNT_OFFSET, true);
|
|
114
116
|
}
|
|
115
117
|
export async function chainTime(transport) {
|
|
116
|
-
|
|
118
|
+
return clockTime(await transport.getAccount(CLOCK_SYSVAR));
|
|
119
|
+
}
|
|
120
|
+
export function clockTime(view) {
|
|
117
121
|
if (view === null) {
|
|
118
122
|
throw new Error("the clock sysvar is missing");
|
|
119
123
|
}
|
package/dist/src/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,aAAa,EAEb,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAA6C,CAAC;AAEpF,MAAM,
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,13 @@ export type ClaimsView = {
|
|
|
15
15
|
until: bigint;
|
|
16
16
|
} | null;
|
|
17
17
|
};
|
|
18
|
+
export type JobClaim = {
|
|
19
|
+
claimedBy: Address | null;
|
|
20
|
+
claimEnds: bigint | null;
|
|
21
|
+
};
|
|
18
22
|
export declare function loadClaims(transport: Transport, owner: Address, nonce: bigint): Promise<ClaimsView | null>;
|
|
23
|
+
export declare function loadClaimsOf(transport: Transport, intents: readonly Address[]): Promise<(ClaimsView | null)[]>;
|
|
24
|
+
export declare function jobClaimOf(claims: ClaimsView | null): JobClaim;
|
|
19
25
|
export declare function cancelClaims(transport: Transport, intent: Address, claims: number): Promise<{
|
|
20
26
|
board: Address;
|
|
21
27
|
stakeTo: Address | null;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { CLAIM_BOARD_DISCRIMINATOR, claimBoardAddress, CLAIMS_OPEN, claimSlot, findIntentPda, getClaimBoardDecoder, INTENT_ENGINE_PROGRAM_ADDRESS, PROFILE_DISCRIMINATOR, profileAddress, profileView, stakeReceiverOnCancel, } from "@intent-engine/core";
|
|
2
|
-
import { chainTime, createdAccount } from "./accounts.js";
|
|
2
|
+
import { chainTime, CLOCK_SYSVAR, clockTime, createdAccount, createdView } from "./accounts.js";
|
|
3
3
|
const NONE = "11111111111111111111111111111111";
|
|
4
4
|
async function engineData(transport, address, discriminator) {
|
|
5
|
-
|
|
5
|
+
return engineDataOf(address, await createdAccount(transport, address), discriminator);
|
|
6
|
+
}
|
|
7
|
+
function engineDataOf(address, view, discriminator) {
|
|
6
8
|
if (view === null) {
|
|
7
9
|
return null;
|
|
8
10
|
}
|
|
@@ -11,15 +13,8 @@ async function engineData(transport, address, discriminator) {
|
|
|
11
13
|
}
|
|
12
14
|
return view.data;
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
const [intent] = await findIntentPda({ owner, nonce });
|
|
16
|
-
const board = await claimBoardAddress(intent);
|
|
17
|
-
const data = await engineData(transport, board, CLAIM_BOARD_DISCRIMINATOR);
|
|
18
|
-
if (data === null) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
16
|
+
function claimsViewOf(board, data, now) {
|
|
21
17
|
const stored = getClaimBoardDecoder().decode(data);
|
|
22
|
-
const now = await chainTime(transport);
|
|
23
18
|
const slot = claimSlot(stored, now);
|
|
24
19
|
return {
|
|
25
20
|
board,
|
|
@@ -33,6 +28,27 @@ export async function loadClaims(transport, owner, nonce) {
|
|
|
33
28
|
cooldown: slot.state === "free" && stored.droppedBy !== NONE && now < stored.until ? { worker: stored.droppedBy, until: stored.until } : null,
|
|
34
29
|
};
|
|
35
30
|
}
|
|
31
|
+
export async function loadClaims(transport, owner, nonce) {
|
|
32
|
+
const [intent] = await findIntentPda({ owner, nonce });
|
|
33
|
+
const board = await claimBoardAddress(intent);
|
|
34
|
+
const data = await engineData(transport, board, CLAIM_BOARD_DISCRIMINATOR);
|
|
35
|
+
return data === null ? null : claimsViewOf(board, data, await chainTime(transport));
|
|
36
|
+
}
|
|
37
|
+
export async function loadClaimsOf(transport, intents) {
|
|
38
|
+
if (intents.length === 0) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
const boards = await Promise.all(intents.map(claimBoardAddress));
|
|
42
|
+
const views = await transport.getAccounts([...boards, CLOCK_SYSVAR]);
|
|
43
|
+
const now = clockTime(views[boards.length] ?? null);
|
|
44
|
+
return boards.map((board, i) => {
|
|
45
|
+
const data = engineDataOf(board, createdView(views[i] ?? null), CLAIM_BOARD_DISCRIMINATOR);
|
|
46
|
+
return data === null ? null : claimsViewOf(board, data, now);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
export function jobClaimOf(claims) {
|
|
50
|
+
return claims?.state === "held" ? { claimedBy: claims.worker, claimEnds: claims.until } : { claimedBy: null, claimEnds: null };
|
|
51
|
+
}
|
|
36
52
|
export async function cancelClaims(transport, intent, claims) {
|
|
37
53
|
if (claims !== CLAIMS_OPEN) {
|
|
38
54
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-claims.js","sourceRoot":"","sources":["../../src/client-claims.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,cAAc,EAEd,WAAW,EACX,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"client-claims.js","sourceRoot":"","sources":["../../src/client-claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,6 +166,8 @@ export type Client = {
|
|
|
166
166
|
balances(owner: Address, mints: readonly Address[]): Promise<Balances>;
|
|
167
167
|
jobs(filter?: {
|
|
168
168
|
attestor?: Address;
|
|
169
|
+
mint?: Address;
|
|
170
|
+
minSells?: bigint;
|
|
169
171
|
}): Promise<Job[]>;
|
|
170
172
|
spec(intent: Address, keypair?: Uint8Array): Promise<Spec | null>;
|
|
171
173
|
deliver(input: DeliverInput): Promise<Signature>;
|
|
@@ -177,6 +179,7 @@ export type Client = {
|
|
|
177
179
|
judge: Address;
|
|
178
180
|
intent?: Address;
|
|
179
181
|
pages?: number;
|
|
182
|
+
keypair?: Uint8Array;
|
|
180
183
|
}): Promise<DeliveryRecord>;
|
|
181
184
|
};
|
|
182
185
|
export declare const SPEC_URL_NEEDS_PROOF = "specUrl needs an AttestedResult intent with a non-zero specHash";
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { loadCommittee } from "./client-committee.js";
|
|
2
|
-
export { cancelClaims, type ClaimsView, loadClaims, loadProfile } from "./client-claims.js";
|
|
2
|
+
export { cancelClaims, type ClaimsView, type JobClaim, jobClaimOf, loadClaims, loadClaimsOf, loadProfile } from "./client-claims.js";
|
|
3
3
|
import { type Client, type ClientOptions } from "./client-types.js";
|
|
4
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";
|
|
5
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";
|
package/dist/src/client.js
CHANGED
|
@@ -7,7 +7,7 @@ import { committeeSends } from "./client-committee.js";
|
|
|
7
7
|
import { loadClaims, loadProfile } from "./client-claims.js";
|
|
8
8
|
import { feedbackInstructions, reputationOf } from "./reputation.js";
|
|
9
9
|
export { loadCommittee } from "./client-committee.js";
|
|
10
|
-
export { cancelClaims, loadClaims, loadProfile } from "./client-claims.js";
|
|
10
|
+
export { cancelClaims, jobClaimOf, loadClaims, loadClaimsOf, loadProfile } from "./client-claims.js";
|
|
11
11
|
import { committeeSettlement, proofSettlement } from "./client-settle.js";
|
|
12
12
|
import { WATCH_POLL_MS, WATCH_WAIT_SECONDS } from "./client-types.js";
|
|
13
13
|
import { decoded, watchIntents } from "./client-watch.js";
|
|
@@ -84,11 +84,11 @@ export function createClient(options) {
|
|
|
84
84
|
expire,
|
|
85
85
|
close,
|
|
86
86
|
balances,
|
|
87
|
-
jobs: (filter = {}) => jobsOf(transport, filter
|
|
87
|
+
jobs: (filter = {}) => jobsOf(transport, filter),
|
|
88
88
|
spec: (intent, keypair) => readSpec(transport, options.fetch ?? fetch, intent, keypair),
|
|
89
89
|
deliver: async (input) => send((await deliveryInstructions(transport, input)).instructions, input.worker),
|
|
90
90
|
deliveries: ({ judge, intent }) => deliveriesOf(transport, judge, intent),
|
|
91
|
-
deliveryRecord: ({ judge, intent, pages }) => deliveryRecord(transport, judge, intent, pages),
|
|
91
|
+
deliveryRecord: ({ judge, intent, pages, keypair }) => deliveryRecord(transport, judge, intent, pages, keypair),
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
94
|
//# sourceMappingURL=client.js.map
|
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,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Address } from "@solana/kit";
|
|
2
|
+
import { type Transport } from "./transport.js";
|
|
3
|
+
export declare const FUNDING_PAGES = 2;
|
|
4
|
+
export declare const FUNDING_READS = 16;
|
|
5
|
+
export declare const FUNDING_HOPS = 2;
|
|
6
|
+
export type FundedBy = "yes" | "no" | "unknown";
|
|
7
|
+
export type Funder = {
|
|
8
|
+
funder: Address | null;
|
|
9
|
+
complete: boolean;
|
|
10
|
+
busy?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type FundingLookup = (wallet: Address) => Promise<Funder>;
|
|
13
|
+
export declare function earliestFunder(transport: Transport, wallet: Address, covered: () => Promise<boolean>): Promise<Funder>;
|
|
14
|
+
export declare function fundingLookup(transport: Transport, covered: () => Promise<boolean>): FundingLookup;
|
|
15
|
+
export declare function fundedBy(lookup: FundingLookup, payer: Address, worker: Address): Promise<FundedBy>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { SIGNATURE_PAGE } from "./job-scan.js";
|
|
2
|
+
import { TRANSACTION_FETCHES } from "./transport.js";
|
|
3
|
+
export const FUNDING_PAGES = 2;
|
|
4
|
+
export const FUNDING_READS = 16;
|
|
5
|
+
export const FUNDING_HOPS = 2;
|
|
6
|
+
const BUSY = "busy";
|
|
7
|
+
async function listedOldestFirst(transport, wallet) {
|
|
8
|
+
const { signaturesOf } = transport;
|
|
9
|
+
if (signaturesOf === undefined) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const listed = [];
|
|
13
|
+
let before;
|
|
14
|
+
for (let page = 1; page <= FUNDING_PAGES; page++) {
|
|
15
|
+
const found = await signaturesOf.call(transport, wallet, SIGNATURE_PAGE, before);
|
|
16
|
+
listed.push(...found);
|
|
17
|
+
if (found.length < SIGNATURE_PAGE) {
|
|
18
|
+
return listed.filter(({ failed }) => !failed).reverse();
|
|
19
|
+
}
|
|
20
|
+
before = found[found.length - 1]?.signature;
|
|
21
|
+
}
|
|
22
|
+
return BUSY;
|
|
23
|
+
}
|
|
24
|
+
export async function earliestFunder(transport, wallet, covered) {
|
|
25
|
+
try {
|
|
26
|
+
return await readFunder(transport, wallet, covered);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { funder: null, complete: false };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function readFunder(transport, wallet, covered) {
|
|
33
|
+
const { transactionsOf } = transport;
|
|
34
|
+
const oldest = transactionsOf === undefined ? null : await listedOldestFirst(transport, wallet);
|
|
35
|
+
if (oldest === BUSY) {
|
|
36
|
+
return { funder: null, complete: false, busy: true };
|
|
37
|
+
}
|
|
38
|
+
if (transactionsOf === undefined || oldest === null) {
|
|
39
|
+
return { funder: null, complete: false };
|
|
40
|
+
}
|
|
41
|
+
const reads = oldest.slice(0, FUNDING_READS);
|
|
42
|
+
for (let at = 0; at < reads.length; at += TRANSACTION_FETCHES) {
|
|
43
|
+
const batch = reads.slice(at, at + TRANSACTION_FETCHES);
|
|
44
|
+
const found = await transactionsOf.call(transport, batch);
|
|
45
|
+
if (found.length < batch.length) {
|
|
46
|
+
return { funder: null, complete: false };
|
|
47
|
+
}
|
|
48
|
+
for (const transaction of found) {
|
|
49
|
+
if (transaction.unread === true) {
|
|
50
|
+
return { funder: null, complete: false };
|
|
51
|
+
}
|
|
52
|
+
const into = transaction.transfers?.find(({ from, to, lamports }) => to === wallet && from !== wallet && lamports > 0n);
|
|
53
|
+
if (into !== undefined) {
|
|
54
|
+
return { funder: into.from, complete: await covered() };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { funder: null, complete: oldest.length <= FUNDING_READS && (await covered()) };
|
|
59
|
+
}
|
|
60
|
+
export function fundingLookup(transport, covered) {
|
|
61
|
+
const known = new Map();
|
|
62
|
+
return (wallet) => {
|
|
63
|
+
const held = known.get(wallet);
|
|
64
|
+
if (held !== undefined) {
|
|
65
|
+
return held;
|
|
66
|
+
}
|
|
67
|
+
const pending = earliestFunder(transport, wallet, covered);
|
|
68
|
+
known.set(wallet, pending);
|
|
69
|
+
return pending;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export async function fundedBy(lookup, payer, worker) {
|
|
73
|
+
let wallet = payer;
|
|
74
|
+
for (let hop = 1; hop <= FUNDING_HOPS; hop++) {
|
|
75
|
+
const { funder, complete, busy } = await lookup(wallet);
|
|
76
|
+
if (funder === worker) {
|
|
77
|
+
return "yes";
|
|
78
|
+
}
|
|
79
|
+
if (busy === true && hop > 1) {
|
|
80
|
+
return "no";
|
|
81
|
+
}
|
|
82
|
+
if (!complete) {
|
|
83
|
+
return "unknown";
|
|
84
|
+
}
|
|
85
|
+
if (funder === null) {
|
|
86
|
+
return "no";
|
|
87
|
+
}
|
|
88
|
+
wallet = funder;
|
|
89
|
+
}
|
|
90
|
+
return "no";
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=funding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"funding.js","sourceRoot":"","sources":["../../src/funding.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from "./budget.js";
|
|
|
3
3
|
export * from "./client.js";
|
|
4
4
|
export * from "./confirm-release.js";
|
|
5
5
|
export * from "./errors.js";
|
|
6
|
+
export * from "./funding.js";
|
|
6
7
|
export * from "./jobs.js";
|
|
7
8
|
export * from "./ledger.js";
|
|
8
9
|
export * from "./public-host.js";
|
|
@@ -10,3 +11,4 @@ export * from "./reputation.js";
|
|
|
10
11
|
export * from "./setup.js";
|
|
11
12
|
export * from "./simple.js";
|
|
12
13
|
export * from "./transport.js";
|
|
14
|
+
export * from "./trust.js";
|
package/dist/src/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export * from "./budget.js";
|
|
|
3
3
|
export * from "./client.js";
|
|
4
4
|
export * from "./confirm-release.js";
|
|
5
5
|
export * from "./errors.js";
|
|
6
|
+
export * from "./funding.js";
|
|
6
7
|
export * from "./jobs.js";
|
|
7
8
|
export * from "./ledger.js";
|
|
8
9
|
export * from "./public-host.js";
|
|
@@ -10,4 +11,5 @@ export * from "./reputation.js";
|
|
|
10
11
|
export * from "./setup.js";
|
|
11
12
|
export * from "./simple.js";
|
|
12
13
|
export * from "./transport.js";
|
|
14
|
+
export * from "./trust.js";
|
|
13
15
|
//# 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,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,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,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -6,6 +6,12 @@ export type DeliverInput = {
|
|
|
6
6
|
sha256: string;
|
|
7
7
|
url: string;
|
|
8
8
|
};
|
|
9
|
+
export type DeliveryPlan = {
|
|
10
|
+
attestor: Address;
|
|
11
|
+
instructions: Instruction[];
|
|
12
|
+
commitment: string;
|
|
13
|
+
sealedTo: Address[];
|
|
14
|
+
};
|
|
9
15
|
export type Delivery = {
|
|
10
16
|
intent: Address;
|
|
11
17
|
worker: Address;
|
|
@@ -14,27 +20,23 @@ export type Delivery = {
|
|
|
14
20
|
signature: Signature;
|
|
15
21
|
slot: bigint;
|
|
16
22
|
blockTime: bigint | null;
|
|
23
|
+
commitment: string;
|
|
24
|
+
sealed: string;
|
|
17
25
|
};
|
|
18
26
|
export type DeliveryRecord = {
|
|
19
27
|
deliveries: Delivery[];
|
|
20
28
|
complete: boolean;
|
|
21
29
|
pages: number;
|
|
22
30
|
};
|
|
23
|
-
export type Announcement = {
|
|
24
|
-
sha256: string;
|
|
25
|
-
first: Delivery;
|
|
26
|
-
copies: number;
|
|
27
|
-
};
|
|
28
31
|
export declare class NotDeliverable extends Error {
|
|
29
32
|
readonly intent: Address;
|
|
30
33
|
constructor(intent: Address, reason: string);
|
|
31
34
|
}
|
|
32
|
-
export declare function deliveryInstructions(transport: Transport, input: DeliverInput): Promise<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}>;
|
|
36
|
-
export declare function deliveryRecord(transport: Transport, judge: Address, intent?: Address, pages?: number): Promise<DeliveryRecord>;
|
|
37
|
-
export declare function judgedDeliveries(transport: Transport, judge: Address, judged: ReadonlySet<Address>, floor: bigint | null, covered: () => Promise<boolean>, pages: number): Promise<DeliveryRecord>;
|
|
35
|
+
export declare function deliveryInstructions(transport: Transport, input: DeliverInput): Promise<DeliveryPlan>;
|
|
36
|
+
export declare function deliveryRecord(transport: Transport, judge: Address, intent?: Address, pages?: number, keypair?: Uint8Array): Promise<DeliveryRecord>;
|
|
37
|
+
export declare function judgedDeliveries(transport: Transport, judge: Address, judged: ReadonlySet<Address>, floor: bigint | null, covered: () => Promise<boolean>, pages: number, keypair?: Uint8Array): Promise<DeliveryRecord>;
|
|
38
38
|
export declare function deliveriesOf(transport: Transport, judge: Address, intent?: Address): Promise<Delivery[]>;
|
|
39
|
+
export declare function commitmentOf(intent: Address, worker: Address, sha256: string): string;
|
|
40
|
+
export declare function announces(delivery: Delivery, sha256: string): boolean;
|
|
41
|
+
export declare function withWork(delivery: Delivery, sha256: string): Delivery | null;
|
|
39
42
|
export declare function firstDelivery(deliveries: readonly Delivery[], sha256: string): Delivery | null;
|
|
40
|
-
export declare function announcements(deliveries: readonly Delivery[]): Announcement[];
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import { getTransferSolInstruction } from "@solana-program/system";
|
|
2
|
-
import {
|
|
3
|
+
import { commitmentPreimage, deliveryCommitment, deliveryMemoV2, DELIVERY_V2_MEMO_PREFIX, IntentStatus, isMemoUrl, isSha256Hex, MEMO_URL_RULE, openUrl, parseDeliveryMemoV2, sealUrl, } from "@intent-engine/core";
|
|
3
4
|
import { chainTime } from "./accounts.js";
|
|
5
|
+
import { loadCommittee } from "./client-committee.js";
|
|
4
6
|
import { memoInstruction } from "./job-memos.js";
|
|
5
7
|
import { historyCovers, openProofEscrows, proofAt } from "./job-proofs.js";
|
|
6
8
|
import { DELIVERY_PAGES, MEMOS_PER_TRANSACTION, scan } from "./job-scan.js";
|
|
@@ -15,7 +17,10 @@ export class NotDeliverable extends Error {
|
|
|
15
17
|
}
|
|
16
18
|
export async function deliveryInstructions(transport, input) {
|
|
17
19
|
const { worker, intent } = input;
|
|
18
|
-
const
|
|
20
|
+
const sha256 = input.sha256.toLowerCase();
|
|
21
|
+
if (!isMemoUrl(input.url)) {
|
|
22
|
+
throw new RangeError(`a delivery url must be ${MEMO_URL_RULE}`);
|
|
23
|
+
}
|
|
19
24
|
if (await plainHttpOnPublic(transport, input.url)) {
|
|
20
25
|
throw new RangeError(`the work url ${input.url} ${PLAIN_HTTP_ON_PUBLIC}`);
|
|
21
26
|
}
|
|
@@ -27,12 +32,13 @@ export async function deliveryInstructions(transport, input) {
|
|
|
27
32
|
throw new NotDeliverable(intent, "is no longer open");
|
|
28
33
|
}
|
|
29
34
|
const attestor = proof.params.attestor;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
const notify = getTransferSolInstruction({ source: worker, destination: attestor, amount: 0n });
|
|
36
|
+
const sealedTo = [...((await loadCommittee(transport, attestor))?.members ?? [attestor])];
|
|
37
|
+
const commitment = await deliveryCommitment({ intent, worker: worker.address, sha256 });
|
|
38
|
+
const blob = await sealUrl(input.url, sealedTo, intent);
|
|
39
|
+
return { attestor, instructions: [memoInstruction(worker, deliveryMemoV2({ intent, commitment, blob })), notify], commitment, sealedTo };
|
|
34
40
|
}
|
|
35
|
-
export async function deliveryRecord(transport, judge, intent, pages = DELIVERY_PAGES) {
|
|
41
|
+
export async function deliveryRecord(transport, judge, intent, pages = DELIVERY_PAGES, keypair) {
|
|
36
42
|
let proofs;
|
|
37
43
|
if (intent === undefined) {
|
|
38
44
|
proofs = await openProofEscrows(transport, judge, Number.POSITIVE_INFINITY);
|
|
@@ -48,45 +54,47 @@ export async function deliveryRecord(transport, judge, intent, pages = DELIVERY_
|
|
|
48
54
|
const judged = new Set(proofs.map(({ address }) => address));
|
|
49
55
|
const oldest = proofs.reduce((low, proof) => (proof.intent.createdAt < low.intent.createdAt ? proof : low), first);
|
|
50
56
|
const floor = oldest.intent.createdAt;
|
|
51
|
-
return judgedDeliveries(transport, judge, judged, floor, () => historyCovers(transport, oldest.address, floor), pages);
|
|
57
|
+
return judgedDeliveries(transport, judge, judged, floor, () => historyCovers(transport, oldest.address, floor), pages, keypair);
|
|
52
58
|
}
|
|
53
|
-
export async function judgedDeliveries(transport, judge, judged, floor, covered, pages) {
|
|
54
|
-
const scanned = await scan(transport, judge, { floor, memo:
|
|
59
|
+
export async function judgedDeliveries(transport, judge, judged, floor, covered, pages, keypair) {
|
|
60
|
+
const scanned = await scan(transport, judge, { floor, memo: DELIVERY_V2_MEMO_PREFIX, pages, covered });
|
|
55
61
|
const { transactions, complete } = scanned;
|
|
56
|
-
const
|
|
62
|
+
const found = transactions.flatMap(({ signature, slot, blockTime, failed, memos, feePayer }) => failed || feePayer === undefined
|
|
57
63
|
? []
|
|
58
|
-
: (memos ?? [])
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
: (memos ?? []).slice(0, MEMOS_PER_TRANSACTION).flatMap((text) => {
|
|
65
|
+
const at = { worker: feePayer, signature: signature, slot, blockTime };
|
|
66
|
+
const sealed = parseDeliveryMemoV2(text);
|
|
67
|
+
return sealed === null || !judged.has(sealed.intent)
|
|
68
|
+
? []
|
|
69
|
+
: [{ intent: sealed.intent, sha256: "", url: "", ...at, commitment: sealed.commitment, sealed: sealed.blob }];
|
|
70
|
+
}));
|
|
71
|
+
const deliveries = keypair === undefined ? found : await Promise.all(found.map((delivery) => opened(delivery, keypair)));
|
|
64
72
|
return { deliveries, complete: complete && !transactions.some(({ unread }) => unread === true), pages: scanned.pages };
|
|
65
73
|
}
|
|
74
|
+
async function opened(delivery, keypair) {
|
|
75
|
+
const url = await openUrl(delivery.sealed, keypair, delivery.intent).catch(() => null);
|
|
76
|
+
return url === null ? delivery : { ...delivery, url };
|
|
77
|
+
}
|
|
66
78
|
export async function deliveriesOf(transport, judge, intent) {
|
|
67
79
|
return (await deliveryRecord(transport, judge, intent)).deliveries;
|
|
68
80
|
}
|
|
69
81
|
const earlier = (a, b) => a.slot < b.slot || (a.slot === b.slot && a.signature < b.signature);
|
|
82
|
+
export function commitmentOf(intent, worker, sha256) {
|
|
83
|
+
return createHash("sha256").update(commitmentPreimage({ intent, worker, sha256 })).digest("hex");
|
|
84
|
+
}
|
|
85
|
+
export function announces(delivery, sha256) {
|
|
86
|
+
return isSha256Hex(sha256) && delivery.commitment === commitmentOf(delivery.intent, delivery.worker, sha256);
|
|
87
|
+
}
|
|
88
|
+
export function withWork(delivery, sha256) {
|
|
89
|
+
return announces(delivery, sha256) ? { ...delivery, sha256 } : null;
|
|
90
|
+
}
|
|
70
91
|
export function firstDelivery(deliveries, sha256) {
|
|
71
92
|
let first = null;
|
|
72
93
|
for (const delivery of deliveries) {
|
|
73
|
-
if (delivery
|
|
94
|
+
if (announces(delivery, sha256) && (first === null || earlier(delivery, first))) {
|
|
74
95
|
first = delivery;
|
|
75
96
|
}
|
|
76
97
|
}
|
|
77
|
-
return first;
|
|
78
|
-
}
|
|
79
|
-
export function announcements(deliveries) {
|
|
80
|
-
const hashes = [...new Set(deliveries.map(({ sha256 }) => sha256))];
|
|
81
|
-
return hashes
|
|
82
|
-
.flatMap((sha256) => {
|
|
83
|
-
const first = firstDelivery(deliveries, sha256);
|
|
84
|
-
if (first === null) {
|
|
85
|
-
return [];
|
|
86
|
-
}
|
|
87
|
-
const others = new Set(deliveries.filter((d) => d.sha256 === sha256 && d.worker !== first.worker).map(({ worker }) => worker));
|
|
88
|
-
return [{ sha256, first, copies: others.size }];
|
|
89
|
-
})
|
|
90
|
-
.sort((a, b) => (earlier(a.first, b.first) ? -1 : earlier(b.first, a.first) ? 1 : 0));
|
|
98
|
+
return first === null || first.sha256 === sha256 ? first : { ...first, sha256 };
|
|
91
99
|
}
|
|
92
100
|
//# sourceMappingURL=job-deliveries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-deliveries.js","sourceRoot":"","sources":["../../src/job-deliveries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-deliveries.js","sourceRoot":"","sources":["../../src/job-deliveries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Address } from "@solana/kit";
|
|
2
|
+
import { type FeeConfig, type Intent } from "@intent-engine/core";
|
|
3
|
+
import type { Job } from "./job-specs.js";
|
|
4
|
+
import type { Transport } from "./transport.js";
|
|
5
|
+
export type PayTerms = FeeConfig & {
|
|
6
|
+
paused: number;
|
|
7
|
+
fillDisabledKinds: bigint;
|
|
8
|
+
};
|
|
9
|
+
export type JobPay = {
|
|
10
|
+
netPay: string;
|
|
11
|
+
payable: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function releaseNet(intent: Intent, terms: PayTerms): bigint | null;
|
|
14
|
+
export declare function jobPays(transport: Transport, jobs: readonly Job[], terms: PayTerms, decimalsOf?: (mint: Address) => Promise<number>): Promise<JobPay[]>;
|