@intent-engine/client 0.1.42 → 0.1.44

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.
Files changed (95) hide show
  1. package/dist/src/accounts.d.ts +13 -2
  2. package/dist/src/accounts.js +25 -8
  3. package/dist/src/accounts.js.map +1 -1
  4. package/dist/src/client-claims.js +3 -3
  5. package/dist/src/client-claims.js.map +1 -1
  6. package/dist/src/client-committee.d.ts +4 -0
  7. package/dist/src/client-committee.js +14 -2
  8. package/dist/src/client-committee.js.map +1 -1
  9. package/dist/src/client-errors.d.ts +6 -0
  10. package/dist/src/client-errors.js +13 -0
  11. package/dist/src/client-errors.js.map +1 -1
  12. package/dist/src/client-intents.js +8 -4
  13. package/dist/src/client-intents.js.map +1 -1
  14. package/dist/src/client-reads.js +3 -3
  15. package/dist/src/client-reads.js.map +1 -1
  16. package/dist/src/client-settle.d.ts +5 -1
  17. package/dist/src/client-settle.js +41 -10
  18. package/dist/src/client-settle.js.map +1 -1
  19. package/dist/src/client-types.d.ts +18 -4
  20. package/dist/src/client-types.js.map +1 -1
  21. package/dist/src/client.d.ts +4 -3
  22. package/dist/src/client.js +8 -4
  23. package/dist/src/client.js.map +1 -1
  24. package/dist/src/confirm-release.d.ts +6 -2
  25. package/dist/src/confirm-release.js +19 -4
  26. package/dist/src/confirm-release.js.map +1 -1
  27. package/dist/src/delivery-openings.d.ts +84 -0
  28. package/dist/src/delivery-openings.js +162 -0
  29. package/dist/src/delivery-openings.js.map +1 -0
  30. package/dist/src/funding.js +16 -12
  31. package/dist/src/funding.js.map +1 -1
  32. package/dist/src/index.d.ts +1 -0
  33. package/dist/src/index.js +1 -0
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/job-deliveries.d.ts +49 -5
  36. package/dist/src/job-deliveries.js +128 -21
  37. package/dist/src/job-deliveries.js.map +1 -1
  38. package/dist/src/job-memos.d.ts +5 -2
  39. package/dist/src/job-memos.js +16 -12
  40. package/dist/src/job-memos.js.map +1 -1
  41. package/dist/src/job-origins.d.ts +2 -2
  42. package/dist/src/job-origins.js +2 -2
  43. package/dist/src/job-origins.js.map +1 -1
  44. package/dist/src/job-pay.js +2 -2
  45. package/dist/src/job-pay.js.map +1 -1
  46. package/dist/src/job-proofs.js +2 -2
  47. package/dist/src/job-proofs.js.map +1 -1
  48. package/dist/src/job-scan.d.ts +6 -1
  49. package/dist/src/job-scan.js +13 -0
  50. package/dist/src/job-scan.js.map +1 -1
  51. package/dist/src/job-specs.d.ts +1 -0
  52. package/dist/src/job-specs.js +1 -0
  53. package/dist/src/job-specs.js.map +1 -1
  54. package/dist/src/jobs.d.ts +3 -2
  55. package/dist/src/jobs.js +3 -2
  56. package/dist/src/jobs.js.map +1 -1
  57. package/dist/src/ledger.d.ts +11 -4
  58. package/dist/src/ledger.js +46 -2
  59. package/dist/src/ledger.js.map +1 -1
  60. package/dist/src/release-reads.d.ts +8 -1
  61. package/dist/src/release-reads.js +34 -1
  62. package/dist/src/release-reads.js.map +1 -1
  63. package/dist/src/reputation.d.ts +16 -0
  64. package/dist/src/reputation.js +110 -36
  65. package/dist/src/reputation.js.map +1 -1
  66. package/dist/src/rpc-retry.d.ts +2 -1
  67. package/dist/src/rpc-retry.js +4 -3
  68. package/dist/src/rpc-retry.js.map +1 -1
  69. package/dist/src/rpc-shapes.d.ts +12 -1
  70. package/dist/src/rpc-transport.js +44 -8
  71. package/dist/src/rpc-transport.js.map +1 -1
  72. package/dist/src/simple-reads.d.ts +15 -0
  73. package/dist/src/simple-reads.js +96 -0
  74. package/dist/src/simple-reads.js.map +1 -0
  75. package/dist/src/simple-types.d.ts +32 -1
  76. package/dist/src/simple-work.d.ts +6 -1
  77. package/dist/src/simple-work.js +27 -12
  78. package/dist/src/simple-work.js.map +1 -1
  79. package/dist/src/simple.d.ts +2 -2
  80. package/dist/src/simple.js +4 -2
  81. package/dist/src/simple.js.map +1 -1
  82. package/dist/src/svm.js +3 -1
  83. package/dist/src/svm.js.map +1 -1
  84. package/dist/src/transaction-keys.d.ts +5 -1
  85. package/dist/src/transaction-keys.js +67 -13
  86. package/dist/src/transaction-keys.js.map +1 -1
  87. package/dist/src/transport.d.ts +1 -1
  88. package/dist/src/transport.js.map +1 -1
  89. package/dist/src/trust.d.ts +1 -0
  90. package/dist/src/trust.js +43 -28
  91. package/dist/src/trust.js.map +1 -1
  92. package/dist/src/unopened.d.ts +53 -0
  93. package/dist/src/unopened.js +169 -0
  94. package/dist/src/unopened.js.map +1 -0
  95. package/package.json +3 -2
