@shielded-x402/client 0.2.0 → 0.2.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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/dist/packages/shared-types/src/crypto-spec.d.ts +16 -0
  3. package/dist/packages/shared-types/src/crypto-spec.d.ts.map +1 -0
  4. package/dist/packages/shared-types/src/crypto-spec.js +15 -0
  5. package/dist/packages/shared-types/src/crypto-spec.js.map +1 -0
  6. package/dist/packages/shared-types/src/index.d.ts +4 -0
  7. package/dist/packages/shared-types/src/index.d.ts.map +1 -0
  8. package/dist/packages/shared-types/src/index.js +4 -0
  9. package/dist/packages/shared-types/src/index.js.map +1 -0
  10. package/dist/packages/shared-types/src/types.d.ts +115 -0
  11. package/dist/packages/shared-types/src/types.d.ts.map +1 -0
  12. package/dist/packages/shared-types/src/types.js +2 -0
  13. package/dist/packages/shared-types/src/types.js.map +1 -0
  14. package/dist/packages/shared-types/src/x402.d.ts +20 -0
  15. package/dist/packages/shared-types/src/x402.d.ts.map +1 -0
  16. package/dist/packages/shared-types/src/x402.js +96 -0
  17. package/dist/packages/shared-types/src/x402.js.map +1 -0
  18. package/dist/relayerFetch.d.ts +2 -1
  19. package/dist/relayerFetch.d.ts.map +1 -1
  20. package/dist/relayerFetch.js +118 -28
  21. package/dist/relayerFetch.js.map +1 -1
  22. package/dist/sdk/client/src/client.d.ts +26 -0
  23. package/dist/sdk/client/src/client.d.ts.map +1 -0
  24. package/dist/sdk/client/src/client.js +174 -0
  25. package/dist/sdk/client/src/client.js.map +1 -0
  26. package/dist/sdk/client/src/crypto.d.ts +5 -0
  27. package/dist/sdk/client/src/crypto.d.ts.map +1 -0
  28. package/dist/sdk/client/src/crypto.js +15 -0
  29. package/dist/sdk/client/src/crypto.js.map +1 -0
  30. package/dist/sdk/client/src/index.d.ts +10 -0
  31. package/dist/sdk/client/src/index.d.ts.map +1 -0
  32. package/dist/sdk/client/src/index.js +10 -0
  33. package/dist/sdk/client/src/index.js.map +1 -0
  34. package/dist/sdk/client/src/indexer.d.ts +22 -0
  35. package/dist/sdk/client/src/indexer.d.ts.map +1 -0
  36. package/dist/sdk/client/src/indexer.js +20 -0
  37. package/dist/sdk/client/src/indexer.js.map +1 -0
  38. package/dist/sdk/client/src/merkle.d.ts +11 -0
  39. package/dist/sdk/client/src/merkle.d.ts.map +1 -0
  40. package/dist/sdk/client/src/merkle.js +63 -0
  41. package/dist/sdk/client/src/merkle.js.map +1 -0
  42. package/dist/sdk/client/src/notes.d.ts +19 -0
  43. package/dist/sdk/client/src/notes.d.ts.map +1 -0
  44. package/dist/sdk/client/src/notes.js +105 -0
  45. package/dist/sdk/client/src/notes.js.map +1 -0
  46. package/dist/sdk/client/src/proofProvider.d.ts +33 -0
  47. package/dist/sdk/client/src/proofProvider.d.ts.map +1 -0
  48. package/dist/sdk/client/src/proofProvider.js +207 -0
  49. package/dist/sdk/client/src/proofProvider.js.map +1 -0
  50. package/dist/sdk/client/src/relayerFetch.d.ts +36 -0
  51. package/dist/sdk/client/src/relayerFetch.d.ts.map +1 -0
  52. package/dist/sdk/client/src/relayerFetch.js +195 -0
  53. package/dist/sdk/client/src/relayerFetch.js.map +1 -0
  54. package/dist/sdk/client/src/shieldedFetch.d.ts +39 -0
  55. package/dist/sdk/client/src/shieldedFetch.d.ts.map +1 -0
  56. package/dist/sdk/client/src/shieldedFetch.js +88 -0
  57. package/dist/sdk/client/src/shieldedFetch.js.map +1 -0
  58. package/dist/sdk/client/src/types.d.ts +57 -0
  59. package/dist/sdk/client/src/types.d.ts.map +1 -0
  60. package/dist/sdk/client/src/types.js +2 -0
  61. package/dist/sdk/client/src/types.js.map +1 -0
  62. package/dist/shieldedFetch.d.ts +6 -0
  63. package/dist/shieldedFetch.d.ts.map +1 -1
  64. package/dist/shieldedFetch.js +21 -0
  65. package/dist/shieldedFetch.js.map +1 -1
  66. package/package.json +10 -11
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 shielded-x402
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,16 @@
1
+ export declare const CRYPTO_SPEC: {
2
+ readonly version: "v0.1.0";
3
+ readonly hashFunction: "keccak256";
4
+ readonly merkleTreeDepth: 24;
5
+ readonly noteEncoding: "abi-packed-v1";
6
+ readonly nullifierDerivation: "keccak256(nullifierSecret, noteCommitment)";
7
+ readonly merchantCommitmentDerivation: "keccak256(payAmount, merchantRho, merchantPkHash)";
8
+ readonly changeCommitmentDerivation: "keccak256(changeAmount, changeRho, changePkHash)";
9
+ readonly challengeDomainSeparator: "shielded-x402:v1:challenge";
10
+ readonly challengeDomainHash: "0xe32e24a51c351093d339c0035177dc2da5c1b8b9563e414393edd75506dcc055";
11
+ readonly commitmentDomainSeparator: "shielded-x402:v1:commitment";
12
+ readonly outputDomainSeparator: "shielded-x402:v1:output";
13
+ readonly nullifierDomainSeparator: "shielded-x402:v1:nullifier";
14
+ };
15
+ export type CryptoSpec = typeof CRYPTO_SPEC;
16
+ //# sourceMappingURL=crypto-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-spec.d.ts","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/crypto-spec.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAad,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const CRYPTO_SPEC = {
2
+ version: 'v0.1.0',
3
+ hashFunction: 'keccak256',
4
+ merkleTreeDepth: 24,
5
+ noteEncoding: 'abi-packed-v1',
6
+ nullifierDerivation: 'keccak256(nullifierSecret, noteCommitment)',
7
+ merchantCommitmentDerivation: 'keccak256(payAmount, merchantRho, merchantPkHash)',
8
+ changeCommitmentDerivation: 'keccak256(changeAmount, changeRho, changePkHash)',
9
+ challengeDomainSeparator: 'shielded-x402:v1:challenge',
10
+ challengeDomainHash: '0xe32e24a51c351093d339c0035177dc2da5c1b8b9563e414393edd75506dcc055',
11
+ commitmentDomainSeparator: 'shielded-x402:v1:commitment',
12
+ outputDomainSeparator: 'shielded-x402:v1:output',
13
+ nullifierDomainSeparator: 'shielded-x402:v1:nullifier'
14
+ };
15
+ //# sourceMappingURL=crypto-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-spec.js","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/crypto-spec.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,WAAW;IACzB,eAAe,EAAE,EAAE;IACnB,YAAY,EAAE,eAAe;IAC7B,mBAAmB,EAAE,4CAA4C;IACjE,4BAA4B,EAAE,mDAAmD;IACjF,0BAA0B,EAAE,kDAAkD;IAC9E,wBAAwB,EAAE,4BAA4B;IACtD,mBAAmB,EAAE,oEAAoE;IACzF,yBAAyB,EAAE,6BAA6B;IACxD,qBAAqB,EAAE,yBAAyB;IAChD,wBAAwB,EAAE,4BAA4B;CAC9C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './crypto-spec.js';
2
+ export * from './types.js';
3
+ export * from './x402.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './crypto-spec.js';
2
+ export * from './types.js';
3
+ export * from './x402.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,115 @@
1
+ export type Hex = `0x${string}`;
2
+ export interface ShieldedNote {
3
+ amount: bigint;
4
+ rho: Hex;
5
+ pkHash: Hex;
6
+ commitment: Hex;
7
+ leafIndex: number;
8
+ }
9
+ export interface SpendPublicInputs {
10
+ nullifier: Hex;
11
+ root: Hex;
12
+ merchantCommitment: Hex;
13
+ changeCommitment: Hex;
14
+ challengeHash: Hex;
15
+ amount: bigint;
16
+ }
17
+ export interface ShieldedPaymentResponse {
18
+ proof: Hex;
19
+ publicInputs: Hex[];
20
+ nullifier: Hex;
21
+ root: Hex;
22
+ merchantCommitment: Hex;
23
+ changeCommitment: Hex;
24
+ challengeHash: Hex;
25
+ encryptedReceipt: Hex;
26
+ txHint?: string;
27
+ }
28
+ export interface PaymentRequirement {
29
+ x402Version?: 2;
30
+ scheme: 'exact' | string;
31
+ network: string;
32
+ asset: Hex | string;
33
+ payTo: Hex;
34
+ rail: 'shielded-usdc' | string;
35
+ amount: string;
36
+ challengeNonce: string;
37
+ challengeExpiry: string;
38
+ merchantPubKey: Hex;
39
+ verifyingContract: Hex;
40
+ maxTimeoutSeconds?: number;
41
+ description?: string;
42
+ mimeType?: string;
43
+ outputSchema?: string;
44
+ extra?: Record<string, string> & {
45
+ rail: 'shielded-usdc' | string;
46
+ challengeNonce: string;
47
+ challengeExpiry: string;
48
+ merchantPubKey: Hex;
49
+ verifyingContract: Hex;
50
+ };
51
+ }
52
+ export interface X402PaymentRequired {
53
+ x402Version: 2;
54
+ accepts: Array<Record<string, unknown>>;
55
+ error?: string;
56
+ }
57
+ export interface X402PaymentSignaturePayload {
58
+ x402Version: 2;
59
+ accepted: PaymentRequirement;
60
+ payload: ShieldedPaymentResponse;
61
+ challengeNonce: Hex;
62
+ signature: Hex;
63
+ }
64
+ export interface AgentRecord {
65
+ did: string;
66
+ endpoint: string;
67
+ encryptionPubKey: Hex;
68
+ capabilities: string[];
69
+ supportedRails: string[];
70
+ signature: Hex;
71
+ }
72
+ export interface ReputationSignal {
73
+ successfulSettlements: number;
74
+ disputes: number;
75
+ uptime: number;
76
+ attestationRefs: string[];
77
+ }
78
+ export interface RelayerMerchantRequest {
79
+ url: string;
80
+ method: string;
81
+ headers?: Record<string, string>;
82
+ bodyBase64?: string;
83
+ challengeUrl?: string;
84
+ }
85
+ export interface RelayerPayRequest {
86
+ merchantRequest: RelayerMerchantRequest;
87
+ requirement: PaymentRequirement;
88
+ paymentSignatureHeader: string;
89
+ idempotencyKey?: string;
90
+ }
91
+ export interface RelayerChallengeRequest {
92
+ merchantRequest: RelayerMerchantRequest;
93
+ merchantPaymentRequiredHeader?: string;
94
+ }
95
+ export interface RelayerChallengeResponse {
96
+ requirement: PaymentRequirement;
97
+ paymentRequiredHeader: string;
98
+ upstreamRequirementHash: Hex;
99
+ }
100
+ export type RelayerSettlementStatus = 'RECEIVED' | 'VERIFIED' | 'SENT_ONCHAIN' | 'CONFIRMED' | 'PAID_MERCHANT' | 'DONE' | 'FAILED';
101
+ export interface RelayerMerchantResult {
102
+ status: number;
103
+ headers: Record<string, string>;
104
+ bodyBase64: string;
105
+ payoutReference?: string;
106
+ }
107
+ export interface RelayerPayResponse {
108
+ settlementId: string;
109
+ status: RelayerSettlementStatus;
110
+ nullifier: Hex;
111
+ settlementTxHash?: Hex;
112
+ merchantResult?: RelayerMerchantResult;
113
+ failureReason?: string;
114
+ }
115
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { PaymentRequirement, X402PaymentRequired, X402PaymentSignaturePayload } from './types.js';
2
+ export declare const X402_HEADERS: {
3
+ readonly paymentRequired: "PAYMENT-REQUIRED";
4
+ readonly paymentSignature: "PAYMENT-SIGNATURE";
5
+ readonly paymentResponse: "PAYMENT-RESPONSE";
6
+ };
7
+ export declare const RELAYER_ROUTES: {
8
+ readonly challenge: "/v1/relay/challenge";
9
+ readonly pay: "/v1/relay/pay";
10
+ readonly statusPrefix: "/v1/relay/status";
11
+ };
12
+ export declare function encodeX402Header<T>(value: T): string;
13
+ export declare function decodeX402Header<T>(rawHeader: string): T;
14
+ export declare function buildPaymentRequiredHeader(requirement: PaymentRequirement): string;
15
+ export declare function parsePaymentRequiredHeader(rawHeader: string): PaymentRequirement;
16
+ export declare function parsePaymentRequiredEnvelope(rawHeader: string): X402PaymentRequired;
17
+ export declare function buildPaymentSignatureHeader(payload: X402PaymentSignaturePayload): string;
18
+ export declare function parsePaymentSignatureHeader(rawHeader: string): X402PaymentSignaturePayload;
19
+ export declare function normalizeRequirement(requirement: PaymentRequirement): PaymentRequirement;
20
+ //# sourceMappingURL=x402.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/x402.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAUX,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAGxD;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,CAkBlF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAOhF;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAMnF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CAExF;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B,CAM1F;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,kBAAkB,CA6BxF"}
@@ -0,0 +1,96 @@
1
+ export const X402_HEADERS = {
2
+ paymentRequired: 'PAYMENT-REQUIRED',
3
+ paymentSignature: 'PAYMENT-SIGNATURE',
4
+ paymentResponse: 'PAYMENT-RESPONSE'
5
+ };
6
+ export const RELAYER_ROUTES = {
7
+ challenge: '/v1/relay/challenge',
8
+ pay: '/v1/relay/pay',
9
+ statusPrefix: '/v1/relay/status'
10
+ };
11
+ function toBase64(value) {
12
+ return Buffer.from(value, 'utf8').toString('base64');
13
+ }
14
+ function fromBase64(value) {
15
+ return Buffer.from(value, 'base64').toString('utf8');
16
+ }
17
+ export function encodeX402Header(value) {
18
+ return toBase64(JSON.stringify(value));
19
+ }
20
+ export function decodeX402Header(rawHeader) {
21
+ const decoded = fromBase64(rawHeader.trim());
22
+ return JSON.parse(decoded);
23
+ }
24
+ export function buildPaymentRequiredHeader(requirement) {
25
+ const envelope = {
26
+ x402Version: 2,
27
+ accepts: [
28
+ {
29
+ ...requirement,
30
+ x402Version: 2,
31
+ extra: requirement.extra ?? {
32
+ rail: requirement.rail,
33
+ challengeNonce: requirement.challengeNonce,
34
+ challengeExpiry: requirement.challengeExpiry,
35
+ merchantPubKey: requirement.merchantPubKey,
36
+ verifyingContract: requirement.verifyingContract
37
+ }
38
+ }
39
+ ]
40
+ };
41
+ return encodeX402Header(envelope);
42
+ }
43
+ export function parsePaymentRequiredHeader(rawHeader) {
44
+ const envelope = parsePaymentRequiredEnvelope(rawHeader);
45
+ const accepted = envelope.accepts[0];
46
+ if (!accepted || typeof accepted !== 'object') {
47
+ throw new Error('x402 PAYMENT-REQUIRED has no accepted payment requirements');
48
+ }
49
+ return normalizeRequirement(accepted);
50
+ }
51
+ export function parsePaymentRequiredEnvelope(rawHeader) {
52
+ const envelope = decodeX402Header(rawHeader);
53
+ if (envelope.x402Version !== 2) {
54
+ throw new Error('unsupported x402 version in PAYMENT-REQUIRED');
55
+ }
56
+ return envelope;
57
+ }
58
+ export function buildPaymentSignatureHeader(payload) {
59
+ return encodeX402Header(payload);
60
+ }
61
+ export function parsePaymentSignatureHeader(rawHeader) {
62
+ const envelope = decodeX402Header(rawHeader);
63
+ if (envelope.x402Version !== 2) {
64
+ throw new Error('unsupported x402 version in PAYMENT-SIGNATURE');
65
+ }
66
+ return envelope;
67
+ }
68
+ export function normalizeRequirement(requirement) {
69
+ const extra = requirement.extra ?? undefined;
70
+ const rail = requirement.rail ?? extra?.rail;
71
+ const challengeNonce = requirement.challengeNonce ?? extra?.challengeNonce;
72
+ const challengeExpiry = requirement.challengeExpiry ?? extra?.challengeExpiry;
73
+ const merchantPubKey = requirement.merchantPubKey ?? extra?.merchantPubKey;
74
+ const verifyingContract = requirement.verifyingContract ?? extra?.verifyingContract;
75
+ if (!rail || !challengeNonce || !challengeExpiry || !merchantPubKey || !verifyingContract) {
76
+ throw new Error('payment requirement missing shielded rail metadata');
77
+ }
78
+ return {
79
+ ...requirement,
80
+ x402Version: 2,
81
+ rail,
82
+ challengeNonce,
83
+ challengeExpiry,
84
+ merchantPubKey,
85
+ verifyingContract,
86
+ extra: {
87
+ ...(extra ?? {}),
88
+ rail,
89
+ challengeNonce,
90
+ challengeExpiry,
91
+ merchantPubKey,
92
+ verifyingContract
93
+ }
94
+ };
95
+ }
96
+ //# sourceMappingURL=x402.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../../../../packages/shared-types/src/x402.ts"],"names":[],"mappings":"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"}
@@ -22,10 +22,11 @@ export interface CreateRelayedShieldedFetchConfig {
22
22
  sdk: ShieldedClientSDK;
23
23
  relayerEndpoint: string;
24
24
  relayerPath?: string;
25
+ relayerChallengePath?: string;
25
26
  resolveContext: (args: ResolveRelayedContextArgs) => Promise<RelayedShieldedFetchContext>;
26
27
  challengeUrlResolver?: (args: {
27
28
  input: string;
28
- requirement: PaymentRequirement;
29
+ requirement?: PaymentRequirement;
29
30
  }) => string | undefined;
30
31
  onUnsupportedRail?: (args: UnsupportedRelayedRailArgs) => Promise<Response>;
31
32
  fetchImpl?: typeof fetch;
@@ -1 +1 @@
1
- {"version":3,"file":"relayerFetch.d.ts","sourceRoot":"","sources":["../src/relayerFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,kBAAkB,EAGvB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,GAAG,EAAE,iBAAiB,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1F,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,kBAAkB,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACxG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AA8ClG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gCAAgC,GAAG,oBAAoB,CAuEzG"}
1
+ {"version":3,"file":"relayerFetch.d.ts","sourceRoot":"","sources":["../src/relayerFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GAAG,EACR,KAAK,kBAAkB,EAKvB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,GAAG,EAAE,iBAAiB,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1F,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACzG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAyHlG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gCAAgC,GAAG,oBAAoB,CAuHzG"}
@@ -1,4 +1,4 @@
1
- import { RELAYER_ROUTES, X402_HEADERS } from '@shielded-x402/shared-types';
1
+ import { parsePaymentRequiredEnvelope, parsePaymentRequiredHeader, RELAYER_ROUTES, X402_HEADERS } from '@shielded-x402/shared-types';
2
2
  function normalizeInput(input) {
3
3
  if (typeof input === 'string')
4
4
  return input;
@@ -14,14 +14,66 @@ function headersToRecord(headers) {
14
14
  });
15
15
  return out;
16
16
  }
17
- function normalizeBody(body) {
18
- if (body === undefined || body === null)
19
- return undefined;
20
- if (typeof body === 'string')
21
- return body;
22
- if (body instanceof URLSearchParams)
23
- return body.toString();
24
- throw new Error('relayed shielded fetch currently supports string/URLSearchParams request bodies only');
17
+ function bytesToBase64(bytes) {
18
+ return Buffer.from(bytes).toString('base64');
19
+ }
20
+ function serializedToFetchInit(method, serialized) {
21
+ const init = {
22
+ method,
23
+ headers: serialized.headers
24
+ };
25
+ if (method !== 'GET' && method !== 'HEAD' && serialized.bodyBase64 !== undefined) {
26
+ init.body = Buffer.from(serialized.bodyBase64, 'base64');
27
+ }
28
+ return init;
29
+ }
30
+ async function requestShieldedRequirementFromRelayer(baseFetch, relayerEndpoint, relayerChallengePath, merchantRequest, merchantPaymentRequiredHeader) {
31
+ const challengeRequest = {
32
+ merchantRequest,
33
+ merchantPaymentRequiredHeader
34
+ };
35
+ const response = await baseFetch(`${relayerEndpoint.replace(/\/$/, '')}${relayerChallengePath}`, {
36
+ method: 'POST',
37
+ headers: {
38
+ 'content-type': 'application/json'
39
+ },
40
+ body: JSON.stringify(challengeRequest)
41
+ });
42
+ if (!response.ok) {
43
+ const body = await response.text();
44
+ throw new Error(`relayer challenge request failed: ${response.status} ${body}`);
45
+ }
46
+ const payload = (await response.json());
47
+ if (payload.requirement) {
48
+ return payload.requirement;
49
+ }
50
+ if (payload.paymentRequiredHeader) {
51
+ return parsePaymentRequiredHeader(payload.paymentRequiredHeader);
52
+ }
53
+ throw new Error('relayer challenge response missing requirement');
54
+ }
55
+ async function serializeMerchantRequestBody(method, headers, body) {
56
+ const normalizedMethod = method.toUpperCase();
57
+ const supportsBody = normalizedMethod !== 'GET' && normalizedMethod !== 'HEAD';
58
+ const requestInit = {
59
+ method: normalizedMethod
60
+ };
61
+ if (headers !== undefined) {
62
+ requestInit.headers = headers;
63
+ }
64
+ if (supportsBody && body !== undefined && body !== null) {
65
+ requestInit.body = body;
66
+ }
67
+ const request = new Request('http://relay.local', requestInit);
68
+ const serializedHeaders = headersToRecord(request.headers);
69
+ if (!supportsBody || body === undefined || body === null) {
70
+ return { headers: serializedHeaders };
71
+ }
72
+ const bytes = new Uint8Array(await request.arrayBuffer());
73
+ return {
74
+ headers: serializedHeaders,
75
+ bodyBase64: bytesToBase64(bytes)
76
+ };
25
77
  }
26
78
  function toRelayResultResponse(relayResponse) {
27
79
  const settlementIdHeader = { 'x-relayer-settlement-id': relayResponse.settlementId };
@@ -35,7 +87,7 @@ function toRelayResultResponse(relayResponse) {
35
87
  }
36
88
  });
37
89
  }
38
- return new Response(relayResponse.merchantResult.body, {
90
+ return new Response(Buffer.from(relayResponse.merchantResult.bodyBase64, 'base64'), {
39
91
  status: relayResponse.merchantResult.status,
40
92
  headers: {
41
93
  ...relayResponse.merchantResult.headers,
@@ -46,49 +98,87 @@ function toRelayResultResponse(relayResponse) {
46
98
  export function createRelayedShieldedFetch(config) {
47
99
  const baseFetch = config.fetchImpl ?? fetch;
48
100
  const relayerPath = config.relayerPath ?? RELAYER_ROUTES.pay;
101
+ const relayerChallengePath = config.relayerChallengePath ?? RELAYER_ROUTES.challenge;
49
102
  return async (input, init) => {
50
103
  const normalizedInput = normalizeInput(input);
51
104
  const requestInit = init ?? {};
52
- const first = await baseFetch(normalizedInput, requestInit);
105
+ const method = (requestInit.method ?? 'GET').toUpperCase();
106
+ const serializedRequest = await serializeMerchantRequestBody(method, requestInit.headers, requestInit.body);
107
+ const baseMerchantRequest = {
108
+ url: normalizedInput,
109
+ method,
110
+ headers: serializedRequest.headers,
111
+ ...(serializedRequest.bodyBase64 !== undefined
112
+ ? { bodyBase64: serializedRequest.bodyBase64 }
113
+ : {})
114
+ };
115
+ const first = await baseFetch(normalizedInput, serializedToFetchInit(method, serializedRequest));
53
116
  if (first.status !== 402)
54
117
  return first;
55
- const parsed = config.sdk.parse402Response(first);
56
- if (parsed.requirement.rail !== 'shielded-usdc') {
57
- if (config.onUnsupportedRail) {
58
- return config.onUnsupportedRail({
118
+ const merchantRequiredHeader = first.headers.get(X402_HEADERS.paymentRequired);
119
+ if (!merchantRequiredHeader) {
120
+ throw new Error(`missing ${X402_HEADERS.paymentRequired} header`);
121
+ }
122
+ parsePaymentRequiredEnvelope(merchantRequiredHeader);
123
+ let requirement;
124
+ let parsedRequirement;
125
+ try {
126
+ parsedRequirement = config.sdk.parse402Response(first).requirement;
127
+ }
128
+ catch {
129
+ parsedRequirement = undefined;
130
+ }
131
+ if (parsedRequirement?.rail === 'shielded-usdc') {
132
+ requirement = parsedRequirement;
133
+ }
134
+ else {
135
+ const challengeUrl = config.challengeUrlResolver?.(parsedRequirement
136
+ ? {
59
137
  input: normalizedInput,
60
- init: requestInit,
61
- requirement: parsed.requirement,
62
- challengeResponse: first
138
+ requirement: parsedRequirement
139
+ }
140
+ : {
141
+ input: normalizedInput
63
142
  });
143
+ try {
144
+ requirement = await requestShieldedRequirementFromRelayer(baseFetch, config.relayerEndpoint, relayerChallengePath, {
145
+ ...baseMerchantRequest,
146
+ ...(challengeUrl ? { challengeUrl } : {})
147
+ }, merchantRequiredHeader);
148
+ }
149
+ catch (error) {
150
+ if (parsedRequirement && config.onUnsupportedRail) {
151
+ return config.onUnsupportedRail({
152
+ input: normalizedInput,
153
+ init: requestInit,
154
+ requirement: parsedRequirement,
155
+ challengeResponse: first
156
+ });
157
+ }
158
+ throw error;
64
159
  }
65
- return first;
66
160
  }
67
161
  const context = await config.resolveContext({
68
162
  input: normalizedInput,
69
163
  init: requestInit,
70
- requirement: parsed.requirement,
164
+ requirement,
71
165
  challengeResponse: first
72
166
  });
73
- const prepared = await config.sdk.prepare402Payment(parsed.requirement, context.note, context.witness, context.payerPkHash, requestInit.headers);
167
+ const prepared = await config.sdk.prepare402Payment(requirement, context.note, context.witness, context.payerPkHash, serializedRequest.headers);
74
168
  const paymentSignatureHeader = prepared.headers.get(X402_HEADERS.paymentSignature);
75
169
  if (!paymentSignatureHeader) {
76
170
  throw new Error('failed to build relayer payment headers');
77
171
  }
78
172
  const challengeUrl = config.challengeUrlResolver?.({
79
173
  input: normalizedInput,
80
- requirement: parsed.requirement
174
+ requirement
81
175
  });
82
- const body = normalizeBody(requestInit.body);
83
176
  const relayRequest = {
84
177
  merchantRequest: {
85
- url: normalizedInput,
86
- method: requestInit.method ?? 'GET',
87
- headers: headersToRecord(requestInit.headers),
88
- ...(body !== undefined ? { body } : {}),
178
+ ...baseMerchantRequest,
89
179
  ...(challengeUrl ? { challengeUrl } : {})
90
180
  },
91
- requirement: parsed.requirement,
181
+ requirement,
92
182
  paymentSignatureHeader
93
183
  };
94
184
  const relayerResponse = await baseFetch(`${config.relayerEndpoint.replace(/\/$/, '')}${relayerPath}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"relayerFetch.js","sourceRoot":"","sources":["../src/relayerFetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relayerFetch.js","sourceRoot":"","sources":["../src/relayerFetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type Hex, type PaymentRequirement, type ShieldedNote, type ShieldedPaymentResponse } from '@shielded-x402/shared-types';
2
+ import { type MerkleWitness } from './merkle.js';
3
+ import type { Parsed402, Prepared402Payment, ShieldedClientConfig, SpendBuildParams, SpendProofBundle } from './types.js';
4
+ export declare class ShieldedClientSDK {
5
+ private readonly config;
6
+ constructor(config: ShieldedClientConfig);
7
+ deposit(amount: bigint, ownerPkHash: Hex): Promise<{
8
+ note: ShieldedNote;
9
+ txHash?: Hex;
10
+ leafIndex: number;
11
+ }>;
12
+ buildSpendProof(params: SpendBuildParams): SpendProofBundle;
13
+ buildSpendProofWithProvider(params: SpendBuildParams): Promise<SpendProofBundle>;
14
+ private attachRealProof;
15
+ pay402(paymentResponse: ShieldedPaymentResponse, requirement: PaymentRequirement, challengeNonce: Hex): Promise<{
16
+ payload: string;
17
+ signature: string;
18
+ paymentSignatureHeader: string;
19
+ }>;
20
+ parse402Response(response: Response): Parsed402;
21
+ prepare402Payment(requirement: PaymentRequirement, note: ShieldedNote, witness: MerkleWitness, payerPkHash: Hex, baseHeaders?: HeadersInit): Promise<Prepared402Payment>;
22
+ complete402Payment(input: string, init: RequestInit, requirement: PaymentRequirement, note: ShieldedNote, witness: MerkleWitness, payerPkHash: Hex, fetchFn?: typeof fetch): Promise<Response>;
23
+ fetchWithShieldedPayment(input: string, init: RequestInit, note: ShieldedNote, witness: MerkleWitness, payerPkHash: Hex): Promise<Response>;
24
+ }
25
+ export declare function buildWitnessFromCommitments(commitments: Hex[], targetIndex: number): MerkleWitness;
26
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAcpB,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAEnD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBjH,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IA8CrD,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAKxE,eAAe;IA8BvB,MAAM,CACV,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,kBAAkB,EAC/B,cAAc,EAAE,GAAG,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAA;KAAE,CAAC;IAalF,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAMzC,iBAAiB,CACrB,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,GAAG,EAChB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAoCxB,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,GAAG,EAChB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,QAAQ,CAAC;IAed,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAOlJ;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAElG"}