@x402api/agent-wallet-core 0.1.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.
Files changed (62) hide show
  1. package/README.md +12 -0
  2. package/dist/balances.d.ts +32 -0
  3. package/dist/balances.d.ts.map +1 -0
  4. package/dist/balances.js +278 -0
  5. package/dist/balances.js.map +1 -0
  6. package/dist/errors.d.ts +15 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +73 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/index.d.ts +15 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +15 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/notifications.d.ts +71 -0
  15. package/dist/notifications.d.ts.map +1 -0
  16. package/dist/notifications.js +209 -0
  17. package/dist/notifications.js.map +1 -0
  18. package/dist/payment/attempt-store.d.ts +49 -0
  19. package/dist/payment/attempt-store.d.ts.map +1 -0
  20. package/dist/payment/attempt-store.js +283 -0
  21. package/dist/payment/attempt-store.js.map +1 -0
  22. package/dist/payment/authorize.d.ts +22 -0
  23. package/dist/payment/authorize.d.ts.map +1 -0
  24. package/dist/payment/authorize.js +386 -0
  25. package/dist/payment/authorize.js.map +1 -0
  26. package/dist/payment/contracts.d.ts +36 -0
  27. package/dist/payment/contracts.d.ts.map +1 -0
  28. package/dist/payment/contracts.js +132 -0
  29. package/dist/payment/contracts.js.map +1 -0
  30. package/dist/protocol/base.d.ts +78 -0
  31. package/dist/protocol/base.d.ts.map +1 -0
  32. package/dist/protocol/base.js +459 -0
  33. package/dist/protocol/base.js.map +1 -0
  34. package/dist/protocol/external-recipient.d.ts +22 -0
  35. package/dist/protocol/external-recipient.d.ts.map +1 -0
  36. package/dist/protocol/external-recipient.js +149 -0
  37. package/dist/protocol/external-recipient.js.map +1 -0
  38. package/dist/protocol/http.d.ts +52 -0
  39. package/dist/protocol/http.d.ts.map +1 -0
  40. package/dist/protocol/http.js +283 -0
  41. package/dist/protocol/http.js.map +1 -0
  42. package/dist/protocol/solana.d.ts +147 -0
  43. package/dist/protocol/solana.d.ts.map +1 -0
  44. package/dist/protocol/solana.js +549 -0
  45. package/dist/protocol/solana.js.map +1 -0
  46. package/dist/protocol/tron.d.ts +130 -0
  47. package/dist/protocol/tron.d.ts.map +1 -0
  48. package/dist/protocol/tron.js +539 -0
  49. package/dist/protocol/tron.js.map +1 -0
  50. package/dist/storage/keystore.d.ts +51 -0
  51. package/dist/storage/keystore.d.ts.map +1 -0
  52. package/dist/storage/keystore.js +317 -0
  53. package/dist/storage/keystore.js.map +1 -0
  54. package/dist/storage/paths.d.ts +8 -0
  55. package/dist/storage/paths.d.ts.map +1 -0
  56. package/dist/storage/paths.js +22 -0
  57. package/dist/storage/paths.js.map +1 -0
  58. package/dist/storage/private-files.d.ts +8 -0
  59. package/dist/storage/private-files.d.ts.map +1 -0
  60. package/dist/storage/private-files.js +83 -0
  61. package/dist/storage/private-files.js.map +1 -0
  62. package/package.json +35 -0
