@shielded-x402/shared-types 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/crypto-spec.d.ts +2 -1
- package/dist/crypto-spec.d.ts.map +1 -1
- package/dist/crypto-spec.js +2 -1
- package/dist/crypto-spec.js.map +1 -1
- package/dist/types.d.ts +66 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/x402.d.ts +16 -3
- package/dist/x402.d.ts.map +1 -1
- package/dist/x402.js +92 -3
- package/dist/x402.js.map +1 -1
- package/package.json +1 -1
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/crypto-spec.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export declare const CRYPTO_SPEC: {
|
|
2
2
|
readonly version: "v0.1.0";
|
|
3
3
|
readonly hashFunction: "keccak256";
|
|
4
|
-
readonly merkleTreeDepth:
|
|
4
|
+
readonly merkleTreeDepth: 24;
|
|
5
5
|
readonly noteEncoding: "abi-packed-v1";
|
|
6
6
|
readonly nullifierDerivation: "keccak256(nullifierSecret, noteCommitment)";
|
|
7
7
|
readonly merchantCommitmentDerivation: "keccak256(payAmount, merchantRho, merchantPkHash)";
|
|
8
8
|
readonly changeCommitmentDerivation: "keccak256(changeAmount, changeRho, changePkHash)";
|
|
9
9
|
readonly challengeDomainSeparator: "shielded-x402:v1:challenge";
|
|
10
|
+
readonly challengeDomainHash: "0xe32e24a51c351093d339c0035177dc2da5c1b8b9563e414393edd75506dcc055";
|
|
10
11
|
readonly commitmentDomainSeparator: "shielded-x402:v1:commitment";
|
|
11
12
|
readonly outputDomainSeparator: "shielded-x402:v1:output";
|
|
12
13
|
readonly nullifierDomainSeparator: "shielded-x402:v1:nullifier";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-spec.d.ts","sourceRoot":"","sources":["../src/crypto-spec.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"crypto-spec.d.ts","sourceRoot":"","sources":["../src/crypto-spec.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAad,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC"}
|
package/dist/crypto-spec.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export const CRYPTO_SPEC = {
|
|
2
2
|
version: 'v0.1.0',
|
|
3
3
|
hashFunction: 'keccak256',
|
|
4
|
-
merkleTreeDepth:
|
|
4
|
+
merkleTreeDepth: 24,
|
|
5
5
|
noteEncoding: 'abi-packed-v1',
|
|
6
6
|
nullifierDerivation: 'keccak256(nullifierSecret, noteCommitment)',
|
|
7
7
|
merchantCommitmentDerivation: 'keccak256(payAmount, merchantRho, merchantPkHash)',
|
|
8
8
|
changeCommitmentDerivation: 'keccak256(changeAmount, changeRho, changePkHash)',
|
|
9
9
|
challengeDomainSeparator: 'shielded-x402:v1:challenge',
|
|
10
|
+
challengeDomainHash: '0xe32e24a51c351093d339c0035177dc2da5c1b8b9563e414393edd75506dcc055',
|
|
10
11
|
commitmentDomainSeparator: 'shielded-x402:v1:commitment',
|
|
11
12
|
outputDomainSeparator: 'shielded-x402:v1:output',
|
|
12
13
|
nullifierDomainSeparator: 'shielded-x402:v1:nullifier'
|
package/dist/crypto-spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-spec.js","sourceRoot":"","sources":["../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,yBAAyB,EAAE,6BAA6B;IACxD,qBAAqB,EAAE,yBAAyB;IAChD,wBAAwB,EAAE,4BAA4B;CAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"crypto-spec.js","sourceRoot":"","sources":["../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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -26,12 +26,40 @@ export interface ShieldedPaymentResponse {
|
|
|
26
26
|
txHint?: string;
|
|
27
27
|
}
|
|
28
28
|
export interface PaymentRequirement {
|
|
29
|
-
|
|
29
|
+
x402Version?: 2;
|
|
30
|
+
scheme: 'exact' | string;
|
|
31
|
+
network: string;
|
|
32
|
+
asset: Hex | string;
|
|
33
|
+
payTo: Hex;
|
|
34
|
+
rail: 'shielded-usdc' | string;
|
|
30
35
|
amount: string;
|
|
31
36
|
challengeNonce: string;
|
|
32
37
|
challengeExpiry: string;
|
|
33
38
|
merchantPubKey: Hex;
|
|
34
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;
|
|
35
63
|
}
|
|
36
64
|
export interface AgentRecord {
|
|
37
65
|
did: string;
|
|
@@ -47,4 +75,41 @@ export interface ReputationSignal {
|
|
|
47
75
|
uptime: number;
|
|
48
76
|
attestationRefs: string[];
|
|
49
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
|
+
}
|
|
50
115
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../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,IAAI,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/x402.d.ts
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
+
import type { PaymentRequirement, X402PaymentRequired, X402PaymentSignaturePayload } from './types.js';
|
|
1
2
|
export declare const X402_HEADERS: {
|
|
2
|
-
readonly
|
|
3
|
+
readonly paymentRequired: "PAYMENT-REQUIRED";
|
|
3
4
|
readonly paymentSignature: "PAYMENT-SIGNATURE";
|
|
4
|
-
readonly
|
|
5
|
-
|
|
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";
|
|
6
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;
|
|
7
20
|
//# sourceMappingURL=x402.d.ts.map
|
package/dist/x402.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../src/x402.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../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"}
|
package/dist/x402.js
CHANGED
|
@@ -1,7 +1,96 @@
|
|
|
1
1
|
export const X402_HEADERS = {
|
|
2
|
-
|
|
2
|
+
paymentRequired: 'PAYMENT-REQUIRED',
|
|
3
3
|
paymentSignature: 'PAYMENT-SIGNATURE',
|
|
4
|
-
|
|
5
|
-
paymentRequirement: 'x-payment-requirement'
|
|
4
|
+
paymentResponse: 'PAYMENT-RESPONSE'
|
|
6
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
|
+
}
|
|
7
96
|
//# sourceMappingURL=x402.js.map
|
package/dist/x402.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../src/x402.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../src/x402.ts"],"names":[],"mappings":"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"}
|