@stellar-agent-services/payment-client 0.0.0-stage → 0.1.1

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -2
  3. package/dist/browser-storage.d.ts +4 -0
  4. package/dist/browser-storage.d.ts.map +1 -0
  5. package/dist/browser-storage.js +77 -0
  6. package/dist/browser-storage.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +336 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/client.d.ts +138 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +522 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/conformance.d.ts +21 -0
  16. package/dist/conformance.d.ts.map +1 -0
  17. package/dist/conformance.js +106 -0
  18. package/dist/conformance.js.map +1 -0
  19. package/dist/file-storage.d.ts +4 -0
  20. package/dist/file-storage.d.ts.map +1 -0
  21. package/dist/file-storage.js +54 -0
  22. package/dist/file-storage.js.map +1 -0
  23. package/dist/index.d.ts +10 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +20 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/journal.d.ts +49 -0
  28. package/dist/journal.d.ts.map +1 -0
  29. package/dist/journal.js +100 -0
  30. package/dist/journal.js.map +1 -0
  31. package/dist/local-key-signer.d.ts +4 -0
  32. package/dist/local-key-signer.d.ts.map +1 -0
  33. package/dist/local-key-signer.js +8 -0
  34. package/dist/local-key-signer.js.map +1 -0
  35. package/dist/manifest.d.ts +11 -0
  36. package/dist/manifest.d.ts.map +1 -0
  37. package/dist/manifest.js +50 -0
  38. package/dist/manifest.js.map +1 -0
  39. package/dist/onchain.d.ts +17 -0
  40. package/dist/onchain.d.ts.map +1 -0
  41. package/dist/onchain.js +75 -0
  42. package/dist/onchain.js.map +1 -0
  43. package/dist/policy.d.ts +63 -0
  44. package/dist/policy.d.ts.map +1 -0
  45. package/dist/policy.js +78 -0
  46. package/dist/policy.js.map +1 -0
  47. package/dist/strategies.d.ts +40 -0
  48. package/dist/strategies.d.ts.map +1 -0
  49. package/dist/strategies.js +12 -0
  50. package/dist/strategies.js.map +1 -0
  51. package/dist/verification.d.ts +29 -0
  52. package/dist/verification.d.ts.map +1 -0
  53. package/dist/verification.js +26 -0
  54. package/dist/verification.js.map +1 -0
  55. package/dist/x402-exact-stellar.d.ts +11 -0
  56. package/dist/x402-exact-stellar.d.ts.map +1 -0
  57. package/dist/x402-exact-stellar.js +17 -0
  58. package/dist/x402-exact-stellar.js.map +1 -0
  59. package/package.json +52 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type StellarNetwork } from "@stellar-agent-services/protocol";