@@ -0,0 +1,96 @@
1
+ import { isSha256Hex } from "@intent-engine/core";
2
+ import { HISTORY_LIMIT } from "./client-types.js";
3
+ import { paidWalletsOf, publishedSalts, releaseStandingOf } from "./delivery-openings.js";
4
+ import { earlier, opensWith } from "./job-deliveries.js";
5
+ import { recordedRelease } from "./job-memos.js";
6
+ import { proofAt } from "./job-proofs.js";
7
+ import { eventsOf, releaseOf } from "./release-reads.js";
8
+ export function sha256Given(sha256, name) {
9
+ const lowered = sha256.trim().toLowerCase();
10
+ if (!isSha256Hex(lowered)) {
11
+ throw new RangeError(`${name} must be 64 hex digits`);
12
+ }
13
+ return lowered;
14
+ }
15
+ export function openingSalt(delivery, record, sha256) {
16
+ const salts = [...(delivery.salt === "" ? [] : [delivery.salt]), ...publishedSalts(delivery, record.openings)];
17
+ return salts.find((salt) => opensWith(delivery, salt, sha256)) ?? null;
18
+ }
19
+ export function firstOpened(record, sha256) {
20
+ let first = null;
21
+ for (const delivery of record.deliveries) {
22
+ const salt = openingSalt(delivery, record, sha256);
23
+ if (salt !== null && (first === null || earlier(delivery, first))) {
24
+ first = { ...delivery, sha256, salt };
25
+ }
26
+ }
27
+ return first;
28
+ }
29
+ export function workReads(ctx) {
30
+ const { transport } = ctx.client;
31
+ const recordOf = async (escrow, keypair) => {
32
+ const proof = await proofAt(transport, escrow);
33
+ if (proof === null) {
34
+ return { deliveries: [], openings: [], complete: true, pages: 0 };
35
+ }
36
+ return ctx.client.deliveryRecord({ judge: proof.params.attestor, intent: escrow, ...(keypair === undefined ? {} : { keypair }) });
37
+ };
38
+ const receipt = async (input) => {
39
+ const { escrow } = input;
40
+ const transactions = await transport.engineTransactions(HISTORY_LIMIT, escrow);
41
+ const release = releaseOf(transactions, escrow);
42
+ if (release === undefined || (release.event.name !== "IntentAttested" && release.event.name !== "IntentSplit")) {
43
+ return { escrow, released: false, signature: null, payee: null, payees: [], deliveredSha256: null, valid: false, refutedBy: null, complete: true, summary: `Escrow ${escrow} is not released yet` };
44
+ }
45
+ const attestor = release.event.fields.attestor;
46
+ const signature = release.transaction.signature;
47
+ const recorded = recordedRelease(transactions, release.transaction, attestor);
48
+ const payees = (await paidWalletsOf(transport, release, escrow)) ?? [];
49
+ const creation = eventsOf(transactions, escrow).find(({ event }) => event.name === "IntentCreated")?.transaction;
50
+ const standing = recorded === null
51
+ ? { valid: false, refutedBy: null, complete: true }
52
+ : await releaseStandingOf(transport, {
53
+ intent: escrow,
54
+ attestor,
55
+ release: release.transaction,
56
+ recorded,
57
+ payees,
58
+ createdAt: creation?.blockTime ?? null,
59
+ from: creation?.slot ?? null,
60
+ });
61
+ const payee = payees[0] ?? null;
62
+ const work = recorded === null ? "no recorded work" : `work ${recorded.sha256}`;
63
+ const verdict = standing.valid ? "valid" : "not valid";
64
+ return {
65
+ escrow,
66
+ released: true,
67
+ signature,
68
+ payee,
69
+ payees,
70
+ deliveredSha256: recorded?.sha256 ?? null,
71
+ valid: standing.valid,
72
+ refutedBy: standing.refutedBy,
73
+ complete: standing.complete,
74
+ summary: `Escrow ${escrow} was released in ${signature} to ${payees.length === 0 ? "an unknown wallet" : payees.join(", ")} for ${work}; the release is ${verdict}`,
75
+ };
76
+ };
77
+ const deliveries = async (input) => {
78
+ const given = input.sha256 === undefined ? [] : [sha256Given(input.sha256, "sha256")];
79
+ const [record, released] = await Promise.all([recordOf(input.escrow, input.keypair), receipt({ escrow: input.escrow })]);
80
+ const candidates = [...new Set([...given, ...(released.deliveredSha256 === null ? [] : [released.deliveredSha256])])];
81
+ return [...record.deliveries]
82
+ .sort((a, b) => (earlier(a, b) ? -1 : earlier(b, a) ? 1 : 0))
83
+ .map((delivery) => {
84
+ const sha256 = candidates.find((candidate) => openingSalt(delivery, record, candidate) !== null) ?? null;
85
+ return {
86
+ worker: delivery.worker,
87
+ sha256,
88
+ url: delivery.url === "" ? null : delivery.url,
89
+ opened: sha256 !== null,
90
+ signature: delivery.signature,
91
+ };
92
+ });
93
+ };
94
+ return { recordOf, receipt, deliveries };
95
+ }
96
+ //# sourceMappingURL=simple-reads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-reads.js","sourceRoot":"","sources":["../../src/simple-reads.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Address, Instruction, Signature, TransactionSigner } from "@solana/kit";
2
2
  import type { Priority } from "./budget.js";
