@shielded-x402/client 0.1.3 → 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.
- package/LICENSE +21 -0
- package/dist/client.d.ts +4 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +26 -13
- package/dist/client.js.map +1 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +2 -2
- package/dist/crypto.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/packages/shared-types/src/crypto-spec.d.ts +16 -0
- package/dist/packages/shared-types/src/crypto-spec.d.ts.map +1 -0
- package/dist/packages/shared-types/src/crypto-spec.js +15 -0
- package/dist/packages/shared-types/src/crypto-spec.js.map +1 -0
- package/dist/packages/shared-types/src/index.d.ts +4 -0
- package/dist/packages/shared-types/src/index.d.ts.map +1 -0
- package/dist/packages/shared-types/src/index.js +4 -0
- package/dist/packages/shared-types/src/index.js.map +1 -0
- package/dist/packages/shared-types/src/types.d.ts +115 -0
- package/dist/packages/shared-types/src/types.d.ts.map +1 -0
- package/dist/packages/shared-types/src/types.js +2 -0
- package/dist/packages/shared-types/src/types.js.map +1 -0
- package/dist/packages/shared-types/src/x402.d.ts +20 -0
- package/dist/packages/shared-types/src/x402.d.ts.map +1 -0
- package/dist/packages/shared-types/src/x402.js +96 -0
- package/dist/packages/shared-types/src/x402.js.map +1 -0
- package/dist/proofProvider.d.ts.map +1 -1
- package/dist/proofProvider.js +9 -4
- package/dist/proofProvider.js.map +1 -1
- package/dist/relayerFetch.d.ts +36 -0
- package/dist/relayerFetch.d.ts.map +1 -0
- package/dist/relayerFetch.js +195 -0
- package/dist/relayerFetch.js.map +1 -0
- package/dist/sdk/client/src/client.d.ts +26 -0
- package/dist/sdk/client/src/client.d.ts.map +1 -0
- package/dist/sdk/client/src/client.js +174 -0
- package/dist/sdk/client/src/client.js.map +1 -0
- package/dist/sdk/client/src/crypto.d.ts +5 -0
- package/dist/sdk/client/src/crypto.d.ts.map +1 -0
- package/dist/sdk/client/src/crypto.js +15 -0
- package/dist/sdk/client/src/crypto.js.map +1 -0
- package/dist/sdk/client/src/index.d.ts +10 -0
- package/dist/sdk/client/src/index.d.ts.map +1 -0
- package/dist/sdk/client/src/index.js +10 -0
- package/dist/sdk/client/src/index.js.map +1 -0
- package/dist/sdk/client/src/indexer.d.ts +22 -0
- package/dist/sdk/client/src/indexer.d.ts.map +1 -0
- package/dist/sdk/client/src/indexer.js +20 -0
- package/dist/sdk/client/src/indexer.js.map +1 -0
- package/dist/sdk/client/src/merkle.d.ts +11 -0
- package/dist/sdk/client/src/merkle.d.ts.map +1 -0
- package/dist/sdk/client/src/merkle.js +63 -0
- package/dist/sdk/client/src/merkle.js.map +1 -0
- package/dist/sdk/client/src/notes.d.ts +19 -0
- package/dist/sdk/client/src/notes.d.ts.map +1 -0
- package/dist/sdk/client/src/notes.js +105 -0
- package/dist/sdk/client/src/notes.js.map +1 -0
- package/dist/sdk/client/src/proofProvider.d.ts +33 -0
- package/dist/sdk/client/src/proofProvider.d.ts.map +1 -0
- package/dist/sdk/client/src/proofProvider.js +207 -0
- package/dist/sdk/client/src/proofProvider.js.map +1 -0
- package/dist/sdk/client/src/relayerFetch.d.ts +36 -0
- package/dist/sdk/client/src/relayerFetch.d.ts.map +1 -0
- package/dist/sdk/client/src/relayerFetch.js +195 -0
- package/dist/sdk/client/src/relayerFetch.js.map +1 -0
- package/dist/sdk/client/src/shieldedFetch.d.ts +39 -0
- package/dist/sdk/client/src/shieldedFetch.d.ts.map +1 -0
- package/dist/sdk/client/src/shieldedFetch.js +88 -0
- package/dist/sdk/client/src/shieldedFetch.js.map +1 -0
- package/dist/sdk/client/src/types.d.ts +57 -0
- package/dist/sdk/client/src/types.d.ts.map +1 -0
- package/dist/sdk/client/src/types.js +2 -0
- package/dist/sdk/client/src/types.js.map +1 -0
- package/dist/shieldedFetch.d.ts +10 -0
- package/dist/shieldedFetch.d.ts.map +1 -1
- package/dist/shieldedFetch.js +54 -1
- package/dist/shieldedFetch.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
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.
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Hex, type PaymentRequirement, type ShieldedNote, type ShieldedPaymentResponse } from '@shielded-x402/shared-types';
|
|
2
2
|
import { type MerkleWitness } from './merkle.js';
|
|
3
|
-
import type { Parsed402, ShieldedClientConfig, SpendBuildParams, SpendProofBundle } from './types.js';
|
|
3
|
+
import type { Parsed402, Prepared402Payment, ShieldedClientConfig, SpendBuildParams, SpendProofBundle } from './types.js';
|
|
4
4
|
export declare class ShieldedClientSDK {
|
|
5
5
|
private readonly config;
|
|
6
6
|
constructor(config: ShieldedClientConfig);
|
|
@@ -12,11 +12,13 @@ export declare class ShieldedClientSDK {
|
|
|
12
12
|
buildSpendProof(params: SpendBuildParams): SpendProofBundle;
|
|
13
13
|
buildSpendProofWithProvider(params: SpendBuildParams): Promise<SpendProofBundle>;
|
|
14
14
|
private attachRealProof;
|
|
15
|
-
pay402(paymentResponse: ShieldedPaymentResponse): Promise<{
|
|
15
|
+
pay402(paymentResponse: ShieldedPaymentResponse, requirement: PaymentRequirement, challengeNonce: Hex): Promise<{
|
|
16
16
|
payload: string;
|
|
17
17
|
signature: string;
|
|
18
|
+
paymentSignatureHeader: string;
|
|
18
19
|
}>;
|
|
19
20
|
parse402Response(response: Response): Parsed402;
|
|
21
|
+
prepare402Payment(requirement: PaymentRequirement, note: ShieldedNote, witness: MerkleWitness, payerPkHash: Hex, baseHeaders?: HeadersInit): Promise<Prepared402Payment>;
|
|
20
22
|
complete402Payment(input: string, init: RequestInit, requirement: PaymentRequirement, note: ShieldedNote, witness: MerkleWitness, payerPkHash: Hex, fetchFn?: typeof fetch): Promise<Response>;
|
|
21
23
|
fetchWithShieldedPayment(input: string, init: RequestInit, note: ShieldedNote, witness: MerkleWitness, payerPkHash: Hex): Promise<Response>;
|
|
22
24
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { X402_HEADERS } from '@shielded-x402/shared-types';
|
|
1
|
+
import { X402_HEADERS, buildPaymentSignatureHeader, normalizeRequirement, parsePaymentRequiredHeader } from '@shielded-x402/shared-types';
|
|
2
2
|
import { randomBytes } from 'node:crypto';
|
|
3
3
|
import { deriveChallengeHash, deriveCommitment, deriveNullifier } from './crypto.js';
|
|
4
4
|
import { deriveWitness } from './merkle.js';
|
|
@@ -108,18 +108,25 @@ export class ShieldedClientSDK {
|
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
|
-
async pay402(paymentResponse) {
|
|
111
|
+
async pay402(paymentResponse, requirement, challengeNonce) {
|
|
112
112
|
const payload = JSON.stringify(paymentResponse);
|
|
113
113
|
const signature = await this.config.signer(payload);
|
|
114
|
-
|
|
114
|
+
const paymentSignatureHeader = buildPaymentSignatureHeader({
|
|
115
|
+
x402Version: 2,
|
|
116
|
+
accepted: normalizeRequirement(requirement),
|
|
117
|
+
payload: paymentResponse,
|
|
118
|
+
challengeNonce,
|
|
119
|
+
signature: signature
|
|
120
|
+
});
|
|
121
|
+
return { payload, signature, paymentSignatureHeader };
|
|
115
122
|
}
|
|
116
123
|
parse402Response(response) {
|
|
117
|
-
const header = response.headers.get(X402_HEADERS.
|
|
124
|
+
const header = response.headers.get(X402_HEADERS.paymentRequired);
|
|
118
125
|
if (!header)
|
|
119
|
-
throw new Error(`missing ${X402_HEADERS.
|
|
120
|
-
return { requirement:
|
|
126
|
+
throw new Error(`missing ${X402_HEADERS.paymentRequired} header`);
|
|
127
|
+
return { requirement: parsePaymentRequiredHeader(header) };
|
|
121
128
|
}
|
|
122
|
-
async
|
|
129
|
+
async prepare402Payment(requirement, note, witness, payerPkHash, baseHeaders) {
|
|
123
130
|
if (requirement.rail !== 'shielded-usdc') {
|
|
124
131
|
throw new Error(`unsupported rail: ${requirement.rail}`);
|
|
125
132
|
}
|
|
@@ -137,14 +144,20 @@ export class ShieldedClientSDK {
|
|
|
137
144
|
encryptedReceipt: '0x'
|
|
138
145
|
};
|
|
139
146
|
const bundleWithProof = await this.buildSpendProofWithProvider(spendParams);
|
|
140
|
-
const signed = await this.pay402(bundleWithProof.response);
|
|
141
|
-
const headers = new Headers(
|
|
142
|
-
headers.set(X402_HEADERS.
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
const signed = await this.pay402(bundleWithProof.response, requirement, requirement.challengeNonce);
|
|
148
|
+
const headers = new Headers(baseHeaders);
|
|
149
|
+
headers.set(X402_HEADERS.paymentSignature, signed.paymentSignatureHeader);
|
|
150
|
+
return {
|
|
151
|
+
requirement,
|
|
152
|
+
headers,
|
|
153
|
+
response: bundleWithProof.response
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
async complete402Payment(input, init, requirement, note, witness, payerPkHash, fetchFn = fetch) {
|
|
157
|
+
const prepared = await this.prepare402Payment(requirement, note, witness, payerPkHash, init.headers);
|
|
145
158
|
return fetchFn(input, {
|
|
146
159
|
...init,
|
|
147
|
-
headers
|
|
160
|
+
headers: prepared.headers
|
|
148
161
|
});
|
|
149
162
|
}
|
|
150
163
|
async fetchWithShieldedPayment(input, init, note, witness, payerPkHash) {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAG3E;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,GAAG,CAE1E;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG,CAM3F"}
|
package/dist/crypto.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { CRYPTO_SPEC } from '@shielded-x402/shared-types';
|
|
1
2
|
import { concatHex, keccak256, pad } from 'viem';
|
|
2
|
-
const CHALLENGE_DOMAIN_HASH = '0xe32e24a51c351093d339c0035177dc2da5c1b8b9563e414393edd75506dcc055';
|
|
3
3
|
export function deriveCommitment(amount, rho, pkHash) {
|
|
4
4
|
const amountWord = `0x${amount.toString(16).padStart(64, '0')}`;
|
|
5
5
|
return keccak256(concatHex([amountWord, rho, pkHash]));
|
|
@@ -10,6 +10,6 @@ export function deriveNullifier(nullifierSecret, commitment) {
|
|
|
10
10
|
export function deriveChallengeHash(challengeNonce, amount, merchant) {
|
|
11
11
|
const amountWord = `0x${amount.toString(16).padStart(64, '0')}`;
|
|
12
12
|
const merchantWord = pad(merchant, { size: 32 });
|
|
13
|
-
return keccak256(concatHex([
|
|
13
|
+
return keccak256(concatHex([CRYPTO_SPEC.challengeDomainHash, challengeNonce, amountWord, merchantWord]));
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=crypto.js.map
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAY,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAY,MAAM,MAAM,CAAC;AAE3D,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,GAAQ,EAAE,MAAW;IACpE,MAAM,UAAU,GAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAU,CAAC;IACzE,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,eAAoB,EAAE,UAAe;IACnE,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,cAAmB,EAAE,MAAc,EAAE,QAAa;IACpF,MAAM,UAAU,GAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAU,CAAC;IACzE,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,SAAS,CACd,SAAS,CAAC,CAAC,WAAW,CAAC,mBAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './indexer.js';
|
|
|
4
4
|
export * from './merkle.js';
|
|
5
5
|
export * from './notes.js';
|
|
6
6
|
export * from './proofProvider.js';
|
|
7
|
+
export * from './relayerFetch.js';
|
|
7
8
|
export * from './shieldedFetch.js';
|
|
8
9
|
export * from './types.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from './indexer.js';
|
|
|
4
4
|
export * from './merkle.js';
|
|
5
5
|
export * from './notes.js';
|
|
6
6
|
export * from './proofProvider.js';
|
|
7
|
+
export * from './relayerFetch.js';
|
|
7
8
|
export * from './shieldedFetch.js';
|
|
8
9
|
export * from './types.js';
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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":"AAAA,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,EAAE,CAAC;AAEhC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,kBAAkB,EAAE,GAAG,CAAC;IACxB,gBAAgB,EAAE,GAAG,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,GAAG,CAAC;IACX,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,kBAAkB,EAAE,GAAG,CAAC;IACxB,gBAAgB,EAAE,GAAG,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAC/B,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,GAAG,CAAC;QACpB,iBAAiB,EAAE,GAAG,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,CAAC,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IACjC,cAAc,EAAE,GAAG,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,GAAG,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,sBAAsB,CAAC;IACxC,WAAW,EAAE,kBAAkB,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,sBAAsB,CAAC;IACxC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,kBAAkB,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,GAAG,CAAC;CAC9B;AAED,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,UAAU,GACV,cAAc,GACd,WAAW,GACX,eAAe,GACf,MAAM,GACN,QAAQ,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,GAAG,CAAC;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofProvider.d.ts","sourceRoot":"","sources":["../src/proofProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proofProvider.d.ts","sourceRoot":"","sources":["../src/proofProvider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAA6C,MAAM,YAAY,CAAC;AA2I3F,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA+BD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,aAAa,CAsB1F;AAED;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,mBAAmB,EAC5B,MAAM,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC,GAC3D,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAED;;;GAGG;AACH,wBAAsB,2CAA2C,CAC/D,MAAM,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC,GAC3D,OAAO,CAAC,aAAa,CAAC,CAGxB"}
|
package/dist/proofProvider.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { CRYPTO_SPEC } from '@shielded-x402/shared-types';
|
|
1
2
|
import { pad } from 'viem';
|
|
2
3
|
const BN254_FIELD_MODULUS = 21888242871839275222246405745257275088548364400416034343698204186575808495617n;
|
|
4
|
+
const MERKLE_DEPTH = CRYPTO_SPEC.merkleTreeDepth;
|
|
3
5
|
const toHexWord = (value) => `0x${value.toString(16).padStart(64, '0')}`;
|
|
4
6
|
const normalizeHex = (value) => {
|
|
5
7
|
const trimmed = value.trim().toLowerCase();
|
|
@@ -82,13 +84,16 @@ const normalizeProofHex = (value) => {
|
|
|
82
84
|
throw new Error('unsupported proof value');
|
|
83
85
|
};
|
|
84
86
|
const toNoirInput = (request) => {
|
|
85
|
-
|
|
87
|
+
if (request.witness.path.length > MERKLE_DEPTH || request.witness.indexBits.length > MERKLE_DEPTH) {
|
|
88
|
+
throw new Error(`merkle witness exceeds configured depth ${MERKLE_DEPTH}`);
|
|
89
|
+
}
|
|
90
|
+
const pathBytes = request.witness.path.slice(0, MERKLE_DEPTH).map((value) => hexToBytes32(value));
|
|
86
91
|
const merklePath = [...pathBytes];
|
|
87
|
-
while (merklePath.length <
|
|
92
|
+
while (merklePath.length < MERKLE_DEPTH) {
|
|
88
93
|
merklePath.push(new Array(32).fill(0));
|
|
89
94
|
}
|
|
90
|
-
const indexBits = request.witness.indexBits.slice(0,
|
|
91
|
-
while (indexBits.length <
|
|
95
|
+
const indexBits = request.witness.indexBits.slice(0, MERKLE_DEPTH);
|
|
96
|
+
while (indexBits.length < MERKLE_DEPTH) {
|
|
92
97
|
indexBits.push(0);
|
|
93
98
|
}
|
|
94
99
|
const normalizedIndexBits = indexBits.map((bit) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofProvider.js","sourceRoot":"","sources":["../src/proofProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"proofProvider.js","sourceRoot":"","sources":["../src/proofProvider.ts"],"names":[],"mappings":"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"}
|