@molted/cli 0.1.2 → 0.1.4
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/commands/approve.d.ts.map +1 -1
- package/dist/commands/approve.js +15 -5
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/bids/create.js +2 -2
- package/dist/commands/bids/create.js.map +1 -1
- package/dist/commands/complete.js +2 -2
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +51 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jobs/list.js +2 -2
- package/dist/commands/jobs/list.js.map +1 -1
- package/dist/commands/jobs/view.js +2 -2
- package/dist/commands/jobs/view.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +75 -19
- package/dist/commands/status.js.map +1 -1
- package/dist/lib/config.d.ts +47 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +92 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +14 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +27 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/wallet/cdp-provider.d.ts +2 -0
- package/dist/lib/wallet/cdp-provider.d.ts.map +1 -1
- package/dist/lib/wallet/cdp-provider.js +22 -0
- package/dist/lib/wallet/cdp-provider.js.map +1 -1
- package/dist/lib/wallet/local-provider.d.ts +2 -0
- package/dist/lib/wallet/local-provider.d.ts.map +1 -1
- package/dist/lib/wallet/local-provider.js +11 -0
- package/dist/lib/wallet/local-provider.js.map +1 -1
- package/dist/lib/wallet/types.d.ts +22 -0
- package/dist/lib/wallet/types.d.ts.map +1 -1
- package/dist/lib/wallet/types.js +21 -0
- package/dist/lib/wallet/types.js.map +1 -1
- package/dist/lib/x402/client.d.ts.map +1 -1
- package/dist/lib/x402/client.js +33 -8
- package/dist/lib/x402/client.js.map +1 -1
- package/dist/lib/x402/errors.d.ts +41 -0
- package/dist/lib/x402/errors.d.ts.map +1 -0
- package/dist/lib/x402/errors.js +162 -0
- package/dist/lib/x402/errors.js.map +1 -0
- package/dist/test/wallet-types.test.js +36 -1
- package/dist/test/wallet-types.test.js.map +1 -1
- package/package.json +1 -2
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;GAGG;AACH,QAAA,MAAM,iBAAiB;;;;;;;;;EAGrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAOrD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CA0BlD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9D;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAStC;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQlE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAKvD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAS3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,SAAS,CAmBZ;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;CAClC,GAAG,MAAM,CAYT"}
|
package/dist/lib/config.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Configuration file management
|
|
3
3
|
*
|
|
4
4
|
* Config file location: ./.molted/config.json
|
|
5
|
-
*
|
|
5
|
+
* Credentials file: ./.molted/credentials.json (chmod 600)
|
|
6
|
+
* API key can be loaded from MOLTED_API_KEY env var or credentials file
|
|
6
7
|
*/
|
|
7
8
|
import { promises as fs } from "fs";
|
|
8
9
|
import path from "path";
|
|
@@ -10,6 +11,7 @@ import { z } from "zod";
|
|
|
10
11
|
import { ConfigError } from "./errors.js";
|
|
11
12
|
const CONFIG_DIR = ".molted";
|
|
12
13
|
const CONFIG_FILE = "config.json";
|
|
14
|
+
const CREDENTIALS_FILE = "credentials.json";
|
|
13
15
|
export const ConfigSchema = z.object({
|
|
14
16
|
version: z.literal(1),
|
|
15
17
|
api_url: z.string().url(),
|
|
@@ -21,6 +23,14 @@ export const ConfigSchema = z.object({
|
|
|
21
23
|
wallet_id: z.string().optional(), // CDP wallet ID
|
|
22
24
|
network: z.enum(["base", "base-sepolia"]),
|
|
23
25
|
});
|
|
26
|
+
/**
|
|
27
|
+
* Credentials file schema
|
|
28
|
+
* Stores API key securely with chmod 600
|
|
29
|
+
*/
|
|
30
|
+
const CredentialsSchema = z.object({
|
|
31
|
+
version: z.literal(1),
|
|
32
|
+
api_key: z.string().regex(/^ab_[a-f0-9]{32}$/),
|
|
33
|
+
});
|
|
24
34
|
/**
|
|
25
35
|
* Get the config directory path
|
|
26
36
|
*/
|
|
@@ -33,6 +43,12 @@ export function getConfigDir() {
|
|
|
33
43
|
export function getConfigPath() {
|
|
34
44
|
return path.join(getConfigDir(), CONFIG_FILE);
|
|
35
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the credentials file path
|
|
48
|
+
*/
|
|
49
|
+
export function getCredentialsPath() {
|
|
50
|
+
return path.join(getConfigDir(), CREDENTIALS_FILE);
|
|
51
|
+
}
|
|
36
52
|
/**
|
|
37
53
|
* Check if config exists
|
|
38
54
|
*/
|
|
@@ -97,6 +113,36 @@ export async function deleteConfig() {
|
|
|
97
113
|
throw new ConfigError(`Failed to delete config: ${error.message}`);
|
|
98
114
|
}
|
|
99
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Load credentials from file
|
|
118
|
+
*/
|
|
119
|
+
export async function loadCredentials() {
|
|
120
|
+
const credentialsPath = getCredentialsPath();
|
|
121
|
+
try {
|
|
122
|
+
const content = await fs.readFile(credentialsPath, "utf-8");
|
|
123
|
+
return CredentialsSchema.parse(JSON.parse(content));
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Save credentials to file with chmod 600
|
|
131
|
+
*/
|
|
132
|
+
export async function saveCredentials(apiKey) {
|
|
133
|
+
const configDir = getConfigDir();
|
|
134
|
+
const credentialsPath = getCredentialsPath();
|
|
135
|
+
try {
|
|
136
|
+
// Ensure config directory exists
|
|
137
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
138
|
+
const credentials = { version: 1, api_key: apiKey };
|
|
139
|
+
await fs.writeFile(credentialsPath, JSON.stringify(credentials, null, 2) + "\n");
|
|
140
|
+
await fs.chmod(credentialsPath, 0o600); // rw------- (owner read/write only)
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
throw new ConfigError(`Failed to save credentials: ${error.message}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
100
146
|
/**
|
|
101
147
|
* Get API key from environment
|
|
102
148
|
*/
|
|
@@ -114,6 +160,51 @@ export function requireApiKey() {
|
|
|
114
160
|
}
|
|
115
161
|
return apiKey;
|
|
116
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Get API key from environment or credentials file (async)
|
|
165
|
+
* Environment variable takes precedence over file
|
|
166
|
+
*/
|
|
167
|
+
export async function getApiKeyAsync() {
|
|
168
|
+
// Environment variable takes precedence
|
|
169
|
+
if (process.env.MOLTED_API_KEY) {
|
|
170
|
+
return process.env.MOLTED_API_KEY;
|
|
171
|
+
}
|
|
172
|
+
// Fall back to credentials file
|
|
173
|
+
const credentials = await loadCredentials();
|
|
174
|
+
return credentials?.api_key;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get API key source (for status display)
|
|
178
|
+
*/
|
|
179
|
+
export function getApiKeySource() {
|
|
180
|
+
if (process.env.MOLTED_API_KEY) {
|
|
181
|
+
return "env";
|
|
182
|
+
}
|
|
183
|
+
return null; // Sync function can't check file
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get API key source async (for status display)
|
|
187
|
+
*/
|
|
188
|
+
export async function getApiKeySourceAsync() {
|
|
189
|
+
if (process.env.MOLTED_API_KEY) {
|
|
190
|
+
return "env";
|
|
191
|
+
}
|
|
192
|
+
const credentials = await loadCredentials();
|
|
193
|
+
if (credentials?.api_key) {
|
|
194
|
+
return "file";
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Require API key (async) - checks env and file
|
|
200
|
+
*/
|
|
201
|
+
export async function requireApiKeyAsync() {
|
|
202
|
+
const apiKey = await getApiKeyAsync();
|
|
203
|
+
if (!apiKey) {
|
|
204
|
+
throw new ConfigError("API key not found. Set MOLTED_API_KEY environment variable or run 'molted init' to store credentials locally.");
|
|
205
|
+
}
|
|
206
|
+
return apiKey;
|
|
207
|
+
}
|
|
117
208
|
/**
|
|
118
209
|
* Get CDP credentials from environment
|
|
119
210
|
* Supports both Server Wallet v2 env vars and legacy SDK env vars
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Error classes and exit codes for the Molted CLI
|
|
3
3
|
*/
|
|
4
|
+
export type PaymentErrorCode = "INSUFFICIENT_ETH" | "INSUFFICIENT_USDC" | "CHAIN_MISMATCH" | "TX_REVERTED" | "RPC_ERROR" | "ALREADY_PAID";
|
|
5
|
+
export interface PaymentErrorContext {
|
|
6
|
+
code: PaymentErrorCode;
|
|
7
|
+
required?: string;
|
|
8
|
+
available?: string;
|
|
9
|
+
contractAddress?: string;
|
|
10
|
+
network?: string;
|
|
11
|
+
chainId?: number;
|
|
12
|
+
expectedChainId?: number;
|
|
13
|
+
txHash?: string;
|
|
14
|
+
nextStep?: string;
|
|
15
|
+
}
|
|
4
16
|
export declare const ExitCode: {
|
|
5
17
|
readonly SUCCESS: 0;
|
|
6
18
|
readonly GENERIC_ERROR: 1;
|
|
@@ -23,7 +35,8 @@ export declare class NetworkError extends MoltedError {
|
|
|
23
35
|
constructor(message: string);
|
|
24
36
|
}
|
|
25
37
|
export declare class PaymentError extends MoltedError {
|
|
26
|
-
|
|
38
|
+
readonly context?: PaymentErrorContext | undefined;
|
|
39
|
+
constructor(message: string, context?: PaymentErrorContext | undefined);
|
|
27
40
|
}
|
|
28
41
|
export declare class ValidationError extends MoltedError {
|
|
29
42
|
readonly details?: Record<string, string[]> | undefined;
|
package/dist/lib/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE,qBAAa,WAAY,SAAQ,KAAK;aAGlB,QAAQ,EAAE,YAAY;gBADtC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,YAAqC;CAKlE;AAED,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE,qBAAa,WAAY,SAAQ,KAAK;aAGlB,QAAQ,EAAE,YAAY;gBADtC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,YAAqC;CAKlE;AAED,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,WAAW;aAGzB,OAAO,CAAC,EAAE,mBAAmB;gBAD7C,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,mBAAmB,YAAA;CAKhD;AAED,qBAAa,eAAgB,SAAQ,WAAW;aAG5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBADlD,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,YAAA;CAKrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CA4CjD"}
|
package/dist/lib/errors.js
CHANGED
|
@@ -35,8 +35,10 @@ export class NetworkError extends MoltedError {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
export class PaymentError extends MoltedError {
|
|
38
|
-
|
|
38
|
+
context;
|
|
39
|
+
constructor(message, context) {
|
|
39
40
|
super(message, ExitCode.PAYMENT_ERROR);
|
|
41
|
+
this.context = context;
|
|
40
42
|
this.name = "PaymentError";
|
|
41
43
|
}
|
|
42
44
|
}
|
|
@@ -54,6 +56,30 @@ export class ValidationError extends MoltedError {
|
|
|
54
56
|
export function handleError(error) {
|
|
55
57
|
if (error instanceof MoltedError) {
|
|
56
58
|
console.error(`Error: ${error.message}`);
|
|
59
|
+
if (error instanceof PaymentError && error.context) {
|
|
60
|
+
const ctx = error.context;
|
|
61
|
+
if (ctx.required && ctx.available) {
|
|
62
|
+
console.error(` Required: ${ctx.required}`);
|
|
63
|
+
console.error(` Available: ${ctx.available}`);
|
|
64
|
+
}
|
|
65
|
+
if (ctx.network) {
|
|
66
|
+
console.error(` Network: ${ctx.network}`);
|
|
67
|
+
}
|
|
68
|
+
if (ctx.chainId && ctx.expectedChainId) {
|
|
69
|
+
console.error(` Wallet chain ID: ${ctx.chainId}`);
|
|
70
|
+
console.error(` Expected chain ID: ${ctx.expectedChainId}`);
|
|
71
|
+
}
|
|
72
|
+
if (ctx.contractAddress) {
|
|
73
|
+
console.error(` Contract: ${ctx.contractAddress}`);
|
|
74
|
+
}
|
|
75
|
+
if (ctx.txHash) {
|
|
76
|
+
console.error(` TX Hash: ${ctx.txHash}`);
|
|
77
|
+
}
|
|
78
|
+
if (ctx.nextStep) {
|
|
79
|
+
console.error();
|
|
80
|
+
console.error(`Next step: ${ctx.nextStep}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
57
83
|
if (error instanceof ValidationError && error.details) {
|
|
58
84
|
for (const [field, errors] of Object.entries(error.details)) {
|
|
59
85
|
console.error(` ${field}: ${errors.join(", ")}`);
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export declare class CDPProvider implements WalletProvider {
|
|
|
19
19
|
private network;
|
|
20
20
|
private _address;
|
|
21
21
|
constructor(options: CDPProviderOptions);
|
|
22
|
+
getChainId(): number;
|
|
22
23
|
get address(): `0x${string}`;
|
|
23
24
|
/**
|
|
24
25
|
* Initialize the CDP SDK and wallet
|
|
@@ -30,6 +31,7 @@ export declare class CDPProvider implements WalletProvider {
|
|
|
30
31
|
getWalletId(): string | undefined;
|
|
31
32
|
sendUSDC(params: SendUSDCParams): Promise<`0x${string}`>;
|
|
32
33
|
getUSDCBalance(): Promise<bigint>;
|
|
34
|
+
getETHBalance(): Promise<bigint>;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Create and initialize a CDP wallet provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/cdp-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;CACnC;AAED,qBAAa,WAAY,YAAW,cAAc;IAOpC,OAAO,CAAC,OAAO;IAN3B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAA8B;gBAE1B,OAAO,EAAE,kBAAkB;IAK/C,IAAI,OAAO,IAAI,KAAK,MAAM,EAAE,CAK3B;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCjC;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAI3B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAgCxD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cdp-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/cdp-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;CACnC;AAED,qBAAa,WAAY,YAAW,cAAc;IAOpC,OAAO,CAAC,OAAO;IAN3B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAA8B;gBAE1B,OAAO,EAAE,kBAAkB;IAK/C,UAAU,IAAI,MAAM;IAIpB,IAAI,OAAO,IAAI,KAAK,MAAM,EAAE,CAK3B;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCjC;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAI3B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAgCxD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAyBjC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAqBvC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAItB"}
|
|
@@ -18,6 +18,9 @@ export class CDPProvider {
|
|
|
18
18
|
this.walletId = options.walletId;
|
|
19
19
|
this.network = options.network || "base-sepolia";
|
|
20
20
|
}
|
|
21
|
+
getChainId() {
|
|
22
|
+
return this.network === "base" ? 8453 : 84532;
|
|
23
|
+
}
|
|
21
24
|
get address() {
|
|
22
25
|
if (!this._address) {
|
|
23
26
|
throw new PaymentError("CDP wallet not initialized. Call initialize() first.");
|
|
@@ -116,6 +119,25 @@ export class CDPProvider {
|
|
|
116
119
|
throw new PaymentError(`Failed to get USDC balance: ${error.message}`);
|
|
117
120
|
}
|
|
118
121
|
}
|
|
122
|
+
async getETHBalance() {
|
|
123
|
+
if (!this.wallet) {
|
|
124
|
+
throw new PaymentError("CDP wallet not initialized");
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const balances = await this.wallet.listBalances();
|
|
128
|
+
for (const [assetId, balance] of balances) {
|
|
129
|
+
if (assetId.toLowerCase() === "eth") {
|
|
130
|
+
// Convert to wei (18 decimals)
|
|
131
|
+
const balanceNum = Number(balance);
|
|
132
|
+
return BigInt(Math.floor(balanceNum * 10 ** 18));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return BigInt(0);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
throw new PaymentError(`Failed to get ETH balance: ${error.message}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
119
141
|
}
|
|
120
142
|
/**
|
|
121
143
|
* Create and initialize a CDP wallet provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-provider.js","sourceRoot":"","sources":["../../../src/lib/wallet/cdp-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cdp-provider.js","sourceRoot":"","sources":["../../../src/lib/wallet/cdp-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,10 @@ export declare class LocalProvider implements WalletProvider {
|
|
|
16
16
|
private publicClient;
|
|
17
17
|
private chain;
|
|
18
18
|
constructor(options: LocalProviderOptions);
|
|
19
|
+
getChainId(): number;
|
|
19
20
|
sendUSDC(params: SendUSDCParams): Promise<`0x${string}`>;
|
|
20
21
|
getUSDCBalance(): Promise<bigint>;
|
|
22
|
+
getETHBalance(): Promise<bigint>;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* Create a local wallet provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/local-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAc,YAAW,cAAc;IAClD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAQ;gBAET,OAAO,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/local-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAc,YAAW,cAAc;IAClD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAQ;gBAET,OAAO,EAAE,oBAAoB;IAgBzC,UAAU,IAAI,MAAM;IAId,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAsCxD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBjC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAOvC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,aAAa,CAEf"}
|
|
@@ -26,6 +26,9 @@ export class LocalProvider {
|
|
|
26
26
|
transport: http(rpcUrl),
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
+
getChainId() {
|
|
30
|
+
return this.chain.id;
|
|
31
|
+
}
|
|
29
32
|
async sendUSDC(params) {
|
|
30
33
|
try {
|
|
31
34
|
const usdcAddress = getUSDCAddress(params.chainId);
|
|
@@ -74,6 +77,14 @@ export class LocalProvider {
|
|
|
74
77
|
throw new PaymentError(`Failed to get USDC balance: ${error.message}`);
|
|
75
78
|
}
|
|
76
79
|
}
|
|
80
|
+
async getETHBalance() {
|
|
81
|
+
try {
|
|
82
|
+
return await this.publicClient.getBalance({ address: this.address });
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new PaymentError(`Failed to get ETH balance: ${error.message}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
77
88
|
}
|
|
78
89
|
/**
|
|
79
90
|
* Create a local wallet provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../../src/lib/wallet/local-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../../src/lib/wallet/local-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,11 @@ export interface SendUSDCParams {
|
|
|
11
11
|
export interface WalletProvider {
|
|
12
12
|
readonly type: "cdp" | "local";
|
|
13
13
|
readonly address: `0x${string}`;
|
|
14
|
+
/**
|
|
15
|
+
* Get the chain ID the wallet is configured for
|
|
16
|
+
* @returns Chain ID (e.g., 8453 for Base, 84532 for Base Sepolia)
|
|
17
|
+
*/
|
|
18
|
+
getChainId(): number;
|
|
14
19
|
/**
|
|
15
20
|
* Send USDC to an address
|
|
16
21
|
* @returns Transaction hash
|
|
@@ -21,8 +26,25 @@ export interface WalletProvider {
|
|
|
21
26
|
* @returns Balance in base units (6 decimals)
|
|
22
27
|
*/
|
|
23
28
|
getUSDCBalance(): Promise<bigint>;
|
|
29
|
+
/**
|
|
30
|
+
* Get ETH balance of the wallet (for gas)
|
|
31
|
+
* @returns Balance in wei (18 decimals)
|
|
32
|
+
*/
|
|
33
|
+
getETHBalance(): Promise<bigint>;
|
|
24
34
|
}
|
|
25
35
|
export declare const USDC_ADDRESSES: Record<number, `0x${string}`>;
|
|
36
|
+
export declare const NETWORK_INFO: Record<string, {
|
|
37
|
+
chainId: number;
|
|
38
|
+
name: string;
|
|
39
|
+
explorer: string;
|
|
40
|
+
usdcAddress: `0x${string}`;
|
|
41
|
+
}>;
|
|
42
|
+
export declare function getNetworkInfo(network: string): {
|
|
43
|
+
chainId: number;
|
|
44
|
+
name: string;
|
|
45
|
+
explorer: string;
|
|
46
|
+
usdcAddress: `0x${string}`;
|
|
47
|
+
};
|
|
26
48
|
/**
|
|
27
49
|
* Get USDC contract address for a chain
|
|
28
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAEzD;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,UAAU,IAAI,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAEzD;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAGD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAGxD,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,MAAM,CAC/B,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;CAC5B,CAcF,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM;aApBjC,MAAM;UACT,MAAM;cACF,MAAM;iBACH,KAAK,MAAM,EAAE;EAqB7B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAM7D;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBZ,CAAC"}
|
package/dist/lib/wallet/types.js
CHANGED
|
@@ -8,6 +8,27 @@ export const USDC_ADDRESSES = {
|
|
|
8
8
|
8453: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // Base mainnet
|
|
9
9
|
84532: "0x036CbD53842c5426634e7929541eC2318f3dCF7e", // Base Sepolia
|
|
10
10
|
};
|
|
11
|
+
// Network information by network name
|
|
12
|
+
export const NETWORK_INFO = {
|
|
13
|
+
"base-sepolia": {
|
|
14
|
+
chainId: 84532,
|
|
15
|
+
name: "Base Sepolia",
|
|
16
|
+
explorer: "https://sepolia.basescan.org",
|
|
17
|
+
usdcAddress: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
|
|
18
|
+
},
|
|
19
|
+
base: {
|
|
20
|
+
chainId: 8453,
|
|
21
|
+
name: "Base",
|
|
22
|
+
explorer: "https://basescan.org",
|
|
23
|
+
usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export function getNetworkInfo(network) {
|
|
27
|
+
const info = NETWORK_INFO[network];
|
|
28
|
+
if (!info)
|
|
29
|
+
throw new Error(`Unknown network: ${network}`);
|
|
30
|
+
return info;
|
|
31
|
+
}
|
|
11
32
|
/**
|
|
12
33
|
* Get USDC contract address for a chain
|
|
13
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/wallet/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/wallet/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqCH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,IAAI,EAAE,4CAA4C,EAAE,eAAe;IACnE,KAAK,EAAE,4CAA4C,EAAE,eAAe;CACrE,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,YAAY,GAQrB;IACF,cAAc,EAAE;QACd,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,8BAA8B;QACxC,WAAW,EAAE,4CAA4C;KAC1D;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,sBAAsB;QAChC,WAAW,EAAE,4CAA4C;KAC1D;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;CACO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAczD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,uBAAuB,GAChC,kBAAkB,CAoBpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAyCxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,uBAAuB,CAOxF"}
|
package/dist/lib/x402/client.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* 3. Retry request with payment transaction hash
|
|
8
8
|
*/
|
|
9
9
|
import { PaymentError } from "../errors.js";
|
|
10
|
+
import { classifyPaymentError, createChainMismatchError, createInsufficientETHError, createInsufficientUSDCError, formatETHBalance, MIN_ETH_FOR_GAS, } from "./errors.js";
|
|
10
11
|
// USDC has 6 decimals
|
|
11
12
|
const USDC_DECIMALS = 6;
|
|
12
13
|
/**
|
|
@@ -60,16 +61,40 @@ export async function executePayment(wallet, requirement) {
|
|
|
60
61
|
const amount = parseUSDCAmount(requirement.amount);
|
|
61
62
|
const to = requirement.payTo;
|
|
62
63
|
const chainId = requirement.chainId;
|
|
63
|
-
//
|
|
64
|
-
const
|
|
65
|
-
if (
|
|
64
|
+
// Pre-flight check 1: Chain ID validation
|
|
65
|
+
const walletChainId = wallet.getChainId();
|
|
66
|
+
if (walletChainId !== chainId) {
|
|
67
|
+
throw createChainMismatchError(walletChainId, chainId);
|
|
68
|
+
}
|
|
69
|
+
// Pre-flight check 2: ETH balance for gas
|
|
70
|
+
const ethBalance = await wallet.getETHBalance();
|
|
71
|
+
if (ethBalance < MIN_ETH_FOR_GAS) {
|
|
72
|
+
throw createInsufficientETHError(formatETHBalance(ethBalance), chainId);
|
|
73
|
+
}
|
|
74
|
+
// Pre-flight check 3: USDC balance
|
|
75
|
+
const usdcBalance = await wallet.getUSDCBalance();
|
|
76
|
+
if (usdcBalance < amount) {
|
|
66
77
|
const needed = formatUSDCAmount(amount);
|
|
67
|
-
const available = formatUSDCAmount(
|
|
68
|
-
throw
|
|
78
|
+
const available = formatUSDCAmount(usdcBalance);
|
|
79
|
+
throw createInsufficientUSDCError(needed, available, chainId);
|
|
80
|
+
}
|
|
81
|
+
// Send the payment with error classification
|
|
82
|
+
try {
|
|
83
|
+
const txHash = await wallet.sendUSDC({ to, amount, chainId });
|
|
84
|
+
return txHash;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (error instanceof PaymentError) {
|
|
88
|
+
// Already a PaymentError with context, rethrow
|
|
89
|
+
if (error.context) {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
// Wrap generic PaymentError with chain context
|
|
93
|
+
throw classifyPaymentError(error, chainId);
|
|
94
|
+
}
|
|
95
|
+
// Classify unknown errors
|
|
96
|
+
throw classifyPaymentError(error, chainId);
|
|
69
97
|
}
|
|
70
|
-
// Send the payment
|
|
71
|
-
const txHash = await wallet.sendUSDC({ to, amount, chainId });
|
|
72
|
-
return txHash;
|
|
73
98
|
}
|
|
74
99
|
/**
|
|
75
100
|
* Check if a response indicates payment is required
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/x402/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/x402/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* x402 Payment Error Classification Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides structured error classification and helpful error messages
|
|
5
|
+
* for blockchain payment errors.
|
|
6
|
+
*/
|
|
7
|
+
import { PaymentError } from "../errors.js";
|
|
8
|
+
export declare const MIN_ETH_FOR_GAS: bigint;
|
|
9
|
+
/**
|
|
10
|
+
* Get network name from chain ID
|
|
11
|
+
*/
|
|
12
|
+
export declare function getNetworkName(chainId: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get explorer URL for a transaction
|
|
15
|
+
*/
|
|
16
|
+
export declare function getExplorerUrl(chainId: number, txHash?: string): string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Format ETH balance for display
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatETHBalance(weiBalance: bigint): string;
|
|
21
|
+
/**
|
|
22
|
+
* Classify a blockchain error by examining error message patterns
|
|
23
|
+
*/
|
|
24
|
+
export declare function classifyPaymentError(error: Error, chainId: number): PaymentError;
|
|
25
|
+
/**
|
|
26
|
+
* Create an error for chain ID mismatch
|
|
27
|
+
*/
|
|
28
|
+
export declare function createChainMismatchError(walletChainId: number, requiredChainId: number): PaymentError;
|
|
29
|
+
/**
|
|
30
|
+
* Create an error for insufficient ETH (for gas)
|
|
31
|
+
*/
|
|
32
|
+
export declare function createInsufficientETHError(available: string, chainId: number): PaymentError;
|
|
33
|
+
/**
|
|
34
|
+
* Create an error for insufficient USDC
|
|
35
|
+
*/
|
|
36
|
+
export declare function createInsufficientUSDCError(required: string | undefined, available: string | undefined, chainId: number): PaymentError;
|
|
37
|
+
/**
|
|
38
|
+
* Create an error for already-paid jobs
|
|
39
|
+
*/
|
|
40
|
+
export declare function createAlreadyPaidError(txHash?: string, chainId?: number): PaymentError;
|
|
41
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,EAGb,MAAM,cAAc,CAAC;AAYtB,eAAO,MAAM,eAAe,QAA4B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOnF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,GACd,YAAY,CAwDd;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB,YAAY,CAcd;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,YAAY,CAkBd;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GACd,YAAY,CAoBd;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,YAAY,CAad"}
|