3
3
  import type { Client, WatchCallback, WatchOptions } from "./client-types.js";
4
+ import type { DeliveryOpeners } from "./job-deliveries.js";
4
5
  import type { Job } from "./jobs.js";
5
6
  import type { Cluster } from "./simple-tokens.js";
6
7
  import type { Transport } from "./transport.js";
@@ -66,9 +67,37 @@ export type DeliverWorkInput = PreviewOption & {
66
67
  };
67
68
  export type ReleaseInput = PreviewOption & {
68
69
  escrow: Address;
69
- to: Address;
70
+ to?: Address;
70
71
  deliveredSha256: string;
71
72
  result?: number | bigint;
73
+ keypair?: DeliveryOpeners;
74
+ };
75
+ export type DeliveriesInput = {
76
+ escrow: Address;
77
+ sha256?: string;
78
+ keypair?: DeliveryOpeners;
79
+ };
80
+ export type Announcement = {
81
+ worker: Address;
82
+ sha256: string | null;
83
+ url: string | null;
84
+ opened: boolean;
85
+ signature: Signature;
86
+ };
87
+ export type ReceiptInput = {
88
+ escrow: Address;
89
+ };
90
+ export type ReleaseReceipt = {
91
+ escrow: Address;
92
+ released: boolean;
93
+ signature: Signature | null;
94
+ payee: Address | null;
95
+ payees: Address[];
96
+ deliveredSha256: string | null;
97
+ valid: boolean;
98
+ refutedBy: Signature | null;
99
+ complete: boolean;
100
+ summary: string;
72
101
  };
