@pay-skill/sdk 0.1.1 → 0.1.3
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/README.md +154 -154
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -2
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +8 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +106 -54
- package/dist/client.js.map +1 -1
- package/dist/eip3009.d.ts +24 -0
- package/dist/eip3009.d.ts.map +1 -0
- package/dist/eip3009.js +56 -0
- package/dist/eip3009.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +35 -26
- package/dist/models.d.ts.map +1 -1
- package/dist/signer.d.ts +1 -1
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +1 -2
- package/dist/signer.js.map +1 -1
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallet.js +6 -3
- package/dist/wallet.js.map +1 -1
- package/jsr.json +12 -0
- package/package.json +48 -44
- package/src/auth.ts +200 -200
- package/src/client.ts +644 -644
- package/src/eip3009.ts +79 -79
- package/src/index.ts +51 -51
- package/src/models.ts +77 -77
- package/src/ows-signer.ts +223 -223
- package/src/signer.ts +147 -147
- package/src/wallet.ts +445 -445
- package/tests/test_auth_rejection.ts +154 -154
- package/tests/test_crypto.ts +251 -251
- package/tests/test_e2e.ts +158 -158
- package/tests/test_ows_integration.ts +92 -92
- package/tests/test_ows_signer.ts +365 -365
- package/tests/test_validation.ts +66 -66
package/README.md
CHANGED
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
# @pay-skill/sdk
|
|
2
|
-
|
|
3
|
-
TypeScript SDK for [pay](https://pay-skill.com) — payment infrastructure for AI agents. USDC on Base.
|
|
4
|
-
|
|
5
|
-
Three primitives: direct payments, tabs (pre-funded metered accounts), and x402 HTTP paywalls.
|
|
6
|
-
|
|
7
|
-
## Install
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm install @pay-skill/sdk
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Requires Node.js 20+.
|
|
14
|
-
|
|
15
|
-
## Quick Start
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
import { PayClient } from "@pay-skill/sdk";
|
|
19
|
-
|
|
20
|
-
const client = new PayClient({ signer: "cli" }); // uses `pay sign` subprocess
|
|
21
|
-
|
|
22
|
-
// Pay another agent $5
|
|
23
|
-
const result = await client.payDirect("0xprovider...", 5_000_000, { memo: "task-42" });
|
|
24
|
-
console.log(result.txHash);
|
|
25
|
-
|
|
26
|
-
// Open a metered tab
|
|
27
|
-
const tab = await client.openTab("0xprovider...", 20_000_000, { maxChargePerCall: 500_000 });
|
|
28
|
-
|
|
29
|
-
// x402 request (SDK handles payment automatically)
|
|
30
|
-
const response = await client.request("https://api.example.com/data");
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
All amounts are in USDC micro-units (6 decimals). `$1.00 = 1_000_000`.
|
|
34
|
-
|
|
35
|
-
## API Reference
|
|
36
|
-
|
|
37
|
-
### PayClient
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
import { PayClient } from "@pay-skill/sdk";
|
|
41
|
-
|
|
42
|
-
const client = new PayClient({
|
|
43
|
-
apiUrl: "https://pay-skill.com/api/v1", // default
|
|
44
|
-
signer: "cli", // "cli", "raw", "custom", or a Signer instance
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Direct Payment
|
|
49
|
-
|
|
50
|
-
One-shot USDC transfer. $1.00 minimum.
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
const result = await client.payDirect(to, amount, { memo });
|
|
54
|
-
// Returns: { txHash, status, amount, fee }
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Tab Management
|
|
58
|
-
|
|
59
|
-
Pre-funded metered account. $5.00 minimum to open.
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
// Open
|
|
63
|
-
const tab = await client.openTab(provider, amount, { maxChargePerCall });
|
|
64
|
-
|
|
65
|
-
// Query
|
|
66
|
-
const tabs = await client.listTabs();
|
|
67
|
-
const tab = await client.getTab(tabId);
|
|
68
|
-
|
|
69
|
-
// Top up (no extra activation fee)
|
|
70
|
-
const tab = await client.topUpTab(tabId, amount);
|
|
71
|
-
|
|
72
|
-
// Close (either party, unilateral)
|
|
73
|
-
const tab = await client.closeTab(tabId);
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Returns `Tab { tabId, provider, amount, balanceRemaining, totalCharged, chargeCount, maxChargePerCall, status }`.
|
|
77
|
-
|
|
78
|
-
### x402 Requests
|
|
79
|
-
|
|
80
|
-
Transparent HTTP 402 handling. The SDK detects `402 Payment Required`, pays (via direct or tab), and retries.
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
const response = await client.request(url, { method, body, headers });
|
|
84
|
-
// Returns: Response (native fetch Response)
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
If the provider requires tab settlement, the SDK auto-opens a tab at 10x the per-call price (minimum $5).
|
|
88
|
-
|
|
89
|
-
### Wallet
|
|
90
|
-
|
|
91
|
-
```typescript
|
|
92
|
-
const status = await client.getStatus();
|
|
93
|
-
// Returns: { address, balance, openTabs }
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Webhooks
|
|
97
|
-
|
|
98
|
-
```typescript
|
|
99
|
-
const wh = await client.registerWebhook(url, { events: ["tab.opened"], secret: "whsec_..." });
|
|
100
|
-
const webhooks = await client.listWebhooks();
|
|
101
|
-
await client.deleteWebhook(webhookId);
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Funding
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
const fundUrl = await client.createFundLink(10_000_000); // Coinbase Onramp
|
|
108
|
-
const withdrawUrl = await client.createWithdrawLink(5_000_000);
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## Signer Modes
|
|
112
|
-
|
|
113
|
-
| Mode | Usage | When |
|
|
114
|
-
|------|-------|------|
|
|
115
|
-
| `"cli"` | Subprocess call to `pay sign` | Default. Key in OS keychain. |
|
|
116
|
-
| `"raw"` | `PAYSKILL_KEY` env var | Dev/testing only. |
|
|
117
|
-
| `"custom"` | Your own callback | Custom key management. |
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
// CLI signer (default)
|
|
121
|
-
const client = new PayClient({ signer: "cli" });
|
|
122
|
-
|
|
123
|
-
// Raw key (dev only)
|
|
124
|
-
const client = new PayClient({ signer: "raw", signerOptions: { key: "0xdead..." } });
|
|
125
|
-
|
|
126
|
-
// Custom callback
|
|
127
|
-
import { CallbackSigner } from "@pay-skill/sdk";
|
|
128
|
-
const signer = new CallbackSigner((hash: Uint8Array) => mySign(hash));
|
|
129
|
-
const client = new PayClient({ signer });
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## Error Handling
|
|
133
|
-
|
|
134
|
-
```typescript
|
|
135
|
-
import {
|
|
136
|
-
PayError, // Base class
|
|
137
|
-
PayValidationError, // Bad input (has .field)
|
|
138
|
-
PayNetworkError, // Connection failed
|
|
139
|
-
PayServerError, // Server returned error (has .statusCode)
|
|
140
|
-
PayInsufficientFundsError, // Not enough USDC
|
|
141
|
-
} from "@pay-skill/sdk";
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Configuration
|
|
145
|
-
|
|
146
|
-
| Env Var | Purpose |
|
|
147
|
-
|---------|---------|
|
|
148
|
-
| `PAYSKILL_KEY` | Private key for raw signer mode |
|
|
149
|
-
|
|
150
|
-
The API URL is configurable via the `apiUrl` option. Default: `https://pay-skill.com/api/v1`.
|
|
151
|
-
|
|
152
|
-
## License
|
|
153
|
-
|
|
154
|
-
MIT
|
|
1
|
+
# @pay-skill/sdk
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for [pay](https://pay-skill.com) — payment infrastructure for AI agents. USDC on Base.
|
|
4
|
+
|
|
5
|
+
Three primitives: direct payments, tabs (pre-funded metered accounts), and x402 HTTP paywalls.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @pay-skill/sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires Node.js 20+.
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { PayClient } from "@pay-skill/sdk";
|
|
19
|
+
|
|
20
|
+
const client = new PayClient({ signer: "cli" }); // uses `pay sign` subprocess
|
|
21
|
+
|
|
22
|
+
// Pay another agent $5
|
|
23
|
+
const result = await client.payDirect("0xprovider...", 5_000_000, { memo: "task-42" });
|
|
24
|
+
console.log(result.txHash);
|
|
25
|
+
|
|
26
|
+
// Open a metered tab
|
|
27
|
+
const tab = await client.openTab("0xprovider...", 20_000_000, { maxChargePerCall: 500_000 });
|
|
28
|
+
|
|
29
|
+
// x402 request (SDK handles payment automatically)
|
|
30
|
+
const response = await client.request("https://api.example.com/data");
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
All amounts are in USDC micro-units (6 decimals). `$1.00 = 1_000_000`.
|
|
34
|
+
|
|
35
|
+
## API Reference
|
|
36
|
+
|
|
37
|
+
### PayClient
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { PayClient } from "@pay-skill/sdk";
|
|
41
|
+
|
|
42
|
+
const client = new PayClient({
|
|
43
|
+
apiUrl: "https://pay-skill.com/api/v1", // default
|
|
44
|
+
signer: "cli", // "cli", "raw", "custom", or a Signer instance
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Direct Payment
|
|
49
|
+
|
|
50
|
+
One-shot USDC transfer. $1.00 minimum.
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const result = await client.payDirect(to, amount, { memo });
|
|
54
|
+
// Returns: { txHash, status, amount, fee }
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Tab Management
|
|
58
|
+
|
|
59
|
+
Pre-funded metered account. $5.00 minimum to open.
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// Open
|
|
63
|
+
const tab = await client.openTab(provider, amount, { maxChargePerCall });
|
|
64
|
+
|
|
65
|
+
// Query
|
|
66
|
+
const tabs = await client.listTabs();
|
|
67
|
+
const tab = await client.getTab(tabId);
|
|
68
|
+
|
|
69
|
+
// Top up (no extra activation fee)
|
|
70
|
+
const tab = await client.topUpTab(tabId, amount);
|
|
71
|
+
|
|
72
|
+
// Close (either party, unilateral)
|
|
73
|
+
const tab = await client.closeTab(tabId);
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Returns `Tab { tabId, provider, amount, balanceRemaining, totalCharged, chargeCount, maxChargePerCall, status }`.
|
|
77
|
+
|
|
78
|
+
### x402 Requests
|
|
79
|
+
|
|
80
|
+
Transparent HTTP 402 handling. The SDK detects `402 Payment Required`, pays (via direct or tab), and retries.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const response = await client.request(url, { method, body, headers });
|
|
84
|
+
// Returns: Response (native fetch Response)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
If the provider requires tab settlement, the SDK auto-opens a tab at 10x the per-call price (minimum $5).
|
|
88
|
+
|
|
89
|
+
### Wallet
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const status = await client.getStatus();
|
|
93
|
+
// Returns: { address, balance, openTabs }
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Webhooks
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
const wh = await client.registerWebhook(url, { events: ["tab.opened"], secret: "whsec_..." });
|
|
100
|
+
const webhooks = await client.listWebhooks();
|
|
101
|
+
await client.deleteWebhook(webhookId);
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Funding
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
const fundUrl = await client.createFundLink(10_000_000); // Coinbase Onramp
|
|
108
|
+
const withdrawUrl = await client.createWithdrawLink(5_000_000);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Signer Modes
|
|
112
|
+
|
|
113
|
+
| Mode | Usage | When |
|
|
114
|
+
|------|-------|------|
|
|
115
|
+
| `"cli"` | Subprocess call to `pay sign` | Default. Key in OS keychain. |
|
|
116
|
+
| `"raw"` | `PAYSKILL_KEY` env var | Dev/testing only. |
|
|
117
|
+
| `"custom"` | Your own callback | Custom key management. |
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// CLI signer (default)
|
|
121
|
+
const client = new PayClient({ signer: "cli" });
|
|
122
|
+
|
|
123
|
+
// Raw key (dev only)
|
|
124
|
+
const client = new PayClient({ signer: "raw", signerOptions: { key: "0xdead..." } });
|
|
125
|
+
|
|
126
|
+
// Custom callback
|
|
127
|
+
import { CallbackSigner } from "@pay-skill/sdk";
|
|
128
|
+
const signer = new CallbackSigner((hash: Uint8Array) => mySign(hash));
|
|
129
|
+
const client = new PayClient({ signer });
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Error Handling
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import {
|
|
136
|
+
PayError, // Base class
|
|
137
|
+
PayValidationError, // Bad input (has .field)
|
|
138
|
+
PayNetworkError, // Connection failed
|
|
139
|
+
PayServerError, // Server returned error (has .statusCode)
|
|
140
|
+
PayInsufficientFundsError, // Not enough USDC
|
|
141
|
+
} from "@pay-skill/sdk";
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Configuration
|
|
145
|
+
|
|
146
|
+
| Env Var | Purpose |
|
|
147
|
+
|---------|---------|
|
|
148
|
+
| `PAYSKILL_KEY` | Private key for raw signer mode |
|
|
149
|
+
|
|
150
|
+
The API URL is configurable via the `apiUrl` option. Default: `https://pay-skill.com/api/v1`.
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
MIT
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,GAAG,EAA2B,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAIvE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAgBD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,GAAG,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE;IAAE,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC/D,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,WAAW,CAsBb;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,OAAO,GACzB,UAAU,CA4DZ"}
|
package/dist/auth.js
CHANGED
|
@@ -92,12 +92,12 @@ export function computeEip712Hash(method, path, timestamp, nonce, chainId, verif
|
|
|
92
92
|
// Domain separator
|
|
93
93
|
const nameHash = keccak256(encodePacked(["string"], ["pay"]));
|
|
94
94
|
const versionHash = keccak256(encodePacked(["string"], ["0.1"]));
|
|
95
|
-
const domainSeparator = keccak256(encodePacked(["bytes32", "bytes32", "bytes32", "uint256", "
|
|
95
|
+
const domainSeparator = keccak256(encodePacked(["bytes32", "bytes32", "bytes32", "uint256", "bytes32"], [
|
|
96
96
|
domainTypehash,
|
|
97
97
|
nameHash,
|
|
98
98
|
versionHash,
|
|
99
99
|
BigInt(chainId),
|
|
100
|
-
verifyingContract,
|
|
100
|
+
("0x000000000000000000000000" + verifyingContract.slice(2)),
|
|
101
101
|
]));
|
|
102
102
|
// Struct hash
|
|
103
103
|
const methodHash = keccak256(encodePacked(["string"], [method]));
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAY,SAAS,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PayClient — single entry point for the pay SDK.
|
|
3
3
|
*/
|
|
4
|
-
import type { DirectPaymentResult, StatusResponse, Tab, WebhookRegistration } from "./models.js";
|
|
4
|
+
import type { DirectPaymentResult, DiscoverOptions, DiscoverService, StatusResponse, Tab, WebhookRegistration } from "./models.js";
|
|
5
5
|
import type { Signer } from "./signer.js";
|
|
6
6
|
export declare const DEFAULT_API_URL = "https://pay-skill.com/api/v1";
|
|
7
7
|
export interface PayClientOptions {
|
|
@@ -27,7 +27,10 @@ export declare class PayClient {
|
|
|
27
27
|
private readonly signer;
|
|
28
28
|
private readonly _privateKey;
|
|
29
29
|
private readonly _authConfig;
|
|
30
|
+
private readonly _chainId;
|
|
31
|
+
private readonly _address;
|
|
30
32
|
constructor(options?: PayClientOptions);
|
|
33
|
+
private getContracts;
|
|
31
34
|
payDirect(to: string, amount: number, options?: {
|
|
32
35
|
memo?: string;
|
|
33
36
|
}): Promise<DirectPaymentResult>;
|
|
@@ -35,7 +38,6 @@ export declare class PayClient {
|
|
|
35
38
|
maxChargePerCall: number;
|
|
36
39
|
}): Promise<Tab>;
|
|
37
40
|
closeTab(tabId: string): Promise<Tab>;
|
|
38
|
-
withdrawTab(tabId: string): Promise<Tab>;
|
|
39
41
|
topUpTab(tabId: string, amount: number): Promise<Tab>;
|
|
40
42
|
listTabs(): Promise<Tab[]>;
|
|
41
43
|
getTab(tabId: string): Promise<Tab>;
|
|
@@ -49,13 +51,10 @@ export declare class PayClient {
|
|
|
49
51
|
* Parse x402 V2 payment requirements from a 402 response.
|
|
50
52
|
*
|
|
51
53
|
* Checks PAYMENT-REQUIRED header first (base64-encoded JSON),
|
|
52
|
-
* falls back to response body
|
|
53
|
-
* a non-empty `accepts` array.
|
|
54
|
+
* falls back to response body for requirements.
|
|
54
55
|
*/
|
|
55
56
|
private parse402Requirements;
|
|
56
|
-
|
|
57
|
-
private tryParseV2;
|
|
58
|
-
private extractFromAccepted;
|
|
57
|
+
private static extractRequirements;
|
|
59
58
|
private handle402;
|
|
60
59
|
private settleViaDirect;
|
|
61
60
|
private settleViaTab;
|
|
@@ -76,6 +75,8 @@ export declare class PayClient {
|
|
|
76
75
|
messages?: unknown[];
|
|
77
76
|
agentName?: string;
|
|
78
77
|
}): Promise<string>;
|
|
78
|
+
/** Search for discoverable paid API services. Public, no auth required. */
|
|
79
|
+
discover(options?: DiscoverOptions): Promise<DiscoverService[]>;
|
|
79
80
|
/**
|
|
80
81
|
* Prepare and sign a USDC EIP-2612 permit.
|
|
81
82
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,mBAAmB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|