2
+ import type { PaymentRequirements } from "@x402/core/types";
3
+ import type { ExpectedPayment, PaymentMethod, Signer } from "./strategies.js";
4
+ export interface ConformanceCheck {
5
+ name: string;
6
+ run(): Promise<void>;
7
+ }
8
+ export declare function signerConformance(signer: Signer, { network }: {
9
+ network: StellarNetwork;
10
+ }): ConformanceCheck[];
11
+ export interface PaymentMethodFixture {
12
+ /** A challenge entry the method pays. */
13
+ requirements: PaymentRequirements;
14
+ /** A settled transaction the method can see, and exactly what it paid. */
15
+ settled: {
16
+ transaction: string;
17
+ expected: ExpectedPayment;
18
+ };
19
+ }
20
+ export declare function paymentMethodConformance(method: PaymentMethod, { requirements, settled }: PaymentMethodFixture): ConformanceCheck[];
21
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAWA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG,gBAAgB,EAAE,CAuC9G;AAED,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,YAAY,EAAE,mBAAmB,CAAC;IAClC,0EAA0E;IAC1E,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAE,CAAC;CAC7D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,oBAAoB,GAAG,gBAAgB,EAAE,CAiCnI"}
@@ -0,0 +1,106 @@
1
+ // Conformance checks for signer and payment-method adapters (docs/payment-client.md, "Strategies").
2
+ //
3
+ // The core keeps every safety step whatever is plugged in. These checks cover what only an adapter can
4
+ // get right: a signer signs as its own address, and a method matches only what it can pay and confirms
5
+ // only the payment the user approved. Passing them, plus a review, is what the "verified" trust level
6
+ // requires.
7
+ //
8
+ // They need no test framework. Each check throws on failure, so an adapter's tests run them as:
9
+ //
10
+ // for (const check of signerConformance(signer, { network: "stellar:testnet" })) it(check.name, check.run);
11
+ import { USDC_ASSET } from "@stellar-agent-services/protocol";
12
+ import { Address, hash, Keypair, nativeToScVal, StrKey, xdr } from "@stellar/stellar-sdk";
13
+ import { getNetworkPassphrase } from "@x402/stellar";
14
+ export function signerConformance(signer, { network }) {
15
+ const networkPassphrase = getNetworkPassphrase(network);
16
+ const preimage = authPreimage(signer.address, network);
17
+ const sign = async () => {
18
+ const { signedAuthEntry, signerAddress, error } = await signer.signAuthEntry(preimage, { networkPassphrase, address: signer.address });
19
+ if (error !== undefined)
20
+ throw new Error(`the wallet reported an error: ${error.message}`);
21
+ return { signature: signedAuthEntry, signerAddress };
22
+ };
23
+ const checks = [
24
+ check("has a Stellar account (G...) or contract (C...) address", async () => {
25
+ assert(StrKey.isValidEd25519PublicKey(signer.address) || StrKey.isValidContract(signer.address), `"${signer.address}" is not a Stellar address`);
26
+ }),
27
+ check("signs an auth entry as its own address", async () => {
28
+ const { signature, signerAddress } = await sign();
29
+ assert(typeof signature === "string" && signature !== "", "signAuthEntry returned no signature");
30
+ assert(signerAddress === undefined || signerAddress === signer.address, `it signed as ${String(signerAddress)}, not ${signer.address}`);
31
+ }),
32
+ ];
33
+ // A contract account's own __check_auth decides what a valid signature is, so only keys are verified here.
34
+ if (StrKey.isValidEd25519PublicKey(signer.address)) {
35
+ checks.push(check("its signature verifies against its address", async () => {
36
+ const { signature } = await sign();
37
+ const valid = Keypair.fromPublicKey(signer.address).verify(hash(Buffer.from(preimage, "base64")), Buffer.from(signature, "base64"));
38
+ assert(valid, "the signature does not verify against the signer's address");
39
+ }));
40
+ }
41
+ if (signer.budget !== undefined) {
42
+ const budget = signer.budget.bind(signer);
43
+ checks.push(check("reports its budget in base units", async () => {
44
+ const reported = await budget(network, USDC_ASSET[network]);
45
+ assert(reported === undefined || /^\d+$/.test(reported), `budget() returned "${String(reported)}", not base units`);
46
+ }));
47
+ }
48
+ return checks;
49
+ }
50
+ export function paymentMethodConformance(method, { requirements, settled }) {
51
+ const refuses = (name, change) => check(`does not confirm ${name}`, async () => {
52
+ const result = await method.confirm(settled.transaction, { ...settled.expected, ...change });
53
+ assert(!result.confirmed, `it confirmed the payment with ${Object.keys(change).join(", ")} changed`);
54
+ assert(typeof result.reason === "string" && result.reason !== "", "it gave no reason for not confirming");
55
+ });
56
+ return [
57
+ check("has a stable id", async () => {
58
+ assert(/^[a-z0-9]+(-[a-z0-9]+)*$/.test(method.id), `id "${method.id}" is not lowercase words joined by hyphens`);
59
+ }),
60
+ check("matches the challenge entry it pays", async () => {
61
+ assert(method.matches(requirements), "it does not match the fixture's entry");
62
+ }),
63
+ check("does not match an unknown scheme", async () => {
64
+ assert(!method.matches({ ...requirements, scheme: "conformance-unknown" }), "it matched an unknown scheme");
65
+ }),
66
+ check("does not match an unknown network", async () => {
67
+ assert(!method.matches({ ...requirements, network: "conformance:unknown" }), "it matched an unknown network");
68
+ }),
69
+ check("does not match a malformed entry", async () => {
70
+ assert(!method.matches({}), "it matched an empty entry");
71
+ }),
72
+ check("confirms the settled payment", async () => {
73
+ const result = await method.confirm(settled.transaction, settled.expected);
74
+ assert(result.confirmed, `it did not confirm the fixture's payment: ${String(result.reason)}`);
75
+ }),
76
+ refuses("a payment to another payee", { payTo: Keypair.random().publicKey() }),
77
+ refuses("another amount", { amount: (BigInt(settled.expected.amount) + 1n).toString() }),
78
+ refuses("another asset", { asset: StrKey.encodeContract(Keypair.random().rawPublicKey()) }),
79
+ refuses("a payment from another payer", { payer: Keypair.random().publicKey() }),
80
+ ];
81
+ }
82
+ /** The preimage a signer signs for a 1-unit USDC transfer, as `@x402/stellar` would ask for it. */
83
+ function authPreimage(address, network) {
84
+ const transfer = new xdr.InvokeContractArgs({
85
+ contractAddress: Address.fromString(USDC_ASSET[network]).toScAddress(),
86
+ functionName: "transfer",
87
+ args: [nativeToScVal(address, { type: "address" }), nativeToScVal(Keypair.random().publicKey(), { type: "address" }), nativeToScVal(1n, { type: "i128" })],
88
+ });
89
+ return xdr.HashIdPreimage.envelopeTypeSorobanAuthorization(new xdr.HashIdPreimageSorobanAuthorization({
90
+ networkId: hash(Buffer.from(getNetworkPassphrase(network))),
91
+ nonce: new xdr.Int64(1),
92
+ signatureExpirationLedger: 1000,
93
+ invocation: new xdr.SorobanAuthorizedInvocation({
94
+ function: xdr.SorobanAuthorizedFunction.sorobanAuthorizedFunctionTypeContractFn(transfer),
95
+ subInvocations: [],
96
+ }),
97
+ })).toXDR("base64");
98
+ }
99
+ function check(name, run) {
100
+ return { name, run };
101
+ }
102
+ function assert(condition, message) {
103
+ if (!condition)
104
+ throw new Error(message);
105
+ }
106
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,EAAE;AACF,uGAAuG;AACvG,uGAAuG;AACvG,sGAAsG;AACtG,YAAY;AACZ,EAAE;AACF,gGAAgG;AAChG,EAAE;AACF,8GAA8G;AAE9G,OAAO,EAAE,UAAU,EAAuB,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAQrD,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,EAAE,OAAO,EAA+B;IACxF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvI,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,KAAK,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;QACnJ,CAAC,CAAC;QACF,KAAK,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAClD,MAAM,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,EAAE,EAAE,qCAAqC,CAAC,CAAC;YACjG,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,MAAM,CAAC,OAAO,EAAE,gBAAgB,MAAM,CAAC,aAAa,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1I,CAAC,CAAC;KACH,CAAC;IACF,2GAA2G;IAC3G,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpI,MAAM,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;QAC9E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,sBAAsB,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACtH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,MAAM,UAAU,wBAAwB,CAAC,MAAqB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAwB;IAC7G,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,MAAgC,EAAE,EAAE,CACjE,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,iCAAiC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrG,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,sCAAsC,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,KAAK,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,MAAM,CAAC,EAAE,4CAA4C,CAAC,CAAC;QACnH,CAAC,CAAC;QACF,KAAK,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,uCAAuC,CAAC,CAAC;QAChF,CAAC,CAAC;QACF,KAAK,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC9G,CAAC,CAAC;QACF,KAAK,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAChH,CAAC,CAAC;QACF,KAAK,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAyB,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAClF,CAAC,CAAC;QACF,KAAK,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,6CAA6C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC;QACF,OAAO,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;QAC9E,OAAO,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACxF,OAAO,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QAC3F,OAAO,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,SAAS,YAAY,CAAC,OAAe,EAAE,OAAuB;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAC1C,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE;QACtE,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;KAC3J,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,cAAc,CAAC,gCAAgC,CACxD,IAAI,GAAG,CAAC,kCAAkC,CAAC;QACzC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACvB,yBAAyB,EAAE,IAAI;QAC/B,UAAU,EAAE,IAAI,GAAG,CAAC,2BAA2B,CAAC;YAC9C,QAAQ,EAAE,GAAG,CAAC,yBAAyB,CAAC,uCAAuC,CAAC,QAAQ,CAAC;YACzF,cAAc,EAAE,EAAE;SACnB,CAAC;KACH,CAAC,CACH,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,GAAwB;IACnD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,MAAM,CAAC,SAAkB,EAAE,OAAe;IACjD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { JournalStorage, SecretStore } from "./journal.js";
2
+ export declare function fileJournalStorage(path: string): JournalStorage;
3
+ export declare function fileSecretStore(path: string): SecretStore;
4
+ //# sourceMappingURL=file-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAqB/D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAmBzD"}
@@ -0,0 +1,54 @@
1
+ // Node storage for the journal and job tokens: files only the owner can read, flushed to disk before a
2
+ // write resolves. The "./node" entry point; browsers use browser-storage.ts instead.
3
+ //
4
+ // One process writes a journal at a time, as with any append-only file.
5
+ import { mkdir, open, readFile, writeFile } from "node:fs/promises";
6
+ import { dirname } from "node:path";
7
+ export function fileJournalStorage(path) {
8
+ return {
9
+ async readLines() {
10
+ try {
11
+ return (await readFile(path, "utf8")).split("\n");
12
+ }
13
+ catch (error) {
14
+ if (error.code === "ENOENT")
15
+ return [];
16
+ throw error;
17
+ }
18
+ },
19
+ async appendLine(line) {
20
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
21
+ const handle = await open(path, "a", 0o600);
22
+ try {
23
+ await handle.appendFile(`${line}\n`);
24
+ await handle.sync();
25
+ }
26
+ finally {
27
+ await handle.close();
28
+ }
29
+ },
30
+ };
31
+ }
32
+ export function fileSecretStore(path) {
33
+ const load = async () => {
34
+ try {
35
+ return JSON.parse(await readFile(path, "utf8"));
36
+ }
37
+ catch (error) {
38
+ if (error.code === "ENOENT")
39
+ return {};
40
+ throw error;
41
+ }
42
+ };
43
+ return {
44
+ async get(jobId) {
45
+ return (await load())[jobId];
46
+ },
47
+ async set(jobId, token) {
48
+ const tokens = { ...(await load()), [jobId]: token };
49
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
50
+ await writeFile(path, JSON.stringify(tokens, null, 2), { mode: 0o600, flush: true });
51
+ },
52
+ };
53
+ }
54
+ //# sourceMappingURL=file-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,qFAAqF;AACrF,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO;QACL,KAAK,CAAC,SAAS;YACb,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO,EAAE,CAAC;gBAClE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAI;YACnB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBACrC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,IAAI,GAAG,KAAK,IAAqC,EAAE;QACvD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAA2B,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK;YACpB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YACrD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./client.js";
2
+ export * from "./policy.js";
3
+ export type { ProviderVerification, VerificationSource, VerificationSubject } from "./verification.js";
4
+ export * from "./journal.js";
5
+ export * from "./manifest.js";
6
+ export * from "./onchain.js";
7
+ export * from "./strategies.js";
8
+ export * from "./local-key-signer.js";
9
+ export * from "./x402-exact-stellar.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACvG,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ // @stellar-agent-services/payment-client
2
+ //
3
+ // The buyer side, as designed in docs/payment-client.md: one core (this package), two strategies
4
+ // (signers and payment methods, see strategies.ts), and surfaces on top (the CLI here, the web app in
5
+ // apps/wallet, an MCP server later). Conformance checks for adapters are in the "./conformance" entry point.
6
+ //
7
+ // This entry point runs in Node and the browser. Journal storage is per environment: files in "./node",
8
+ // IndexedDB in "./browser".
9
+ //
10
+ // PoC status: the core flow works end to end with a local-key signer. Keys never touch discovery or
11
+ // provider code; the client signs once, after approval or inside a budget the user granted.
12
+ export * from "./client.js";
13
+ export * from "./policy.js";
14
+ export * from "./journal.js";
15
+ export * from "./manifest.js";
16
+ export * from "./onchain.js";
17
+ export * from "./strategies.js";
18
+ export * from "./local-key-signer.js";
19
+ export * from "./x402-exact-stellar.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,iGAAiG;AACjG,sGAAsG;AACtG,6GAA6G;AAC7G,EAAE;AACF,wGAAwG;AACxG,4BAA4B;AAC5B,EAAE;AACF,oGAAoG;AACpG,4FAA4F;AAE5F,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { type JsonObject } from "@stellar-agent-services/protocol";
2
+ export type JournalEvent = "intent" | "refused" | "approved" | "sending" | "uncertain" | "settled" | "failed" | "recovered" | "result";
3
+ export interface JournalEntry {
4
+ /** Format version, so a later format can migrate old journals. */
5
+ version: 1;
6
+ seq: number;
7
+ at: string;
8
+ event: JournalEvent;
9
+ jobId: string;
10
+ policyHash: string;
11
+ details: JsonObject;
12
+ /** The previous entry's hash; 64 zeros for the first entry. */
13
+ previousHash: string;
14
+ /** sha256(JCS(entry without `hash`)). */
15
+ hash: string;
16
+ }
17
+ export interface JournalStorage {
18
+ readLines(): Promise<string[]>;
19
+ /** Must be durable when it resolves. */
20
+ appendLine(line: string): Promise<void>;
21
+ }
22
+ export declare class Journal {
23
+ private readonly storage;
24
+ private readonly log;
25
+ private constructor();
26
+ /** Loads the journal and refuses to continue from a broken chain (fail closed). */
27
+ static open(storage: JournalStorage): Promise<Journal>;
28
+ entries(): readonly JournalEntry[];
29
+ forJob(jobId: string): JournalEntry[];
30
+ append(event: JournalEvent, jobId: string, policyHash: string, details?: JsonObject): Promise<JournalEntry>;
31
+ /** What was sent for payment since `since`, in base units (totalSpentSince). */
32
+ spentSince(since: Date): bigint;
33
+ }
34
+ /**
35
+ * What was sent for payment since `since`, in base units. Fail closed: every `sending` counts, unless
36
+ * the job later failed without a charge. A UI shows the same total the policy checks.
37
+ */
38
+ export declare function totalSpentSince(entries: readonly JournalEntry[], since: Date): bigint;
39
+ /** The seq of the first entry whose hash or link is wrong, or undefined if the chain is intact. */
40
+ export declare function verifyChain(entries: readonly JournalEntry[]): Promise<number | undefined>;
41
+ export declare function memoryJournalStorage(lines?: string[]): JournalStorage;
42
+ /** Where job tokens are kept: next to the journal, never in it. */
43
+ export interface SecretStore {
44
+ get(jobId: string): Promise<string | undefined>;
45
+ /** Must be durable when it resolves. */
46
+ set(jobId: string, token: string): Promise<void>;
47
+ }
48
+ export declare function memorySecretStore(): SecretStore;
49
+ //# sourceMappingURL=journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AAaA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEpF,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,OAAO,EAAE,CAAC,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,wCAAwC;IACxC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAID,qBAAa,OAAO;IAEhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFtB,OAAO;IAKP,mFAAmF;WACtE,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAO5D,OAAO,IAAI,SAAS,YAAY,EAAE;IAIlC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAI/B,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBrH,gFAAgF;IAChF,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;CAGhC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAKrF;AAED,mGAAmG;AACnG,wBAAsB,WAAW,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ/F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,cAAc,CASzE;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,wCAAwC;IACxC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAU/C"}
@@ -0,0 +1,100 @@
1
+ // The payment journal: an append-only, hash-chained log in the shape of ERC-8196's audit trail
2
+ // (docs/payment-client.md). Each entry names the policy it ran under.
3
+ //
4
+ // `sending` is written, and flushed, BEFORE the paid request goes out. Recovery starts from it and
5
+ // never signs that job again.
6
+ //
7
+ // Job tokens are secrets, so they live in a SecretStore next to the journal, never in it.
8
+ //
9
+ // This module runs in Node and the browser. Storage plugs in: memory here, files in Node
10
+ // (file-storage.ts, the "./node" entry point), IndexedDB in the browser (browser-storage.ts, "./browser").
11
+ //
12
+ // TODO: anchoring a Merkle root on chain.
13
+ import { canonicalSha256 } from "@stellar-agent-services/protocol";
14
+ const GENESIS = "0".repeat(64);
15
+ export class Journal {
16
+ storage;
17
+ log;
18
+ constructor(storage, log) {
19
+ this.storage = storage;
20
+ this.log = log;
21
+ }
22
+ /** Loads the journal and refuses to continue from a broken chain (fail closed). */
23
+ static async open(storage) {
24
+ const entries = (await storage.readLines()).filter((line) => line.trim() !== "").map((line) => JSON.parse(line));
25
+ const broken = await verifyChain(entries);
26
+ if (broken !== undefined)
27
+ throw new Error(`the journal is broken at entry ${broken}; refusing to continue`);
28
+ return new Journal(storage, entries);
29
+ }
30
+ entries() {
31
+ return this.log;
32
+ }
33
+ forJob(jobId) {
34
+ return this.log.filter((entry) => entry.jobId === jobId);
35
+ }
36
+ async append(event, jobId, policyHash, details = {}) {
37
+ const previous = this.log.at(-1);
38
+ const body = {
39
+ version: 1,
40
+ seq: (previous?.seq ?? 0) + 1,
41
+ at: new Date().toISOString(),
42
+ event,
43
+ jobId,
44
+ policyHash,
45
+ details,
46
+ previousHash: previous?.hash ?? GENESIS,
47
+ };
48
+ const entry = { ...body, hash: await canonicalSha256(body) };
49
+ await this.storage.appendLine(JSON.stringify(entry));
50
+ this.log.push(entry);
51
+ return entry;
52
+ }
53
+ /** What was sent for payment since `since`, in base units (totalSpentSince). */
54
+ spentSince(since) {
55
+ return totalSpentSince(this.log, since);
56
+ }
57
+ }
58
+ /**
59
+ * What was sent for payment since `since`, in base units. Fail closed: every `sending` counts, unless
60
+ * the job later failed without a charge. A UI shows the same total the policy checks.
61
+ */
62
+ export function totalSpentSince(entries, since) {
63
+ const notCharged = new Set(entries.filter((entry) => entry.event === "failed" && entry.details["charged"] === false).map((entry) => entry.jobId));
64
+ return entries
65
+ .filter((entry) => entry.event === "sending" && Date.parse(entry.at) >= since.getTime() && !notCharged.has(entry.jobId))
66
+ .reduce((sum, entry) => sum + BigInt(String(entry.details["amount"] ?? "0")), 0n);
67
+ }
68
+ /** The seq of the first entry whose hash or link is wrong, or undefined if the chain is intact. */
69
+ export async function verifyChain(entries) {
70
+ let previousHash = GENESIS;
71
+ for (const entry of entries) {
72
+ const { hash, ...body } = entry;
73
+ if (entry.previousHash !== previousHash || (await canonicalSha256(body)) !== hash)
74
+ return entry.seq;
75
+ previousHash = hash;
76
+ }
77
+ return undefined;
78
+ }
79
+ export function memoryJournalStorage(lines = []) {
80
+ return {
81
+ async readLines() {
82
+ return [...lines];
83
+ },
84
+ async appendLine(line) {
85
+ lines.push(line);
86
+ },
87
+ };
88
+ }
89
+ export function memorySecretStore() {
90
+ const tokens = new Map();
91
+ return {
92
+ async get(jobId) {
93
+ return tokens.get(jobId);
94
+ },
95
+ async set(jobId, token) {
96
+ tokens.set(jobId, token);
97
+ },
98
+ };
99
+ }
100
+ //# sourceMappingURL=journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { StellarNetwork } from "@stellar-agent-services/protocol";
2
+ import type { Signer } from "./strategies.js";
3
+ export declare function localKeySigner(secret: string, network: StellarNetwork): Signer;
4
+ //# sourceMappingURL=local-key-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-key-signer.d.ts","sourceRoot":"","sources":["../src/local-key-signer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAE9E"}
@@ -0,0 +1,8 @@
1
+ // The built-in signer: a Stellar secret key held in this process. For developers, CI and an agent's
2
+ // allowance wallet. A plain key enforces no limits of its own, so it has no budget(); the spending
3
+ // policy applies on its own.
4
+ import { createEd25519Signer } from "@x402/stellar";
5
+ export function localKeySigner(secret, network) {
6
+ return createEd25519Signer(secret, network);
7
+ }
8
+ //# sourceMappingURL=local-key-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-key-signer.js","sourceRoot":"","sources":["../src/local-key-signer.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,mGAAmG;AACnG,6BAA6B;AAG7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,OAAuB;IACpE,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type ProviderManifest } from "@stellar-agent-services/protocol";
2
+ export declare class ManifestError extends Error {
3
+ name: string;
4
+ }
5
+ export interface LoadManifestOptions {
6
+ fetch?: typeof fetch;
7
+ /** Accept an http://localhost manifest, for local development [M6]. */
8
+ allowLocalhost?: boolean;
9
+ }
10
+ export declare function loadManifest(manifestUrl: string, options?: LoadManifestOptions): Promise<ProviderManifest>;
11
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAM1C,qBAAa,aAAc,SAAQ,KAAK;IAC7B,IAAI,SAAmB;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+BpH"}
@@ -0,0 +1,50 @@
1
+ // Fetching and validating a provider manifest (provider-standard.md §2.4): no redirects, at most
2
+ // MANIFEST_MAX_BYTES, the JSON Schema, then checkManifestRules().
3
+ import { checkManifestRules, MANIFEST_MAX_BYTES, } from "@stellar-agent-services/protocol";
4
+ import schema from "@stellar-agent-services/protocol/manifest.schema.json" with { type: "json" };
5
+ import { Ajv2020 } from "ajv/dist/2020.js";
6
+ const validateManifest = new Ajv2020({ strict: false, allErrors: true, validateFormats: false }).compile(schema);
7
+ export class ManifestError extends Error {
8
+ name = "ManifestError";
9
+ }
10
+ export async function loadManifest(manifestUrl, options = {}) {
11
+ const response = await (options.fetch ?? fetch)(manifestUrl, { redirect: "manual", headers: { Accept: "application/json" } });
12
+ if (response.status !== 200)
13
+ throw new ManifestError(`the manifest answered ${response.status}; redirects are not followed [M3]`);
14
+ const text = await response.text();
15
+ if (new TextEncoder().encode(text).length > MANIFEST_MAX_BYTES)
16
+ throw new ManifestError("the manifest is larger than 256 KiB [M3]");
17
+ let manifest;
18
+ try {
19
+ manifest = JSON.parse(text);
20
+ }
21
+ catch {
22
+ throw new ManifestError("the manifest is not valid JSON");
23
+ }
24
+ const local = isLocalhost(manifestUrl) && options.allowLocalhost === true;
25
+ // The schema requires https://; a local provider is checked as if it were served over HTTPS.
26
+ const checked = local && isObject(manifest) && typeof manifest["baseUrl"] === "string"
27
+ ? { ...manifest, baseUrl: manifest["baseUrl"].replace(/^http:/, "https:") }
28
+ : manifest;
29
+ if (!validateManifest(checked)) {
30
+ const first = validateManifest.errors?.[0];
31
+ throw new ManifestError(`the manifest does not match the v1 schema: ${first?.instancePath || "/"} ${first?.message ?? ""}`.trim());
32
+ }
33
+ const ajv = new Ajv2020({ strict: false, validateFormats: false });
34
+ const violations = checkManifestRules(manifest, {
35
+ manifestUrl,
36
+ validateExample: (exampleSchema, value) => ajv.validate(exampleSchema, value),
37
+ }).filter((violation) => !(local && violation.rule === "M1"));
38
+ if (violations.length > 0) {
39
+ throw new ManifestError(violations.map((violation) => `[${violation.rule}] ${violation.message}`).join("; "));
40
+ }
41
+ return manifest;
42
+ }
43
+ function isLocalhost(url) {
44
+ const { protocol, hostname } = new URL(url);
45
+ return protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(hostname);
46
+ }
47
+ function isObject(value) {
48
+ return typeof value === "object" && value !== null && !Array.isArray(value);
49
+ }
50
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type StellarNetwork } from "@stellar-agent-services/protocol";
2
+ import { rpc, type xdr } from "@stellar/stellar-sdk";
3
+ import type { Confirmation, ExpectedPayment } from "./strategies.js";
4
+ export type ConfirmPayment = (transaction: string, expected: ExpectedPayment) => Promise<Confirmation>;
5
+ /** The one RPC call confirmation needs: an rpc.Server, or a fake chain in tests. */
6
+ export type TransactionReader = Pick<rpc.Server, "getTransaction">;
7
+ export declare function rpcConfirmPayment(options?: {
8
+ rpcUrl?: string;
9
+ server?: TransactionReader;
10
+ }): ConfirmPayment;
11
+ /**
12
+ * Matches a transaction's contract events to the approved payment. The payer must send exactly one
13
+ * transfer of the approved asset, and it must go to payTo for the approved amount.
14
+ */
15
+ export declare function checkTransfer(events: readonly xdr.ContractEvent[], expected: ExpectedPayment): Confirmation;
16
+ export declare function explorerUrl(network: StellarNetwork, transaction: string): string;
17
+ //# sourceMappingURL=onchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onchain.d.ts","sourceRoot":"","sources":["../src/onchain.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,GAAG,EAAyB,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvG,oFAAoF;AACpF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEnE,wBAAgB,iBAAiB,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAO,GAAG,cAAc,CAsB/G;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,eAAe,GAAG,YAAY,CAiB3G;AAYD,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhF"}