73
102
  export type CancelInput = PreviewOption & ({
74
103
  escrow: Address;
@@ -106,6 +135,8 @@ export type SimpleClient = {
106
135
  }): Promise<OpenWork[]>;
107
136
  deliver<I extends DeliverWorkInput>(input: I): Promise<Outcome<I>>;
108
137
  release<I extends ReleaseInput>(input: I): Promise<Outcome<I>>;
138
+ deliveries(input: DeliveriesInput): Promise<Announcement[]>;
139
+ receipt(input: ReceiptInput): Promise<ReleaseReceipt>;
109
140
  cancel<I extends CancelInput>(input: I): Promise<Outcome<I>>;
110
141
  watch(onChange: WatchCallback, signal: AbortSignal, filter?: WatchOptions): Promise<void>;
111
142
  };
@@ -1,7 +1,10 @@
1
1
  import { type Address } from "@solana/kit";
2
2
  import { type SimpleContext } from "./simple-orders.js";
3
3
  import type { CancelInput, DeliverWorkInput, OpenWork, ReleaseInput } from "./simple-types.js";
4
- export declare const RELEASE_NEEDS_KEY_PAIR = "release signs the judge's verdict, so connect with a key pair signer";
4
+ export declare const RELEASE_NEEDS_KEY_PAIR = "release signs the judge's verdict, so connect with a signer that also signs messages";
5
+ export declare const recordIncomplete: (sha256: string) => string;
6
+ export declare const nothingOpens: (sha256: string) => string;
7
+ export declare const notFirstAnnouncer: (worker: Address, announcement: string, sha256: string, to: Address) => string;
5
8
  export declare function workSends(ctx: SimpleContext): {
6
9
  findWork: (filter?: {
7
10
  judge?: Address;
@@ -9,4 +12,6 @@ export declare function workSends(ctx: SimpleContext): {
9
12
  deliver: (input: DeliverWorkInput) => Promise<import("./simple-types.js").Preview | import("./simple-types.js").Sent>;
10
13
  release: (input: ReleaseInput) => Promise<import("./simple-types.js").Preview | import("./simple-types.js").Sent>;
11
14
  cancel: (input: CancelInput) => Promise<import("./simple-types.js").Preview | import("./simple-types.js").Sent>;
15
+ deliveries: (input: import("./simple-types.js").DeliveriesInput) => Promise<import("./simple-types.js").Announcement[]>;
16
+ receipt: (input: import("./simple-types.js").ReceiptInput) => Promise<import("./simple-types.js").ReleaseReceipt>;
12
17
  };
@@ -1,11 +1,16 @@
1
- import { isKeyPairSigner } from "@solana/kit";
2
- import { formatAmount, isSha256Hex } from "@intent-engine/core";
1
+ import { isMessagePartialSigner } from "@solana/kit";
2
+ import { formatAmount } from "@intent-engine/core";
3
3
  import { NotSettleable } from "./client-errors.js";
4
4
  import { intentAt } from "./jobs.js";
5
5
  import { outcome } from "./simple-orders.js";
6
+ import { firstOpened, sha256Given, workReads } from "./simple-reads.js";
6
7
  import { nameOfMint, wholeTokens } from "./simple-tokens.js";
7
- export const RELEASE_NEEDS_KEY_PAIR = "release signs the judge's verdict, so connect with a key pair signer";
8
+ export const RELEASE_NEEDS_KEY_PAIR = "release signs the judge's verdict, so connect with a signer that also signs messages";
9
+ export const recordIncomplete = (sha256) => `has a delivery record too long to read in full, so the first worker who announced the work ${sha256} cannot be known; nothing was sent`;
10
+ export const nothingOpens = (sha256) => `has no announcement that opens to the work ${sha256}: the worker announces it with deliver, then opens it with client.openDelivery, or the judge passes keypair to open the announcements sealed to it; nothing was sent`;
11
+ export const notFirstAnnouncer = (worker, announcement, sha256, to) => `pays ${worker}, who announced the work ${sha256} first, in ${announcement}, not ${to}; nothing was sent`;
8
12
  export function workSends(ctx) {
13
+ const { recordOf, deliveries, receipt } = workReads(ctx);
9
14
  const held = async (address) => {
10
15
  const intent = await intentAt(ctx.client.transport, address);
11
16
  if (intent === null) {
@@ -21,10 +26,7 @@ export function workSends(ctx) {
21
26
  }));
22
27
  };
23
28
  const deliver = async (input) => {
24
- if (!isSha256Hex(input.sha256.trim().toLowerCase())) {
25
- throw new RangeError("sha256 must be 64 hex digits");
26
- }
27
- const sha256 = input.sha256.trim().toLowerCase();
29
+ const sha256 = sha256Given(input.sha256, "sha256");
28
30
  const summary = `Deliver work ${sha256} at ${input.url} for escrow ${input.escrow}`;
29
31
  return outcome(ctx, input.preview, summary, async (client) => ({
30
32
  signature: await client.deliver({ worker: ctx.signer, intent: input.escrow, sha256, url: input.url }),
@@ -32,20 +34,33 @@ export function workSends(ctx) {
32
34
  };
33
35
  const release = async (input) => {
34
36
  const judge = ctx.signer;
35
- if (!isKeyPairSigner(judge)) {
37
+ if (!isMessagePartialSigner(judge)) {
36
38
  throw new TypeError(RELEASE_NEEDS_KEY_PAIR);
37
39
  }
40
+ const sha256 = sha256Given(input.deliveredSha256, "deliveredSha256");
38
41
  const { intent, mint } = await held(input.escrow);
42
+ const record = await recordOf(input.escrow, input.keypair);
43
+ if (!record.complete) {
44
+ throw new NotSettleable(input.escrow, recordIncomplete(sha256));
45
+ }
46
+ const first = firstOpened(record, sha256);
47
+ if (first === null) {
48
+ throw new NotSettleable(input.escrow, nothingOpens(sha256));
49
+ }
50
+ if (input.to !== undefined && input.to !== first.worker) {
51
+ throw new NotSettleable(input.escrow, notFirstAnnouncer(first.worker, first.signature, sha256, input.to));
52
+ }
39
53
  const result = BigInt(input.result ?? 1n);
40
- const summary = `Release escrow ${input.escrow} holding ${wholeTokens(intent.escrowed - intent.filled, mint.decimals, intent.inputMint)} to ${input.to} for work ${input.deliveredSha256.toLowerCase()}`;
54
+ const summary = `Release escrow ${input.escrow} holding ${wholeTokens(intent.escrowed - intent.filled, mint.decimals, intent.inputMint)} to ${first.worker} for work ${sha256}, announced first in ${first.signature}`;
41
55
  return outcome(ctx, input.preview, summary, async (client) => ({
42
56
  signature: await client.settleProof({
43
57
  judge,
44
58
  owner: intent.owner,
45
59
  nonce: intent.nonce,
46
- payTo: input.to,
60
+ payTo: first.worker,
47
61
  result,
48
- deliveredSha256: input.deliveredSha256,
62
+ deliveredSha256: sha256,
63
+ deliveredSalt: first.salt,
49
64
  }),
50
65
  intent: input.escrow,
51
66
  nonce: intent.nonce,
@@ -64,6 +79,6 @@ export function workSends(ctx) {
64
79
  nonce: intent.nonce,
65
80
  }));
66
81
  };
67
- return { findWork, deliver, release, cancel };
82
+ return { findWork, deliver, release, cancel, deliveries, receipt };
68
83
  }
69
84
  //# sourceMappingURL=simple-work.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-work.js","sourceRoot":"","sources":["../../src/simple-work.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-work.js","sourceRoot":"","sources":["../../src/simple-work.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ConnectOptions, SimpleClient } from "./simple-types.js";
2
- export type { CancelInput, ConnectOptions, DeliverWorkInput, HeldToken, LimitInput, OpenWork, Outcome, PayForWorkInput, Preview, ReleaseInput, Seconds, Sent, SimpleClient, SwapInput, WalletBalance, } from "./simple-types.js";
2
+ export type { Announcement, CancelInput, ConnectOptions, DeliveriesInput, DeliverWorkInput, HeldToken, LimitInput, OpenWork, Outcome, PayForWorkInput, Preview, ReceiptInput, ReleaseInput, ReleaseReceipt, Seconds, Sent, SimpleClient, SwapInput, WalletBalance, } from "./simple-types.js";
3
3
  export { ESCROW_EXPIRES_IN, PREVIEW_SIGNATURE, RECORD_TOKEN_NEEDED } from "./simple-orders.js";
4
- export { RELEASE_NEEDS_KEY_PAIR } from "./simple-work.js";
4
+ export { notFirstAnnouncer, nothingOpens, RELEASE_NEEDS_KEY_PAIR, recordIncomplete } from "./simple-work.js";
5
5
  export { type Cluster, CLUSTER_URLS, clusterUrl, MAINNET_REFUSED, MainnetNotAllowed, mintOfToken, tokenAmount, } from "./simple-tokens.js";
6
6
  export declare function connect(options: ConnectOptions): Promise<SimpleClient>;
@@ -5,7 +5,7 @@ import { orderSends } from "./simple-orders.js";
5
5
  import { CLUSTER_URLS, clusterUrl, MainnetNotAllowed, mintOfToken, nameOfMint, wholeTokens } from "./simple-tokens.js";
6
6
  import { workSends } from "./simple-work.js";
7
7
  export { ESCROW_EXPIRES_IN, PREVIEW_SIGNATURE, RECORD_TOKEN_NEEDED } from "./simple-orders.js";
8
- export { RELEASE_NEEDS_KEY_PAIR } from "./simple-work.js";
8
+ export { notFirstAnnouncer, nothingOpens, RELEASE_NEEDS_KEY_PAIR, recordIncomplete } from "./simple-work.js";
9
9
  export { CLUSTER_URLS, clusterUrl, MAINNET_REFUSED, MainnetNotAllowed, mintOfToken, tokenAmount, } from "./simple-tokens.js";
10
10
  const SOL_DECIMALS = 9;
11
11
  export async function connect(options) {
@@ -22,7 +22,7 @@ export async function connect(options) {
22
22
  }
23
23
  const ctx = { url, signer, client, options: clientOptions };
24
24
  const { swap, limit, payForWork } = orderSends(ctx);
25
- const { findWork, deliver, release, cancel } = workSends(ctx);
25
+ const { findWork, deliver, release, cancel, deliveries, receipt } = workSends(ctx);
26
26
  const balance = async (tokens) => {
27
27
  const named = tokens ?? (url === CLUSTER_URLS.devnet ? ["SOL", "TEST"] : ["SOL"]);
28
28
  const mints = [...new Set(named.map((token) => mintOfToken(token, url)))];
@@ -47,6 +47,8 @@ export async function connect(options) {
47
47
  balance,
48
48
  ...send,
49
49
  findWork,
50
+ deliveries,
51
+ receipt,
50
52
  watch: (onChange, signal, filter = { owner: signer.address }) => client.watch(onChange, signal, filter),
51
53
  };
52
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/simple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/simple.ts"],"names":[],"mappings":"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"}
package/dist/src/svm.js CHANGED
@@ -43,6 +43,8 @@ export function svmTransport(svm, options = {}) {
43
43
  const compiled = getCompiledTransactionMessageDecoder().decode(tx.messageBytes);
44
44
  const keys = loaded(compiled);
45
45
  const before = holdings(keys);
46
+ const lamportsOf = () => keys.map((key) => svm.getBalance(key) ?? 0n);
47
+ const lamportsBefore = lamportsOf();
46
48
  const result = svm.sendTransaction(tx);
47
49
  if (result instanceof FailedTransactionMetadata) {
48
50
  throw new Error(`${String(result.err())}\n${result.meta().logs().join("\n")}`);
@@ -71,7 +73,7 @@ export function svmTransport(svm, options = {}) {
71
73
  const transfers = solTransfersOf(keys, [
72
74
  ...("instructions" in compiled ? compiled.instructions : []).map((ix) => ({ program: keys[ix.programAddressIndex], accounts: ix.accountIndices ?? [], data: Uint8Array.from(ix.data ?? []) })),
73
75
  ...everyInner.map((ix) => ({ program: keys[ix.programIdIndex()], accounts: Array.from(ix.accounts()), data: new Uint8Array(ix.data()) })),
74
- ]);
76
+ ], { before: lamportsBefore, after: lamportsOf() });
75
77
  const found = {
76
78
  signature,
77
79
  slot: clock.slot,
@@ -1 +1 @@
1
- {"version":3,"file":"svm.js","sourceRoot":"","sources":["../../src/svm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svm.js","sourceRoot":"","sources":["../../src/svm.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,8 @@ export type CalledInstruction = {
9
9
  accounts: readonly number[];
10
10
  data: Uint8Array;
11
11
  };
12
- export declare function solTransfersOf(keys: readonly Address[], instructions: readonly CalledInstruction[]): SolTransfer[];
12
+ export type Balances = {
13
+ before: readonly bigint[];
14
+ after: readonly bigint[];
15
+ };
16
+ export declare function solTransfersOf(keys: readonly Address[], instructions: readonly CalledInstruction[], balances?: Balances): SolTransfer[];
@@ -1,4 +1,4 @@
1
- import { SYSTEM_PROGRAM_ADDRESS } from "./accounts.js";
1
+ import { SYSTEM_PROGRAM_ADDRESS, TOKEN_PROGRAMS } from "./accounts.js";
2
2
  export function keysAt(keys, indices) {
3
3
  const found = Array.from(indices, (index) => keys[index]);
4
4
  return found.every((key) => key !== undefined) ? found : [];
@@ -17,20 +17,74 @@ export const MEMO_PROGRAM_ADDRESS = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
17
17
  export function signersAmong(keys, indices, signing) {
18
18
  return [...new Set(indices.filter((index) => index < signing).flatMap((index) => keys[index] ?? []))];
19
19
  }
20
+ const SYSTEM_CREATE_ACCOUNT = 0;
20
21
  const SYSTEM_TRANSFER = 2;
22
+ const SYSTEM_CREATE_ACCOUNT_WITH_SEED = 3;
23
+ const SYSTEM_WITHDRAW_NONCE = 5;
21
24
  const SYSTEM_TRANSFER_WITH_SEED = 11;
22
- const TRANSFER_DATA = 12;
23
- export function solTransfersOf(keys, instructions) {
24
- return instructions.flatMap(({ program, accounts, data }) => {
25
- if (program !== SYSTEM_PROGRAM_ADDRESS || data.length < TRANSFER_DATA) {
26
- return [];
25
+ const TOKEN_CLOSE_ACCOUNT = 9;
26
+ const TOKEN_WITHDRAW_EXCESS_LAMPORTS = 38;
27
+ const LAMPORTS_AT = 4;
28
+ const SEED_LENGTH_AT = 36;
29
+ const SEED_AT = 44;
30
+ const lamportsAt = (view, at) => (view.byteLength >= at + 8 ? view.getBigUint64(at, true) : null);
31
+ function systemMove(accounts, view) {
32
+ if (view.byteLength < 4) {
33
+ return null;
34
+ }
35
+ const at = (i) => accounts[i] ?? -1;
36
+ switch (view.getUint32(0, true)) {
37
+ case SYSTEM_CREATE_ACCOUNT:
38
+ case SYSTEM_TRANSFER:
39
+ return { from: at(0), to: at(1), lamports: lamportsAt(view, LAMPORTS_AT) };
40
+ case SYSTEM_CREATE_ACCOUNT_WITH_SEED: {
41
+ const seed = lamportsAt(view, SEED_LENGTH_AT);
42
+ return seed === null || seed > BigInt(view.byteLength) ? null : { from: at(0), to: at(1), lamports: lamportsAt(view, SEED_AT + Number(seed)) };
43
+ }
44
+ case SYSTEM_WITHDRAW_NONCE:
45
+ return { from: at(4), to: at(1), lamports: lamportsAt(view, LAMPORTS_AT) };
46
+ case SYSTEM_TRANSFER_WITH_SEED:
47
+ return { from: at(1), to: at(2), lamports: lamportsAt(view, LAMPORTS_AT) };
48
+ default:
49
+ return null;
50
+ }
51
+ }
52
+ function tokenMove(accounts, data, balances) {
53
+ const kind = data[0];
54
+ if (kind !== TOKEN_CLOSE_ACCOUNT && kind !== TOKEN_WITHDRAW_EXCESS_LAMPORTS) {
55
+ return null;
56
+ }
57
+ const [source = -1, to = -1, from = -1] = accounts;
58
+ const before = balances?.before[source];
59
+ const after = balances?.after[source];
60
+ return { from, to, lamports: before === undefined || after === undefined ? null : before - after };
61
+ }
62
+ function moveOf({ program, accounts, data }, balances) {
63
+ if (program === SYSTEM_PROGRAM_ADDRESS) {
64
+ return systemMove(accounts, new DataView(data.buffer, data.byteOffset, data.byteLength));
65
+ }
66
+ return program !== undefined && TOKEN_PROGRAMS.includes(program) ? tokenMove(accounts, data, balances) : null;
67
+ }
68
+ export function solTransfersOf(keys, instructions, balances) {
69
+ const found = [];
70
+ for (const instruction of instructions) {
71
+ const moved = moveOf(instruction, balances);
72
+ const from = keys[moved?.from ?? -1];
73
+ const to = keys[moved?.to ?? -1];
74
+ if (moved !== null && moved.lamports !== null && from !== undefined && to !== undefined) {
75
+ found.push({ from, to, lamports: moved.lamports });
76
+ }
77
+ }
78
+ const payer = keys[0];
79
+ if (balances === undefined || payer === undefined) {
80
+ return found;
81
+ }
82
+ for (const [index, into] of keys.entries()) {
83
+ const rise = (balances.after[index] ?? 0n) - (balances.before[index] ?? 0n);
84
+ if (into !== undefined && into !== payer && rise > 0n && !found.some(({ to, lamports }) => to === into && lamports > 0n)) {
85
+ found.push({ from: payer, to: into, lamports: rise });
27
86
  }
28
- const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
29
- const kind = view.getUint32(0, true);
30
- const to = kind === SYSTEM_TRANSFER ? 1 : kind === SYSTEM_TRANSFER_WITH_SEED ? 2 : -1;
31
- const from = keys[accounts[0] ?? -1];
32
- const into = keys[accounts[to] ?? -1];
33
- return from === undefined || into === undefined ? [] : [{ from, to: into, lamports: view.getBigUint64(4, true) }];
34
- });
87
+ }
88
+ return found;
35
89
  }
36
90
  //# sourceMappingURL=transaction-keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-keys.js","sourceRoot":"","sources":["../../src/transaction-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction-keys.js","sourceRoot":"","sources":["../../src/transaction-keys.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type { AccountView, EngineTransaction, FinalizedBlock, IntentRead, Latest, ListedSignature, LookupTables, ProgramAccount, RpcLike, SignatureLanding, Simulation, SolTransfer, TokenHolding, Transport, } from "./rpc-shapes.js";
1
+ export type { AccountView, EngineAccountFilter, EngineTransaction, FinalizedBlock, IntentRead, Latest, ListedSignature, LookupTables, ProgramAccount, RpcLike, SignatureLanding, Simulation, SolTransfer, TokenHolding, Transport, } from "./rpc-shapes.js";
2
2
  export { holdingsOf, keysAt, MEMO_PROGRAM_ADDRESS, signersAmong, solTransfersOf } from "./transaction-keys.js";
3
3
  export { behindMinSlot, BlockhashExpired, Charged, FailedOnChain, MIN_CONTEXT_SLOT_NOT_REACHED, neverLanded, patiently, POLL_MS, RATE_LIMIT_ATTEMPTS, rateLimited, } from "./rpc-retry.js";
4
4
  export { confirm, CONFIRM_POLLS, type Confirmed, confirmSent, heardSlot, type SignatureWatch, signatureWatch, } from "./confirmation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,4BAA4B,EAC5B,WAAW,EACX,SAAS,EACT,OAAO,EACP,mBAAmB,EACnB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EAEb,WAAW,EACX,SAAS,EAET,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxJ,OAAO,EACL,cAAc,EACd,WAAW,EAEX,mBAAmB,EAEnB,KAAK,EACL,YAAY,EACZ,SAAS,GACV,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,4BAA4B,EAC5B,WAAW,EACX,SAAS,EACT,OAAO,EACP,mBAAmB,EACnB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EAEb,WAAW,EACX,SAAS,EAET,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxJ,OAAO,EACL,cAAc,EACd,WAAW,EAEX,mBAAmB,EAEnB,KAAK,EACL,YAAY,EACZ,SAAS,GACV,MAAM,2BAA2B,CAAC"}
@@ -4,6 +4,7 @@ export declare const RESTART = 0.15;
4
4
  export declare const TRUST_HOPS = 2;
5
5
  export declare const TRUST_WALLETS = 32;
6
6
  export declare const TRUST_PATHS = 3;
7
+ export declare const TRUST_PAYER_READS = 8;
7
8
  export type TrustPath = {
8
9
  wallets: Address[];
9
10
  trust: number;