@pay-skill/sdk 0.1.7 → 0.1.10
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 +80 -91
- package/dist/auth.d.ts +11 -6
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +19 -7
- package/dist/auth.js.map +1 -1
- package/dist/errors.d.ts +4 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -3
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -6
- package/dist/index.js.map +1 -1
- package/dist/keychain.d.ts +8 -0
- package/dist/keychain.d.ts.map +1 -0
- package/dist/keychain.js +17 -0
- package/dist/keychain.js.map +1 -0
- package/dist/wallet.d.ts +135 -104
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallet.js +683 -280
- package/dist/wallet.js.map +1 -1
- package/jsr.json +1 -1
- package/package.json +5 -2
- package/src/auth.ts +28 -18
- package/src/errors.ts +10 -3
- package/src/index.ts +12 -39
- package/src/keychain.ts +18 -0
- package/src/wallet.ts +1074 -355
- package/tests/test_auth_rejection.ts +43 -95
- package/tests/test_crypto.ts +59 -172
- package/tests/test_e2e.ts +46 -105
- package/tests/test_errors.ts +9 -1
- package/tests/test_ows.ts +153 -0
- package/tests/test_wallet.ts +194 -0
- package/dist/client.d.ts +0 -94
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -443
- package/dist/client.js.map +0 -1
- package/dist/models.d.ts +0 -78
- package/dist/models.d.ts.map +0 -1
- package/dist/models.js +0 -2
- package/dist/models.js.map +0 -1
- package/dist/ows-signer.d.ts +0 -75
- package/dist/ows-signer.d.ts.map +0 -1
- package/dist/ows-signer.js +0 -130
- package/dist/ows-signer.js.map +0 -1
- package/dist/signer.d.ts +0 -46
- package/dist/signer.d.ts.map +0 -1
- package/dist/signer.js +0 -111
- package/dist/signer.js.map +0 -1
- package/src/client.ts +0 -644
- package/src/models.ts +0 -77
- package/src/ows-signer.ts +0 -223
- package/src/signer.ts +0 -147
- package/tests/test_ows_integration.ts +0 -92
- package/tests/test_ows_signer.ts +0 -365
- package/tests/test_signer.ts +0 -47
- package/tests/test_validation.ts +0 -66
package/README.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# @pay-skill/sdk
|
|
2
2
|
|
|
3
|
-
TypeScript SDK for [pay](https://pay-skill.com)
|
|
3
|
+
TypeScript SDK for [pay](https://pay-skill.com) -- payment infrastructure for AI agents. USDC on Base.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```ts
|
|
6
|
+
import { Wallet } from "@pay-skill/sdk";
|
|
7
|
+
|
|
8
|
+
const wallet = new Wallet();
|
|
9
|
+
await wallet.send("0xProvider...", 5, "for API access");
|
|
10
|
+
```
|
|
6
11
|
|
|
7
12
|
## Install
|
|
8
13
|
|
|
@@ -10,144 +15,128 @@ Three primitives: direct payments, tabs (pre-funded metered accounts), and x402
|
|
|
10
15
|
npm install @pay-skill/sdk
|
|
11
16
|
```
|
|
12
17
|
|
|
13
|
-
Requires Node.js 20+.
|
|
14
|
-
|
|
15
18
|
## Quick Start
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
import { PayClient } from "@pay-skill/sdk";
|
|
20
|
+
### Zero-config (env var)
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
Set `PAYSKILL_KEY` to your hex private key:
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
24
|
+
```ts
|
|
25
|
+
const wallet = new Wallet();
|
|
26
|
+
const { txHash } = await wallet.send("0xRecipient...", 10);
|
|
27
|
+
```
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
const tab = await client.openTab("0xprovider...", 20_000_000, { maxChargePerCall: 500_000 });
|
|
29
|
+
### Explicit key
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
+
```ts
|
|
32
|
+
const wallet = new Wallet({ privateKey: "0xdead..." });
|
|
31
33
|
```
|
|
32
34
|
|
|
33
|
-
|
|
35
|
+
### OS keychain (same key as `pay` CLI)
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
```ts
|
|
38
|
+
const wallet = await Wallet.create();
|
|
39
|
+
```
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
import { PayClient } from "@pay-skill/sdk";
|
|
41
|
+
### Testnet
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
```ts
|
|
44
|
+
const wallet = new Wallet({ testnet: true });
|
|
45
|
+
// or: PAYSKILL_TESTNET=1
|
|
46
|
+
await wallet.mint(100); // mint $100 test USDC
|
|
46
47
|
```
|
|
47
48
|
|
|
48
|
-
###
|
|
49
|
+
### OWS (Open Wallet Standard)
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
const result = await client.payDirect(to, amount, { memo });
|
|
54
|
-
// Returns: { txHash, status, amount, fee }
|
|
51
|
+
```ts
|
|
52
|
+
const wallet = await Wallet.fromOws({ walletId: "my-agent" });
|
|
55
53
|
```
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Pre-funded metered account. $5.00 minimum to open.
|
|
55
|
+
Requires `@open-wallet-standard/core` as a peer dependency.
|
|
60
56
|
|
|
61
|
-
|
|
62
|
-
// Open
|
|
63
|
-
const tab = await client.openTab(provider, amount, { maxChargePerCall });
|
|
57
|
+
## API
|
|
64
58
|
|
|
65
|
-
|
|
66
|
-
const tabs = await client.listTabs();
|
|
67
|
-
const tab = await client.getTab(tabId);
|
|
59
|
+
All amounts are in dollars by default. Use `{ micro: N }` for micro-USDC precision.
|
|
68
60
|
|
|
69
|
-
|
|
70
|
-
const tab = await client.topUpTab(tabId, amount);
|
|
61
|
+
### Payments
|
|
71
62
|
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
```ts
|
|
64
|
+
await wallet.send(to, 5); // $5 direct payment
|
|
65
|
+
await wallet.send(to, 5, "invoice #42"); // with memo
|
|
66
|
+
await wallet.send(to, { micro: 5_000_000 }); // micro-USDC
|
|
74
67
|
```
|
|
75
68
|
|
|
76
|
-
|
|
69
|
+
### Tabs (pre-funded metered accounts)
|
|
77
70
|
|
|
78
|
-
|
|
71
|
+
```ts
|
|
72
|
+
const tab = await wallet.openTab(provider, 50, 1); // $50 tab, $1 max/charge
|
|
73
|
+
await wallet.chargeTab(tab.id, 0.01); // charge $0.01
|
|
74
|
+
await wallet.topUpTab(tab.id, 25); // add $25
|
|
75
|
+
await wallet.closeTab(tab.id); // close + settle
|
|
76
|
+
const tabs = await wallet.listTabs();
|
|
77
|
+
const tab = await wallet.getTab(tabId);
|
|
78
|
+
```
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
### x402 (paid HTTP)
|
|
81
81
|
|
|
82
|
-
```
|
|
83
|
-
const
|
|
84
|
-
//
|
|
82
|
+
```ts
|
|
83
|
+
const resp = await wallet.request("https://api.example.com/data");
|
|
84
|
+
// Handles 402 responses automatically: pays, retries, returns final response
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
If the provider requires tab settlement, the SDK auto-opens a tab at 10x the per-call price (minimum $5).
|
|
88
|
-
|
|
89
87
|
### Wallet
|
|
90
88
|
|
|
91
|
-
```
|
|
92
|
-
const
|
|
93
|
-
//
|
|
89
|
+
```ts
|
|
90
|
+
const bal = await wallet.balance(); // { total, locked, available }
|
|
91
|
+
const info = await wallet.status(); // { address, balance, openTabs }
|
|
94
92
|
```
|
|
95
93
|
|
|
96
|
-
###
|
|
94
|
+
### Discovery
|
|
97
95
|
|
|
98
|
-
```
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
```ts
|
|
97
|
+
const services = await wallet.discover("weather");
|
|
98
|
+
// Or without a wallet:
|
|
99
|
+
import { discover } from "@pay-skill/sdk";
|
|
100
|
+
const services = await discover("weather");
|
|
102
101
|
```
|
|
103
102
|
|
|
104
103
|
### Funding
|
|
105
104
|
|
|
106
|
-
```
|
|
107
|
-
const
|
|
108
|
-
const
|
|
105
|
+
```ts
|
|
106
|
+
const url = await wallet.createFundLink({ message: "Need $50 for API calls" });
|
|
107
|
+
const url = await wallet.createWithdrawLink();
|
|
109
108
|
```
|
|
110
109
|
|
|
111
|
-
|
|
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. |
|
|
110
|
+
### Webhooks
|
|
118
111
|
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
const
|
|
112
|
+
```ts
|
|
113
|
+
const wh = await wallet.registerWebhook("https://example.com/hook", ["payment.completed"]);
|
|
114
|
+
const hooks = await wallet.listWebhooks();
|
|
115
|
+
await wallet.deleteWebhook(wh.id);
|
|
116
|
+
```
|
|
122
117
|
|
|
123
|
-
|
|
124
|
-
const client = new PayClient({ signer: "raw", signerOptions: { key: "0xdead..." } });
|
|
118
|
+
### Testnet
|
|
125
119
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const signer = new CallbackSigner((hash: Uint8Array) => mySign(hash));
|
|
129
|
-
const client = new PayClient({ signer });
|
|
120
|
+
```ts
|
|
121
|
+
await wallet.mint(100); // mint $100 test USDC (testnet only)
|
|
130
122
|
```
|
|
131
123
|
|
|
132
|
-
##
|
|
124
|
+
## Errors
|
|
133
125
|
|
|
134
|
-
```
|
|
126
|
+
```ts
|
|
135
127
|
import {
|
|
136
|
-
PayError, //
|
|
137
|
-
PayValidationError, //
|
|
138
|
-
PayNetworkError, //
|
|
139
|
-
PayServerError, //
|
|
140
|
-
PayInsufficientFundsError, //
|
|
128
|
+
PayError, // base
|
|
129
|
+
PayValidationError, // invalid input
|
|
130
|
+
PayNetworkError, // network failure
|
|
131
|
+
PayServerError, // server 4xx/5xx
|
|
132
|
+
PayInsufficientFundsError, // low balance (hints createFundLink)
|
|
141
133
|
} from "@pay-skill/sdk";
|
|
142
134
|
```
|
|
143
135
|
|
|
144
|
-
##
|
|
145
|
-
|
|
146
|
-
| Env Var | Purpose |
|
|
147
|
-
|---------|---------|
|
|
148
|
-
| `PAYSKILL_KEY` | Private key for raw signer mode |
|
|
136
|
+
## Requirements
|
|
149
137
|
|
|
150
|
-
|
|
138
|
+
- Node.js 18+
|
|
139
|
+
- ESM only
|
|
151
140
|
|
|
152
141
|
## License
|
|
153
142
|
|
package/dist/auth.d.ts
CHANGED
|
@@ -32,13 +32,18 @@ export interface AuthHeaders {
|
|
|
32
32
|
*/
|
|
33
33
|
export declare function buildAuthHeaders(privateKey: Hex, method: string, path: string, config: AuthConfig): Promise<AuthHeaders>;
|
|
34
34
|
/**
|
|
35
|
-
* Build auth headers using a
|
|
36
|
-
*
|
|
35
|
+
* Build auth headers using a signTypedData function.
|
|
36
|
+
* Used by OWS signers and any non-raw-key signing path.
|
|
37
37
|
*/
|
|
38
|
-
export declare function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
export declare function buildAuthHeadersSigned(address: string, signTypedData: (params: {
|
|
39
|
+
domain: Record<string, unknown>;
|
|
40
|
+
types: Record<string, readonly {
|
|
41
|
+
name: string;
|
|
42
|
+
type: string;
|
|
43
|
+
}[]>;
|
|
44
|
+
primaryType: string;
|
|
45
|
+
message: Record<string, unknown>;
|
|
46
|
+
}) => Promise<string>, method: string, path: string, config: AuthConfig): Promise<AuthHeaders>;
|
|
42
47
|
/**
|
|
43
48
|
* Compute the EIP-712 hash for an APIRequest.
|
|
44
49
|
* Must match the server's computation exactly.
|
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,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,
|
|
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,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,KAAK,OAAO,CAAC,MAAM,CAAC,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,WAAW,CAAC,CA0BtB;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
|
@@ -61,17 +61,29 @@ export async function buildAuthHeaders(privateKey, method, path, config) {
|
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Build auth headers using a
|
|
65
|
-
*
|
|
64
|
+
* Build auth headers using a signTypedData function.
|
|
65
|
+
* Used by OWS signers and any non-raw-key signing path.
|
|
66
66
|
*/
|
|
67
|
-
export function
|
|
67
|
+
export async function buildAuthHeadersSigned(address, signTypedData, method, path, config) {
|
|
68
68
|
const timestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
69
69
|
const nonce = ("0x" + randomBytes(32).toString("hex"));
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
const signature = await signTypedData({
|
|
71
|
+
domain: {
|
|
72
|
+
...EIP712_DOMAIN,
|
|
73
|
+
chainId: config.chainId,
|
|
74
|
+
verifyingContract: config.routerAddress,
|
|
75
|
+
},
|
|
76
|
+
types: API_REQUEST_TYPES,
|
|
77
|
+
primaryType: "APIRequest",
|
|
78
|
+
message: {
|
|
79
|
+
method: method.toUpperCase(),
|
|
80
|
+
path,
|
|
81
|
+
timestamp,
|
|
82
|
+
nonce,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
73
85
|
return {
|
|
74
|
-
"X-Pay-Agent":
|
|
86
|
+
"X-Pay-Agent": address,
|
|
75
87
|
"X-Pay-Signature": signature,
|
|
76
88
|
"X-Pay-Timestamp": timestamp.toString(),
|
|
77
89
|
"X-Pay-Nonce": nonce,
|
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,EAAgB,MAAM,MAAM,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAc1C,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;CACN,CAAC;AAEX,MAAM,iBAAiB,GAAG;IACxB,UAAU,EAAE;QACV,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;QACtC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;KACnC;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAe,EACf,MAAc,EACd,IAAY,EACZ,MAAkB;IAElB,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAQ,CAAC;IAE9D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;QAC5C,MAAM,EAAE;YACN,GAAG,aAAa;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,iBAAiB,EAAE,MAAM,CAAC,aAAa;SACxC;QACD,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,IAAI;YACJ,SAAS;YACT,KAAK;SACN;KACF,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,OAAO;QAC9B,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAE;QACvC,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -17,8 +17,10 @@ export declare class PayServerError extends PayError {
|
|
|
17
17
|
readonly statusCode: number;
|
|
18
18
|
constructor(message: string, statusCode: number);
|
|
19
19
|
}
|
|
20
|
-
/** Insufficient USDC balance. */
|
|
20
|
+
/** Insufficient USDC balance. Includes fund link hint for agents. */
|
|
21
21
|
export declare class PayInsufficientFundsError extends PayError {
|
|
22
|
-
|
|
22
|
+
readonly balance: number;
|
|
23
|
+
readonly required: number;
|
|
24
|
+
constructor(message: string, balance?: number, required?: number);
|
|
23
25
|
}
|
|
24
26
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAKhD;AAED,+BAA+B;AAC/B,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAK5C;AAED,8CAA8C;AAC9C,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,yCAAyC;AACzC,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAKhD;AAED,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAKhD;AAED,+BAA+B;AAC/B,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAK5C;AAED,8CAA8C;AAC9C,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,yCAAyC;AACzC,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAKhD;AAED,qEAAqE;AACrE,qBAAa,yBAA0B,SAAQ,QAAQ;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,SAAI,EAAE,QAAQ,SAAI;CAQvD"}
|
package/dist/errors.js
CHANGED
|
@@ -32,11 +32,16 @@ export class PayServerError extends PayError {
|
|
|
32
32
|
this.statusCode = statusCode;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
/** Insufficient USDC balance. */
|
|
35
|
+
/** Insufficient USDC balance. Includes fund link hint for agents. */
|
|
36
36
|
export class PayInsufficientFundsError extends PayError {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
balance;
|
|
38
|
+
required;
|
|
39
|
+
constructor(message, balance = 0, required = 0) {
|
|
40
|
+
const hint = '\nUse wallet.createFundLink({ message: "Need funds" }) to request funding.';
|
|
41
|
+
super(message + hint, "insufficient_funds");
|
|
39
42
|
this.name = "PayInsufficientFundsError";
|
|
43
|
+
this.balance = balance;
|
|
44
|
+
this.required = required;
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IAEtB,YAAY,OAAe,EAAE,IAAI,GAAG,WAAW;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IACrC,KAAK,CAAU;IAExB,YAAY,OAAe,EAAE,KAAc;QACzC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,8CAA8C;AAC9C,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,yCAAyC;AACzC,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACjC,UAAU,CAAS;IAE5B,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IAEtB,YAAY,OAAe,EAAE,IAAI,GAAG,WAAW;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IACrC,KAAK,CAAU;IAExB,YAAY,OAAe,EAAE,KAAc;QACzC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,8CAA8C;AAC9C,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,yCAAyC;AACzC,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACjC,UAAU,CAAS;IAE5B,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,yBAA0B,SAAQ,QAAQ;IAC5C,OAAO,CAAS;IAChB,QAAQ,CAAS;IAE1B,YAAY,OAAe,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC;QACpD,MAAM,IAAI,GACR,4EAA4E,CAAC;QAC/E,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
export { PayClient, DEFAULT_API_URL } from "./client.js";
|
|
2
|
-
export type { PayClientOptions } from "./client.js";
|
|
3
1
|
export { PayError, PayValidationError, PayNetworkError, PayServerError, PayInsufficientFundsError, } from "./errors.js";
|
|
4
|
-
export
|
|
5
|
-
export type {
|
|
6
|
-
export { CliSigner, RawKeySigner, CallbackSigner, createSigner, } from "./signer.js";
|
|
7
|
-
export { OwsSigner } from "./ows-signer.js";
|
|
8
|
-
export type { OwsSignerOptions } from "./ows-signer.js";
|
|
9
|
-
export { Wallet, PrivateKeySigner } from "./wallet.js";
|
|
10
|
-
export type { WalletOptions, FundLinkOptions, PermitResult, } from "./wallet.js";
|
|
11
|
-
export { buildAuthHeaders, buildAuthHeadersWithSigner, computeEip712Hash, } from "./auth.js";
|
|
12
|
-
export type { AuthConfig, AuthHeaders } from "./auth.js";
|
|
13
|
-
export { signTransferAuthorization, combinedSignature, } from "./eip3009.js";
|
|
14
|
-
export type { TransferAuthorization } from "./eip3009.js";
|
|
2
|
+
export { Wallet, discover } from "./wallet.js";
|
|
3
|
+
export type { Amount, WalletOptions, OwsWalletOptions, SendResult, Tab, ChargeResult, Balance, Status, DiscoverService, DiscoverOptions, FundLinkOptions, WebhookRegistration, MintResult, } from "./wallet.js";
|
|
15
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EACV,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,GAAG,EACH,YAAY,EACZ,OAAO,EACP,MAAM,EACN,eAAe,EACf,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,UAAU,GACX,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
export { PayClient, DEFAULT_API_URL } from "./client.js";
|
|
2
1
|
export { PayError, PayValidationError, PayNetworkError, PayServerError, PayInsufficientFundsError, } from "./errors.js";
|
|
3
|
-
export {
|
|
4
|
-
export { OwsSigner } from "./ows-signer.js";
|
|
5
|
-
export { Wallet, PrivateKeySigner } from "./wallet.js";
|
|
6
|
-
export { buildAuthHeaders, buildAuthHeadersWithSigner, computeEip712Hash, } from "./auth.js";
|
|
7
|
-
export { signTransferAuthorization, combinedSignature, } from "./eip3009.js";
|
|
2
|
+
export { Wallet, discover } from "./wallet.js";
|
|
8
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OS keychain reader — reads the private key stored by `pay` CLI.
|
|
3
|
+
* Service: "pay", account: "default".
|
|
4
|
+
*
|
|
5
|
+
* keytar is an optional dependency. If not installed, returns null.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readFromKeychain(): Promise<string | null>;
|
|
8
|
+
//# sourceMappingURL=keychain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU/D"}
|
package/dist/keychain.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OS keychain reader — reads the private key stored by `pay` CLI.
|
|
3
|
+
* Service: "pay", account: "default".
|
|
4
|
+
*
|
|
5
|
+
* keytar is an optional dependency. If not installed, returns null.
|
|
6
|
+
*/
|
|
7
|
+
export async function readFromKeychain() {
|
|
8
|
+
try {
|
|
9
|
+
const moduleName = "keytar";
|
|
10
|
+
const keytar = (await import(moduleName));
|
|
11
|
+
return await keytar.default.getPassword("pay", "default");
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=keychain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAEvC,CAAC;QACF,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|