@shielded-x402/shared-types 0.1.2 → 0.2.0
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/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 +57 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/x402.d.ts +14 -3
- package/dist/x402.d.ts.map +1 -1
- package/dist/x402.js +86 -3
- package/dist/x402.js.map +1 -1
- package/package.json +3 -2
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?: {
|
|
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: PaymentRequirement[];
|
|
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,32 @@ 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
|
+
body?: string;
|
|
83
|
+
challengeUrl?: string;
|
|
84
|
+
}
|
|
85
|
+
export interface RelayerPayRequest {
|
|
86
|
+
merchantRequest: RelayerMerchantRequest;
|
|
87
|
+
requirement: PaymentRequirement;
|
|
88
|
+
paymentSignatureHeader: string;
|
|
89
|
+
idempotencyKey?: string;
|
|
90
|
+
}
|
|
91
|
+
export type RelayerSettlementStatus = 'RECEIVED' | 'VERIFIED' | 'SENT_ONCHAIN' | 'CONFIRMED' | 'PAID_MERCHANT' | 'DONE' | 'FAILED';
|
|
92
|
+
export interface RelayerMerchantResult {
|
|
93
|
+
status: number;
|
|
94
|
+
headers: Record<string, string>;
|
|
95
|
+
body: string;
|
|
96
|
+
payoutReference?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface RelayerPayResponse {
|
|
99
|
+
settlementId: string;
|
|
100
|
+
status: RelayerSettlementStatus;
|
|
101
|
+
nullifier: Hex;
|
|
102
|
+
settlementTxHash?: Hex;
|
|
103
|
+
merchantResult?: RelayerMerchantResult;
|
|
104
|
+
failureReason?: string;
|
|
105
|
+
}
|
|
50
106
|
//# 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,18 @@
|
|
|
1
|
+
import type { PaymentRequirement, 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 pay: "/v1/relay/pay";
|
|
9
|
+
readonly statusPrefix: "/v1/relay/status";
|
|
6
10
|
};
|
|
11
|
+
export declare function encodeX402Header<T>(value: T): string;
|
|
12
|
+
export declare function decodeX402Header<T>(rawHeader: string): T;
|
|
13
|
+
export declare function buildPaymentRequiredHeader(requirement: PaymentRequirement): string;
|
|
14
|
+
export declare function parsePaymentRequiredHeader(rawHeader: string): PaymentRequirement;
|
|
15
|
+
export declare function buildPaymentSignatureHeader(payload: X402PaymentSignaturePayload): string;
|
|
16
|
+
export declare function parsePaymentSignatureHeader(rawHeader: string): X402PaymentSignaturePayload;
|
|
17
|
+
export declare function normalizeRequirement(requirement: PaymentRequirement): PaymentRequirement;
|
|
7
18
|
//# 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,EAElB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,eAAO,MAAM,cAAc;;;CAGjB,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,CAUhF;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,CA4BxF"}
|
package/dist/x402.js
CHANGED
|
@@ -1,7 +1,90 @@
|
|
|
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
|
+
pay: '/v1/relay/pay',
|
|
8
|
+
statusPrefix: '/v1/relay/status'
|
|
9
|
+
};
|
|
10
|
+
function toBase64(value) {
|
|
11
|
+
return Buffer.from(value, 'utf8').toString('base64');
|
|
12
|
+
}
|
|
13
|
+
function fromBase64(value) {
|
|
14
|
+
return Buffer.from(value, 'base64').toString('utf8');
|
|
15
|
+
}
|
|
16
|
+
export function encodeX402Header(value) {
|
|
17
|
+
return toBase64(JSON.stringify(value));
|
|
18
|
+
}
|
|
19
|
+
export function decodeX402Header(rawHeader) {
|
|
20
|
+
const decoded = fromBase64(rawHeader.trim());
|
|
21
|
+
return JSON.parse(decoded);
|
|
22
|
+
}
|
|
23
|
+
export function buildPaymentRequiredHeader(requirement) {
|
|
24
|
+
const envelope = {
|
|
25
|
+
x402Version: 2,
|
|
26
|
+
accepts: [
|
|
27
|
+
{
|
|
28
|
+
...requirement,
|
|
29
|
+
x402Version: 2,
|
|
30
|
+
extra: requirement.extra ?? {
|
|
31
|
+
rail: requirement.rail,
|
|
32
|
+
challengeNonce: requirement.challengeNonce,
|
|
33
|
+
challengeExpiry: requirement.challengeExpiry,
|
|
34
|
+
merchantPubKey: requirement.merchantPubKey,
|
|
35
|
+
verifyingContract: requirement.verifyingContract
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
return encodeX402Header(envelope);
|
|
41
|
+
}
|
|
42
|
+
export function parsePaymentRequiredHeader(rawHeader) {
|
|
43
|
+
const envelope = decodeX402Header(rawHeader);
|
|
44
|
+
if (envelope.x402Version !== 2) {
|
|
45
|
+
throw new Error('unsupported x402 version in PAYMENT-REQUIRED');
|
|
46
|
+
}
|
|
47
|
+
const accepted = envelope.accepts[0];
|
|
48
|
+
if (!accepted) {
|
|
49
|
+
throw new Error('x402 PAYMENT-REQUIRED has no accepted payment requirements');
|
|
50
|
+
}
|
|
51
|
+
return normalizeRequirement(accepted);
|
|
52
|
+
}
|
|
53
|
+
export function buildPaymentSignatureHeader(payload) {
|
|
54
|
+
return encodeX402Header(payload);
|
|
55
|
+
}
|
|
56
|
+
export function parsePaymentSignatureHeader(rawHeader) {
|
|
57
|
+
const envelope = decodeX402Header(rawHeader);
|
|
58
|
+
if (envelope.x402Version !== 2) {
|
|
59
|
+
throw new Error('unsupported x402 version in PAYMENT-SIGNATURE');
|
|
60
|
+
}
|
|
61
|
+
return envelope;
|
|
62
|
+
}
|
|
63
|
+
export function normalizeRequirement(requirement) {
|
|
64
|
+
const extra = requirement.extra;
|
|
65
|
+
const rail = requirement.rail ?? extra?.rail;
|
|
66
|
+
const challengeNonce = requirement.challengeNonce ?? extra?.challengeNonce;
|
|
67
|
+
const challengeExpiry = requirement.challengeExpiry ?? extra?.challengeExpiry;
|
|
68
|
+
const merchantPubKey = requirement.merchantPubKey ?? extra?.merchantPubKey;
|
|
69
|
+
const verifyingContract = requirement.verifyingContract ?? extra?.verifyingContract;
|
|
70
|
+
if (!rail || !challengeNonce || !challengeExpiry || !merchantPubKey || !verifyingContract) {
|
|
71
|
+
throw new Error('payment requirement missing shielded rail metadata');
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
...requirement,
|
|
75
|
+
x402Version: 2,
|
|
76
|
+
rail,
|
|
77
|
+
challengeNonce,
|
|
78
|
+
challengeExpiry,
|
|
79
|
+
merchantPubKey,
|
|
80
|
+
verifyingContract,
|
|
81
|
+
extra: {
|
|
82
|
+
rail,
|
|
83
|
+
challengeNonce,
|
|
84
|
+
challengeExpiry,
|
|
85
|
+
merchantPubKey,
|
|
86
|
+
verifyingContract
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
7
90
|
//# 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shielded-x402/shared-types",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsc -p tsconfig.json",
|
|
21
|
+
"prepack": "pnpm run build",
|
|
21
22
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
22
23
|
"test": "vitest run",
|
|
23
24
|
"lint": "tsc -p tsconfig.json --noEmit"
|
|
24
25
|
}
|
|
25
|
-
}
|
|
26
|
+
}
|