@@ -0,0 +1,78 @@
1
+ import { type JsonObject, type PaymentPayload, type PaymentRequired, type PaymentRequirement } from "./http.js";
2
+ export interface Eip1193Provider {
3
+ request(args: {
4
+ method: string;
5
+ params?: readonly unknown[] | Record<string, unknown>;
6
+ }): Promise<unknown>;
7
+ }
8
+ export type Eip3009Authorization = {
9
+ from: string;
10
+ to: string;
11
+ value: string;
12
+ validAfter: string;
13
+ validBefore: string;
14
+ nonce: string;
15
+ };
16
+ export declare const BASE_MAINNET_NETWORK = "eip155:8453";
17
+ export declare const BASE_MAINNET_CHAIN_ID = 8453;
18
+ export declare const BASE_USDC_MAINNET_CONTRACT = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
19
+ export declare const BASE_USDC_BUYER_FUNDED_PROFILE = "com.k1hub.x402.base-usdc-eip3009-buyer-funded.v1";
20
+ export type BaseEip1559TransactionPolicy = {
21
+ nonce: bigint;
22
+ gasLimit: bigint;
23
+ maxFeePerGas: bigint;
24
+ maxPriorityFeePerGas: bigint;
25
+ };
26
+ export type BaseTransactionTransport = "eip1193_broadcast" | "signed_raw";
27
+ export type BaseUsdcAuthorizationMaterial = {
28
+ authorization: Eip3009Authorization;
29
+ typedData: JsonObject;
30
+ };
31
+ export declare function buildBaseUsdcAuthorization(options: {
32
+ accepted: PaymentRequirement;
33
+ payer: string;
34
+ nowSeconds: number;
35
+ challengeDigest: string;
36
+ }): BaseUsdcAuthorizationMaterial;
37
+ export declare function encodeBaseUsdcTransferWithAuthorization(options: {
38
+ authorization: Eip3009Authorization;
39
+ signature: string;
40
+ }): string;
41
+ export declare function buildBaseUsdcEip1559TransactionRequest(options: {
42
+ accepted: PaymentRequirement;
43
+ payer: string;
44
+ data: string;
45
+ policy: BaseEip1559TransactionPolicy;
46
+ }): JsonObject;
47
+ /**
48
+ * Decode and compare every frozen EIP-1559 field returned by the wallet.
49
+ *
50
+ * Sender recovery and EIP-3009 signature recovery are repeated by K1Hub's
51
+ * backend before reservation. This browser-side check prevents a wallet from
52
+ * silently changing chain, nonce, fees, destination, value, calldata, or
53
+ * access list.
54
+ */
55
+ export declare function verifyBuyerSignedBaseUsdcTransaction(options: {
56
+ signedTransaction: string;
57
+ request: JsonObject;
58
+ }): void;
59
+ /**
60
+ * Construct the exact external-wallet V1 Base USDC x402 payload.
61
+ *
62
+ * The default path asks the buyer's ordinary EIP-1193 wallet to broadcast the
63
+ * exact EIP-1559 request. K1Hub receives only its hash plus the frozen
64
+ * authorization/request and independently verifies the transaction through
65
+ * its RPC quorum. Wallets that support `eth_signTransaction` may opt into raw
66
+ * transport; K1Hub relays those already-signed bytes without signing or gas.
67
+ */
68
+ export declare function createBaseUsdcPayment(options: {
69
+ provider: Eip1193Provider;
70
+ paymentRequired: PaymentRequired;
71
+ accepted: PaymentRequirement;
72
+ buyerPaymentIdentifier: string;
73
+ challengeDigest: string;
74
+ transactionPolicy: BaseEip1559TransactionPolicy;
75
+ transactionTransport?: BaseTransactionTransport;
76
+ nowSeconds?: number;
77
+ }): Promise<PaymentPayload>;
78
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/protocol/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAInB,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,0BAA0B,+CACO,CAAC;AAC/C,eAAO,MAAM,8BAA8B,qDACS,CAAC;AAgBrD,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,GAAG,YAAY,CAAC;AAE1E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,aAAa,EAAE,oBAAoB,CAAC;IACpC,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AA0FF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,6BAA6B,CAmDhC;AAED,wBAAgB,uCAAuC,CAAC,OAAO,EAAE;IAC/D,aAAa,EAAE,oBAAoB,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAkCT;AAED,wBAAgB,sCAAsC,CAAC,OAAO,EAAE;IAC9D,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,4BAA4B,CAAC;CACtC,GAAG,UAAU,CAqCb;AAuHD;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE;IAC5D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,UAAU,CAAC;CACrB,GAAG,IAAI,CAmEP;AAeD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,eAAe,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,CAAC;IAChD,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyF1B"}
@@ -0,0 +1,459 @@
1
+ import { createPaymentPayload, } from "./http.js";
2
+ import { verifyExternalRecipientDeclaration } from "./external-recipient.js";
3
+ export const BASE_MAINNET_NETWORK = "eip155:8453";
4
+ export const BASE_MAINNET_CHAIN_ID = 8453;
5
+ export const BASE_USDC_MAINNET_CONTRACT = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
6
+ export const BASE_USDC_BUYER_FUNDED_PROFILE = "com.k1hub.x402.base-usdc-eip3009-buyer-funded.v1";
7
+ const BASE_CHAIN_ID_HEX = "0x2105";
8
+ const BASE_MAX_AUTHORIZATION_SECONDS = 300;
9
+ const BASE_MAX_GAS_LIMIT = 200000n;
10
+ const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
11
+ const DECIMAL = /^(?:0|[1-9][0-9]{0,77})$/;
12
+ const DIGEST = /^sha256:([0-9a-f]{64})$/;
13
+ const SIGNATURE = /^0x[0-9a-fA-F]{130}$/;
14
+ const SIGNED_TYPE_2_TRANSACTION = /^0x02[0-9a-f]+$/;
15
+ const SECP256K1_ORDER = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n;
16
+ const SECP256K1_HALF_ORDER = SECP256K1_ORDER / 2n;
17
+ const UINT256_MAX = (1n << 256n) - 1n;
18
+ const TRANSFER_WITH_AUTHORIZATION_SELECTOR = "e3ee160e";
19
+ function validateBaseRequirement(accepted) {
20
+ const extra = accepted.extra;
21
+ if (accepted.scheme !== "exact" ||
22
+ accepted.network !== BASE_MAINNET_NETWORK ||
23
+ accepted.asset.toLowerCase() !== BASE_USDC_MAINNET_CONTRACT.toLowerCase() ||
24
+ !ADDRESS.test(accepted.asset) ||
25
+ !ADDRESS.test(accepted.payTo) ||
26
+ !DECIMAL.test(accepted.amount) ||
27
+ accepted.amount === "0" ||
28
+ !Number.isSafeInteger(accepted.maxTimeoutSeconds) ||
29
+ accepted.maxTimeoutSeconds < 1 ||
30
+ typeof extra !== "object" ||
31
+ extra === null ||
32
+ Object.keys(extra).sort().join(",") !==
33
+ "assetTransferMethod,name,payloadProfile,version" ||
34
+ extra.assetTransferMethod !== "eip3009" ||
35
+ extra.name !== "USD Coin" ||
36
+ extra.version !== "2" ||
37
+ extra.payloadProfile !== BASE_USDC_BUYER_FUNDED_PROFILE) {
38
+ throw new Error("requirement is not buyer-funded issuer-native Base USDC EIP-3009");
39
+ }
40
+ }
41
+ function decimalUint256(value, field) {
42
+ if (!DECIMAL.test(value))
43
+ throw new Error(`${field} is not canonical decimal`);
44
+ const result = BigInt(value);
45
+ if (result > UINT256_MAX)
46
+ throw new Error(`${field} exceeds uint256`);
47
+ return result;
48
+ }
49
+ function boundedUint256(value, field) {
50
+ if (typeof value !== "bigint" || value < 0n || value > UINT256_MAX) {
51
+ throw new Error(`${field} is outside uint256`);
52
+ }
53
+ return value;
54
+ }
55
+ function hexQuantity(value) {
56
+ return `0x${value.toString(16)}`;
57
+ }
58
+ function word(value) {
59
+ return boundedUint256(value, "ABI integer").toString(16).padStart(64, "0");
60
+ }
61
+ function addressWord(value) {
62
+ if (!ADDRESS.test(value))
63
+ throw new Error("ABI address is malformed");
64
+ return value.slice(2).toLowerCase().padStart(64, "0");
65
+ }
66
+ function signatureParts(signature) {
67
+ if (!SIGNATURE.test(signature)) {
68
+ throw new Error("wallet returned an invalid EIP-3009 signature");
69
+ }
70
+ const rHex = signature.slice(2, 66).toLowerCase();
71
+ const sHex = signature.slice(66, 130).toLowerCase();
72
+ const rawRecoveryId = Number.parseInt(signature.slice(130, 132), 16);
73
+ const recoveryId = rawRecoveryId === 0 || rawRecoveryId === 1
74
+ ? rawRecoveryId + 27
75
+ : rawRecoveryId;
76
+ const r = BigInt(`0x${rHex}`);
77
+ const s = BigInt(`0x${sHex}`);
78
+ if (![27, 28].includes(recoveryId) ||
79
+ r < 1n ||
80
+ r >= SECP256K1_ORDER ||
81
+ s < 1n ||
82
+ s > SECP256K1_HALF_ORDER) {
83
+ throw new Error("EIP-3009 signature is not canonical low-s secp256k1");
84
+ }
85
+ return { recoveryId, r, s, rHex, sHex };
86
+ }
87
+ export function buildBaseUsdcAuthorization(options) {
88
+ validateBaseRequirement(options.accepted);
89
+ if (!ADDRESS.test(options.payer) ||
90
+ !Number.isSafeInteger(options.nowSeconds) ||
91
+ options.nowSeconds < 1) {
92
+ throw new Error("payer or current time is invalid");
93
+ }
94
+ const digest = DIGEST.exec(options.challengeDigest);
95
+ if (digest === null)
96
+ throw new Error("payment challenge digest is invalid");
97
+ const validFor = Math.min(options.accepted.maxTimeoutSeconds, BASE_MAX_AUTHORIZATION_SECONDS);
98
+ const authorization = {
99
+ from: options.payer,
100
+ to: options.accepted.payTo,
101
+ value: options.accepted.amount,
102
+ validAfter: String(options.nowSeconds - 1),
103
+ validBefore: String(options.nowSeconds + validFor),
104
+ nonce: `0x${digest[1]}`,
105
+ };
106
+ decimalUint256(authorization.value, "authorization value");
107
+ const typedData = {
108
+ types: {
109
+ EIP712Domain: [
110
+ { name: "name", type: "string" },
111
+ { name: "version", type: "string" },
112
+ { name: "chainId", type: "uint256" },
113
+ { name: "verifyingContract", type: "address" },
114
+ ],
115
+ TransferWithAuthorization: [
116
+ { name: "from", type: "address" },
117
+ { name: "to", type: "address" },
118
+ { name: "value", type: "uint256" },
119
+ { name: "validAfter", type: "uint256" },
120
+ { name: "validBefore", type: "uint256" },
121
+ { name: "nonce", type: "bytes32" },
122
+ ],
123
+ },
124
+ primaryType: "TransferWithAuthorization",
125
+ domain: {
126
+ name: "USD Coin",
127
+ version: "2",
128
+ chainId: BASE_MAINNET_CHAIN_ID,
129
+ verifyingContract: options.accepted.asset,
130
+ },
131
+ message: authorization,
132
+ };
133
+ return { authorization, typedData };
134
+ }
135
+ export function encodeBaseUsdcTransferWithAuthorization(options) {
136
+ const { authorization } = options;
137
+ if (!ADDRESS.test(authorization.from) ||
138
+ !ADDRESS.test(authorization.to) ||
139
+ !/^0x[0-9a-f]{64}$/.test(authorization.nonce)) {
140
+ throw new Error("EIP-3009 authorization is malformed");
141
+ }
142
+ const value = decimalUint256(authorization.value, "authorization value");
143
+ const validAfter = decimalUint256(authorization.validAfter, "authorization validAfter");
144
+ const validBefore = decimalUint256(authorization.validBefore, "authorization validBefore");
145
+ if (validAfter >= validBefore) {
146
+ throw new Error("EIP-3009 authorization validity window is empty");
147
+ }
148
+ const { recoveryId, rHex, sHex } = signatureParts(options.signature);
149
+ return (`0x${TRANSFER_WITH_AUTHORIZATION_SELECTOR}` +
150
+ addressWord(authorization.from) +
151
+ addressWord(authorization.to) +
152
+ word(value) +
153
+ word(validAfter) +
154
+ word(validBefore) +
155
+ authorization.nonce.slice(2) +
156
+ word(BigInt(recoveryId)) +
157
+ rHex.padStart(64, "0") +
158
+ sHex.padStart(64, "0"));
159
+ }
160
+ export function buildBaseUsdcEip1559TransactionRequest(options) {
161
+ validateBaseRequirement(options.accepted);
162
+ if (!ADDRESS.test(options.payer))
163
+ throw new Error("payer is malformed");
164
+ if (!/^0xe3ee160e[0-9a-f]{576}$/.test(options.data)) {
165
+ throw new Error("Base USDC transfer calldata is not canonical");
166
+ }
167
+ const { policy } = options;
168
+ const nonce = boundedUint256(policy.nonce, "transaction nonce");
169
+ const gasLimit = boundedUint256(policy.gasLimit, "transaction gas limit");
170
+ const maxFeePerGas = boundedUint256(policy.maxFeePerGas, "transaction max fee");
171
+ const maxPriorityFeePerGas = boundedUint256(policy.maxPriorityFeePerGas, "transaction priority fee");
172
+ if (gasLimit < 21000n ||
173
+ gasLimit > BASE_MAX_GAS_LIMIT ||
174
+ maxPriorityFeePerGas > maxFeePerGas) {
175
+ throw new Error("Base EIP-1559 fee policy is outside the client ceiling");
176
+ }
177
+ return {
178
+ type: "0x2",
179
+ chainId: BASE_CHAIN_ID_HEX,
180
+ from: options.payer,
181
+ to: options.accepted.asset,
182
+ value: "0x0",
183
+ data: options.data,
184
+ nonce: hexQuantity(nonce),
185
+ gas: hexQuantity(gasLimit),
186
+ maxFeePerGas: hexQuantity(maxFeePerGas),
187
+ maxPriorityFeePerGas: hexQuantity(maxPriorityFeePerGas),
188
+ accessList: [],
189
+ };
190
+ }
191
+ function readBigEndian(value) {
192
+ if (value.length > 4)
193
+ throw new Error("RLP length exceeds client bound");
194
+ let result = 0;
195
+ for (const byte of value)
196
+ result = result * 256 + byte;
197
+ return result;
198
+ }
199
+ function parseRlp(input, offset, depth = 0) {
200
+ if (depth > 3 || offset >= input.length) {
201
+ throw new Error("signed EIP-1559 transaction RLP is malformed");
202
+ }
203
+ const prefix = input[offset];
204
+ if (prefix <= 0x7f) {
205
+ return { value: input.slice(offset, offset + 1), next: offset + 1 };
206
+ }
207
+ let payloadStart;
208
+ let payloadLength;
209
+ let list = false;
210
+ if (prefix <= 0xb7) {
211
+ payloadLength = prefix - 0x80;
212
+ payloadStart = offset + 1;
213
+ if (payloadLength === 1 && input[payloadStart] <= 0x7f) {
214
+ throw new Error("signed EIP-1559 transaction RLP is noncanonical");
215
+ }
216
+ }
217
+ else if (prefix <= 0xbf) {
218
+ const lengthLength = prefix - 0xb7;
219
+ const lengthBytes = input.slice(offset + 1, offset + 1 + lengthLength);
220
+ if (lengthBytes[0] === 0) {
221
+ throw new Error("signed EIP-1559 transaction RLP is noncanonical");
222
+ }
223
+ payloadLength = readBigEndian(lengthBytes);
224
+ if (payloadLength < 56) {
225
+ throw new Error("signed EIP-1559 transaction RLP is noncanonical");
226
+ }
227
+ payloadStart = offset + 1 + lengthLength;
228
+ }
229
+ else if (prefix <= 0xf7) {
230
+ list = true;
231
+ payloadLength = prefix - 0xc0;
232
+ payloadStart = offset + 1;
233
+ }
234
+ else {
235
+ list = true;
236
+ const lengthLength = prefix - 0xf7;
237
+ const lengthBytes = input.slice(offset + 1, offset + 1 + lengthLength);
238
+ if (lengthBytes[0] === 0) {
239
+ throw new Error("signed EIP-1559 transaction RLP is noncanonical");
240
+ }
241
+ payloadLength = readBigEndian(lengthBytes);
242
+ if (payloadLength < 56) {
243
+ throw new Error("signed EIP-1559 transaction RLP is noncanonical");
244
+ }
245
+ payloadStart = offset + 1 + lengthLength;
246
+ }
247
+ const payloadEnd = payloadStart + payloadLength;
248
+ if (payloadStart > input.length || payloadEnd > input.length) {
249
+ throw new Error("signed EIP-1559 transaction RLP is truncated");
250
+ }
251
+ if (!list) {
252
+ return { value: input.slice(payloadStart, payloadEnd), next: payloadEnd };
253
+ }
254
+ const values = [];
255
+ let cursor = payloadStart;
256
+ while (cursor < payloadEnd) {
257
+ const parsed = parseRlp(input, cursor, depth + 1);
258
+ if (parsed.next > payloadEnd) {
259
+ throw new Error("signed EIP-1559 transaction RLP list is malformed");
260
+ }
261
+ values.push(parsed.value);
262
+ cursor = parsed.next;
263
+ }
264
+ if (cursor !== payloadEnd) {
265
+ throw new Error("signed EIP-1559 transaction RLP list is malformed");
266
+ }
267
+ return { value: values, next: payloadEnd };
268
+ }
269
+ function rlpBytes(value, field) {
270
+ if (Array.isArray(value))
271
+ throw new Error(`${field} is not an RLP string`);
272
+ return value;
273
+ }
274
+ function rlpInteger(value, field) {
275
+ const bytes = rlpBytes(value, field);
276
+ if (bytes.length > 32 || (bytes.length > 0 && bytes[0] === 0)) {
277
+ throw new Error(`${field} is not a canonical uint256`);
278
+ }
279
+ let result = 0n;
280
+ for (const byte of bytes)
281
+ result = (result << 8n) | BigInt(byte);
282
+ return result;
283
+ }
284
+ function hexBytes(value) {
285
+ return [...value].map((byte) => byte.toString(16).padStart(2, "0")).join("");
286
+ }
287
+ function policyFromRequest(request) {
288
+ const quantity = (field) => {
289
+ const value = request[field];
290
+ if (typeof value !== "string" ||
291
+ !/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(value)) {
292
+ throw new Error(`${field} is not a canonical JSON-RPC quantity`);
293
+ }
294
+ return BigInt(value);
295
+ };
296
+ return {
297
+ nonce: quantity("nonce"),
298
+ gasLimit: quantity("gas"),
299
+ maxFeePerGas: quantity("maxFeePerGas"),
300
+ maxPriorityFeePerGas: quantity("maxPriorityFeePerGas"),
301
+ };
302
+ }
303
+ /**
304
+ * Decode and compare every frozen EIP-1559 field returned by the wallet.
305
+ *
306
+ * Sender recovery and EIP-3009 signature recovery are repeated by K1Hub's
307
+ * backend before reservation. This browser-side check prevents a wallet from
308
+ * silently changing chain, nonce, fees, destination, value, calldata, or
309
+ * access list.
310
+ */
311
+ export function verifyBuyerSignedBaseUsdcTransaction(options) {
312
+ const { signedTransaction, request } = options;
313
+ if (typeof signedTransaction !== "string" ||
314
+ signedTransaction.length > 32_770 ||
315
+ signedTransaction.length % 2 !== 0 ||
316
+ !SIGNED_TYPE_2_TRANSACTION.test(signedTransaction)) {
317
+ throw new Error("wallet returned no canonical signed EIP-1559 transaction");
318
+ }
319
+ const raw = Uint8Array.from(signedTransaction.slice(2).match(/../g) ?? [], (pair) => Number.parseInt(pair, 16));
320
+ if (raw[0] !== 2)
321
+ throw new Error("wallet returned the wrong transaction type");
322
+ const parsed = parseRlp(raw, 1);
323
+ if (parsed.next !== raw.length || !Array.isArray(parsed.value)) {
324
+ throw new Error("signed EIP-1559 transaction has trailing data");
325
+ }
326
+ const fields = parsed.value;
327
+ if (fields.length !== 12) {
328
+ throw new Error("signed EIP-1559 transaction has the wrong field count");
329
+ }
330
+ const [chainId, nonce, priorityFee, maxFee, gas, to, value, data, accessList, parity, signatureR, signatureS,] = fields;
331
+ const expected = policyFromRequest(request);
332
+ const expectedTo = request.to;
333
+ const expectedData = request.data;
334
+ const transactionR = rlpInteger(signatureR, "transaction signature r");
335
+ const transactionS = rlpInteger(signatureS, "transaction signature s");
336
+ if (rlpInteger(chainId, "transaction chainId") !==
337
+ BigInt(BASE_MAINNET_CHAIN_ID) ||
338
+ rlpInteger(nonce, "transaction nonce") !== expected.nonce ||
339
+ rlpInteger(priorityFee, "transaction priority fee") !==
340
+ expected.maxPriorityFeePerGas ||
341
+ rlpInteger(maxFee, "transaction max fee") !== expected.maxFeePerGas ||
342
+ rlpInteger(gas, "transaction gas") !== expected.gasLimit ||
343
+ typeof expectedTo !== "string" ||
344
+ `0x${hexBytes(rlpBytes(to, "transaction to"))}`.toLowerCase() !==
345
+ expectedTo.toLowerCase() ||
346
+ rlpInteger(value, "transaction value") !== 0n ||
347
+ typeof expectedData !== "string" ||
348
+ `0x${hexBytes(rlpBytes(data, "transaction data"))}` !== expectedData ||
349
+ !Array.isArray(accessList) ||
350
+ accessList.length !== 0 ||
351
+ ![0n, 1n].includes(rlpInteger(parity, "transaction y parity")) ||
352
+ transactionR < 1n ||
353
+ transactionR >= SECP256K1_ORDER ||
354
+ transactionS < 1n ||
355
+ transactionS > SECP256K1_HALF_ORDER) {
356
+ throw new Error("wallet changed the frozen buyer-funded Base transaction");
357
+ }
358
+ }
359
+ function signedTransactionResult(value) {
360
+ if (typeof value === "string")
361
+ return value;
362
+ if (typeof value === "object" &&
363
+ value !== null &&
364
+ "raw" in value &&
365
+ typeof value.raw === "string") {
366
+ return value.raw;
367
+ }
368
+ throw new Error("wallet returned no signed EIP-1559 transaction");
369
+ }
370
+ /**
371
+ * Construct the exact external-wallet V1 Base USDC x402 payload.
372
+ *
373
+ * The default path asks the buyer's ordinary EIP-1193 wallet to broadcast the
374
+ * exact EIP-1559 request. K1Hub receives only its hash plus the frozen
375
+ * authorization/request and independently verifies the transaction through
376
+ * its RPC quorum. Wallets that support `eth_signTransaction` may opt into raw
377
+ * transport; K1Hub relays those already-signed bytes without signing or gas.
378
+ */
379
+ export async function createBaseUsdcPayment(options) {
380
+ const { provider, accepted, paymentRequired } = options;
381
+ validateBaseRequirement(accepted);
382
+ const nowSeconds = options.nowSeconds ?? Math.floor(Date.now() / 1_000);
383
+ if (!Number.isSafeInteger(nowSeconds) || nowSeconds < 1) {
384
+ throw new Error("current time is invalid");
385
+ }
386
+ await verifyExternalRecipientDeclaration({
387
+ paymentRequired,
388
+ accepted,
389
+ });
390
+ if ((await provider.request({ method: "eth_chainId" })) !== BASE_CHAIN_ID_HEX) {
391
+ throw new Error("wallet is not connected to Base Mainnet");
392
+ }
393
+ const accounts = await provider.request({ method: "eth_requestAccounts" });
394
+ if (!Array.isArray(accounts) ||
395
+ typeof accounts[0] !== "string" ||
396
+ !ADDRESS.test(accounts[0])) {
397
+ throw new Error("wallet returned no valid Base account");
398
+ }
399
+ const payer = accounts[0];
400
+ if (payer.toLowerCase() === accepted.payTo.toLowerCase()) {
401
+ throw new Error("payer and recipient must be distinct");
402
+ }
403
+ const { authorization, typedData } = buildBaseUsdcAuthorization({
404
+ accepted,
405
+ payer,
406
+ nowSeconds,
407
+ challengeDigest: options.challengeDigest,
408
+ });
409
+ const authorizationSignature = await provider.request({
410
+ method: "eth_signTypedData_v4",
411
+ params: [payer, JSON.stringify(typedData)],
412
+ });
413
+ if (typeof authorizationSignature !== "string") {
414
+ throw new Error("wallet returned no EIP-3009 signature");
415
+ }
416
+ const data = encodeBaseUsdcTransferWithAuthorization({
417
+ authorization,
418
+ signature: authorizationSignature,
419
+ });
420
+ const request = buildBaseUsdcEip1559TransactionRequest({
421
+ accepted,
422
+ payer,
423
+ data,
424
+ policy: options.transactionPolicy,
425
+ });
426
+ if ((options.transactionTransport ?? "eip1193_broadcast") === "signed_raw") {
427
+ const signedTransaction = signedTransactionResult(await provider.request({
428
+ method: "eth_signTransaction",
429
+ params: [request],
430
+ }));
431
+ verifyBuyerSignedBaseUsdcTransaction({ signedTransaction, request });
432
+ return createPaymentPayload({
433
+ paymentRequired,
434
+ accepted,
435
+ paymentIdentifier: options.buyerPaymentIdentifier,
436
+ schemePayload: { transaction: signedTransaction },
437
+ });
438
+ }
439
+ const transactionHash = await provider.request({
440
+ method: "eth_sendTransaction",
441
+ params: [request],
442
+ });
443
+ if (typeof transactionHash !== "string" ||
444
+ !/^0x[0-9a-f]{64}$/.test(transactionHash)) {
445
+ throw new Error("wallet returned no canonical buyer-broadcast Base transaction hash");
446
+ }
447
+ return createPaymentPayload({
448
+ paymentRequired,
449
+ accepted,
450
+ paymentIdentifier: options.buyerPaymentIdentifier,
451
+ schemePayload: {
452
+ transactionHash,
453
+ transactionRequest: request,
454
+ authorization,
455
+ signature: authorizationSignature,
456
+ },
457
+ });
458
+ }
459
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/protocol/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type JsonObject, type PaymentRequired, type PaymentRequirement } from "./http.js";
2
+ export declare const EXTERNAL_RECIPIENT_EXTENSION = "com.k1hub.external-recipient";
3
+ export type VerifiedExternalRecipient = {
4
+ network: string;
5
+ asset: string;
6
+ payTo: string;
7
+ recipientDescriptorDigest: string;
8
+ recipientDescriptor: JsonObject;
9
+ };
10
+ /**
11
+ * Verify the immutable address-only recipient declaration before a browser
12
+ * asks any wallet for accounts, signatures, or a transaction.
13
+ *
14
+ * This declaration is intentionally separate from the dormant managed-wallet
15
+ * manifest protocol. Its digest binds the exact receiving-address descriptor
16
+ * whose signed-nonce proof of control was admitted by K1Hub.
17
+ */
18
+ export declare function verifyExternalRecipientDeclaration(options: {
19
+ paymentRequired: PaymentRequired;
20
+ accepted: PaymentRequirement;
21
+ }): Promise<VerifiedExternalRecipient>;
22
+ //# sourceMappingURL=external-recipient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-recipient.d.ts","sourceRoot":"","sources":["../../src/protocol/external-recipient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAQ3E,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB,EAAE,MAAM,CAAC;IAClC,mBAAmB,EAAE,UAAU,CAAC;CACjC,CAAC;AAoHF;;;;;;;GAOG;AACH,wBAAsB,kCAAkC,CAAC,OAAO,EAAE;IAChE,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAgFrC"}