@vapi-network/core 0.2.2 → 0.3.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.
@@ -1,19 +1,31 @@
1
1
  import { z } from "zod";
2
2
  import { type SpendCaps } from "./config.js";
3
+ import { type WalletName } from "./wallet-name.js";
3
4
  declare const ledgerSchema: z.ZodObject<{
4
5
  date: z.ZodString;
5
6
  spentAtomic: z.ZodString;
6
7
  }, z.core.$strip>;
7
8
  export type SpendLedger = z.infer<typeof ledgerSchema>;
9
+ export type SpendLedgerRow = SpendLedger & {
10
+ wallet: WalletName;
11
+ };
8
12
  export declare class SpendCapError extends Error {
9
13
  readonly code: "per_call_cap_exceeded" | "per_day_cap_exceeded";
10
14
  constructor(code: "per_call_cap_exceeded" | "per_day_cap_exceeded", message: string);
11
15
  }
12
16
  export declare function utcDateKey(now?: Date): string;
13
- export declare function readSpendLedger(path?: string, now?: Date): Promise<SpendLedger>;
17
+ /** Today's spend for one wallet. Other wallets and older days read as zero. */
18
+ export declare function readSpendLedger(path?: string, now?: Date, wallet?: WalletName): Promise<SpendLedger>;
19
+ /** Today's spend of every wallet that has spent today. */
20
+ export declare function readSpendLedgerRows(path?: string, now?: Date): Promise<SpendLedgerRow[]>;
21
+ /**
22
+ * Reserves one payment against the caps of one wallet. Per-day totals are kept
23
+ * per wallet, so an agent wallet cannot spend the owner's daily allowance.
24
+ */
14
25
  export declare function reserveSpend(amountAtomic: bigint, caps: SpendCaps, options?: {
15
26
  ledgerPath?: string;
16
27
  now?: Date;
28
+ wallet?: WalletName;
17
29
  }): Promise<SpendLedger>;
18
30
  export {};
19
31
  //# sourceMappingURL=spend-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spend-policy.d.ts","sourceRoot":"","sources":["../src/spend-policy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/E,QAAA,MAAM,YAAY;;;iBAGhB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,qBAAa,aAAc,SAAQ,KAAK;aAEpB,IAAI,EAAE,uBAAuB,GAAG,sBAAsB;gBAAtD,IAAI,EAAE,uBAAuB,GAAG,sBAAsB,EACtE,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAgB,UAAU,CAAC,GAAG,OAAa,GAAG,MAAM,CAEnD;AAED,wBAAsB,eAAe,CACnC,IAAI,SAA6B,EACjC,GAAG,OAAa,GACf,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GAC5C,OAAO,CAAC,WAAW,CAAC,CAgCtB"}
1
+ {"version":3,"file":"spend-policy.d.ts","sourceRoot":"","sources":["../src/spend-policy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAyC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1F,QAAA,MAAM,YAAY;;;iBAGhB,CAAC;AAkBH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACvD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAElE,qBAAa,aAAc,SAAQ,KAAK;aAEpB,IAAI,EAAE,uBAAuB,GAAG,sBAAsB;gBAAtD,IAAI,EAAE,uBAAuB,GAAG,sBAAsB,EACtE,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAgB,UAAU,CAAC,GAAG,OAAa,GAAG,MAAM,CAEnD;AAED,+EAA+E;AAC/E,wBAAsB,eAAe,CACnC,IAAI,SAA6B,EACjC,GAAG,OAAa,EAChB,MAAM,GAAE,UAAgC,GACvC,OAAO,CAAC,WAAW,CAAC,CAItB;AAED,0DAA0D;AAC1D,wBAAsB,mBAAmB,CACvC,IAAI,SAA6B,EACjC,GAAG,OAAa,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAkB3B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GACjE,OAAO,CAAC,WAAW,CAAC,CAsCtB"}
package/dist/stats.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Receipt } from "./receipts.js";
1
+ import { type Receipt } from "./receipts.js";
2
2
  import type { SearchEvent } from "./searches.js";
3
3
  export declare const STATS_RANGES: readonly ["24h", "7d", "30d"];
4
4
  export type StatsRange = (typeof STATS_RANGES)[number];
@@ -50,6 +50,7 @@ export declare function aggregateStats(args: {
50
50
  range?: StatsRange;
51
51
  now?: Date;
52
52
  }): StatsReport;
53
- export declare function filterReceiptsByRange(receipts: readonly Receipt[], range: StatsRange, now?: Date): Receipt[];
53
+ /** Keeps the receipts of one range, and of one wallet when `wallet` is given. */
54
+ export declare function filterReceiptsByRange(receipts: readonly Receipt[], range: StatsRange, now?: Date, wallet?: string): Receipt[];
54
55
  export declare function receiptsToCsv(receipts: readonly Receipt[]): string;
55
56
  //# sourceMappingURL=stats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,YAAY,+BAAgC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1F,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAgB7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,KAAK,EAAE,kBAAkB,CAAC;QAC1B,MAAM,EAAE,QAAQ,CACd,MAAM,CAAC,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE,kBAAkB,CAAC,CACjF,CAAC;KACH,CAAC,CAAC;IACH,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC7B,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC,CAAC,CAAC;KACtF,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,WAAW,CAoHd;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,KAAK,EAAE,UAAU,EACjB,GAAG,OAAa,GACf,OAAO,EAAE,CAGX;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAqElE"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,YAAY,+BAAgC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1F,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAgB7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,KAAK,EAAE,kBAAkB,CAAC;QAC1B,MAAM,EAAE,QAAQ,CACd,MAAM,CAAC,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE,kBAAkB,CAAC,CACjF,CAAC;KACH,CAAC,CAAC;IACH,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC7B,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC,CAAC,CAAC;KACtF,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,WAAW,CAoHd;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,KAAK,EAAE,UAAU,EACjB,GAAG,OAAa,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,EAAE,CAIX;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAqElE"}
@@ -1,5 +1,5 @@
1
1
  import { type LookupFn } from "./net-guard.js";
2
- export declare const VAPI_CLIENT_VERSION = "0.2.2";
2
+ export declare const VAPI_CLIENT_VERSION = "0.3.0";
3
3
  export type SupportSystemInfo = {
4
4
  platform: string;
5
5
  release: string;
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * The wallet a record belongs to when it predates named wallets. Receipts and
4
+ * spend-ledger rows written before 0.3.0 carry no wallet, and the 0.2.x
5
+ * keystore becomes this wallet during the layout migration.
6
+ */
7
+ export declare const DEFAULT_WALLET_NAME = "main";
8
+ /**
9
+ * A wallet name is also a file name under `~/.vapi/wallets/`, so it stays in
10
+ * the small set that is safe on every filesystem and unambiguous in a shell:
11
+ * lowercase letters, digits and dashes, 1 to 32 characters, never starting
12
+ * with a dash.
13
+ */
14
+ export declare const WALLET_NAME_PATTERN: RegExp;
15
+ export type WalletName = string;
16
+ export declare const walletNameSchema: z.ZodString;
17
+ export declare function isWalletName(value: string): boolean;
18
+ //# sourceMappingURL=wallet-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-name.d.ts","sourceRoot":"","sources":["../src/wallet-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAA8B,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,eAAO,MAAM,gBAAgB,aAK1B,CAAC;AAEJ,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD"}
@@ -0,0 +1,195 @@
1
+ import { z } from "zod";
2
+ import { type SpendCaps } from "./config.js";
3
+ import { type VapiPaymentAccount } from "./keystore.js";
4
+ import { type WalletName } from "./wallet-name.js";
5
+ export { DEFAULT_WALLET_NAME, isWalletName, walletNameSchema, WALLET_NAME_PATTERN, type WalletName, } from "./wallet-name.js";
6
+ /** What `wallets.json` records about one wallet. The keys live in its keystore. */
7
+ export declare const walletEntrySchema: z.ZodObject<{
8
+ createdAt: z.ZodISODateTime;
9
+ label: z.ZodOptional<z.ZodString>;
10
+ spendCaps: z.ZodObject<{
11
+ perCallAtomic: z.ZodString;
12
+ perDayAtomic: z.ZodString;
13
+ }, z.core.$strip>;
14
+ }, z.core.$strip>;
15
+ export declare const walletRegistrySchema: z.ZodObject<{
16
+ version: z.ZodLiteral<1>;
17
+ default: z.ZodOptional<z.ZodString>;
18
+ wallets: z.ZodRecord<z.ZodString, z.ZodObject<{
19
+ createdAt: z.ZodISODateTime;
20
+ label: z.ZodOptional<z.ZodString>;
21
+ spendCaps: z.ZodObject<{
22
+ perCallAtomic: z.ZodString;
23
+ perDayAtomic: z.ZodString;
24
+ }, z.core.$strip>;
25
+ }, z.core.$strip>>;
26
+ }, z.core.$strip>;
27
+ export type WalletEntry = z.infer<typeof walletEntrySchema>;
28
+ export type WalletRegistry = z.infer<typeof walletRegistrySchema>;
29
+ /** How a caller names the wallet it wants; every field is optional. */
30
+ export type WalletSelection = {
31
+ /** An explicit name, from `--wallet` or an MCP argument. */
32
+ name?: string | undefined;
33
+ /** Environment to read `VAPI_WALLET` from. Defaults to `process.env`. */
34
+ env?: NodeJS.ProcessEnv | undefined;
35
+ };
36
+ export type ResolvedWallet = {
37
+ name: WalletName;
38
+ path: string;
39
+ entry: WalletEntry;
40
+ };
41
+ export type WalletInfo = ResolvedWallet & {
42
+ address?: string;
43
+ solanaAddress?: string;
44
+ keystoreVersion?: number;
45
+ isDefault: boolean;
46
+ spendCaps: SpendCaps;
47
+ label?: string;
48
+ createdAt: string;
49
+ };
50
+ export type CreatedWallet = ResolvedWallet & {
51
+ account: VapiPaymentAccount;
52
+ recoveryPhrase: string;
53
+ };
54
+ export type ImportedWallet = ResolvedWallet & {
55
+ account: VapiPaymentAccount;
56
+ };
57
+ export type TrashedWallet = {
58
+ name: WalletName;
59
+ removedAt: string;
60
+ path: string;
61
+ entry?: WalletEntry;
62
+ };
63
+ /** Reads the USDC balance of an address, so `remove` can refuse a funded wallet. */
64
+ export type WalletBalanceReader = (address: string) => Promise<bigint>;
65
+ export type WalletStoreOptions = {
66
+ /** Injected clock, so `createdAt` is deterministic in tests. */
67
+ now?: () => Date;
68
+ };
69
+ export type LayoutMigration = {
70
+ moved: boolean;
71
+ from?: string;
72
+ to?: string;
73
+ };
74
+ /**
75
+ * The wallets on this machine: one registry file, one keystore per wallet, and
76
+ * the rules for picking the wallet a command acts on. Keys never leave the
77
+ * keystore files; the store only moves, names and caps them.
78
+ *
79
+ * Layout under the config home (`~/.vapi`, or `VAPI_HOME`):
80
+ *
81
+ * ```
82
+ * wallets.json registry: default wallet, per-wallet caps and labels
83
+ * wallets/<name>.json one keystore per wallet, mode 0600
84
+ * wallets/.trash/ removed wallets, kept encrypted, never auto-deleted
85
+ * keystore.json symlink to wallets/main.json after the 0.2.x migration
86
+ * ```
87
+ */
88
+ export declare class WalletStore {
89
+ /** The config home these wallets live under. */
90
+ readonly home: string;
91
+ private readonly options;
92
+ private registry;
93
+ private constructor();
94
+ /** Opens the store, migrating a 0.2.x single-keystore home on the way. */
95
+ static open(home?: string, options?: WalletStoreOptions): Promise<WalletStore>;
96
+ get registryPath(): string;
97
+ get walletsDirectory(): string;
98
+ get trashDirectory(): string;
99
+ /** The keystore path of a wallet, whether or not it exists yet. */
100
+ pathFor(name: string): string;
101
+ /** The names this machine knows, in registry order. */
102
+ names(): WalletName[];
103
+ /** The name a command uses when nothing selects another wallet. */
104
+ get defaultName(): WalletName | undefined;
105
+ /** True once `wallets.json` exists; false for an un-migrated 0.2.x home. */
106
+ hasRegistry(): boolean;
107
+ entry(name: string): WalletEntry | undefined;
108
+ has(name: string): boolean;
109
+ /** A copy of the registry as it was last read or written. */
110
+ snapshot(): WalletRegistry;
111
+ /** Re-reads `wallets.json` from disk. */
112
+ reload(): Promise<WalletRegistry>;
113
+ /**
114
+ * Picks the wallet a command acts on: an explicit name first, then
115
+ * `VAPI_WALLET`, then the registry default.
116
+ */
117
+ resolve(selection?: WalletSelection): ResolvedWallet;
118
+ /** Every wallet with its addresses, read without a passphrase. */
119
+ list(): Promise<WalletInfo[]>;
120
+ /** The stored Base address of a wallet, without its passphrase. */
121
+ readAddress(name: string): Promise<string | undefined>;
122
+ /**
123
+ * Creates a wallet from a fresh or supplied recovery phrase. The first wallet
124
+ * on a machine also becomes the default. The phrase is returned once and is
125
+ * never written anywhere but the encrypted keystore.
126
+ */
127
+ create(name: string, passphrase: string, options?: {
128
+ phrase?: string;
129
+ enableSolana?: boolean;
130
+ label?: string;
131
+ spendCaps?: SpendCaps;
132
+ }): Promise<CreatedWallet>;
133
+ /** Wraps a private key the user already holds in a new named wallet. */
134
+ importKey(name: string, passphrase: string, privateKey: string, options?: {
135
+ label?: string;
136
+ spendCaps?: SpendCaps;
137
+ }): Promise<ImportedWallet>;
138
+ /** Opens one wallet's keystore with its passphrase. */
139
+ unlock(name: string, passphrase: string): Promise<VapiPaymentAccount>;
140
+ setDefault(name: string): Promise<WalletRegistry>;
141
+ setSpendCaps(name: string, caps: SpendCaps): Promise<WalletEntry>;
142
+ /** Sets or, with `undefined`, clears the human label of a wallet. */
143
+ setLabel(name: string, label: string | undefined): Promise<WalletEntry>;
144
+ /**
145
+ * Renames a wallet everywhere its name is recorded: the keystore file, the
146
+ * registry, and the wallet field of its receipts. The keystore contents are
147
+ * moved untouched.
148
+ */
149
+ rename(oldName: string, newName: string): Promise<ResolvedWallet>;
150
+ /**
151
+ * Moves a wallet's keystore to `wallets/.trash/`. Nothing is deleted: the
152
+ * encrypted file stays, and its passphrase still opens it. The default wallet
153
+ * and a wallet that still holds USDC are refused unless forced.
154
+ *
155
+ * `allowDefault` exists for one caller: `vapi import --replace`, which puts a
156
+ * new wallet under the same name back in place immediately afterwards, so the
157
+ * machine is never left without a default. `vapi wallet remove` never sets it.
158
+ */
159
+ remove(name: string, options?: {
160
+ force?: boolean;
161
+ balanceReader?: WalletBalanceReader;
162
+ allowDefault?: boolean;
163
+ }): Promise<TrashedWallet>;
164
+ /** Brings the most recently removed wallet of that name back. */
165
+ restore(name: string): Promise<ResolvedWallet>;
166
+ /** Every removed wallet still in the trash, newest first. */
167
+ listTrash(): Promise<TrashedWallet[]>;
168
+ /**
169
+ * Moves a 0.2.x home into the wallet layout, once: `keystore.json` becomes
170
+ * `wallets/main.json` and `keystore.json` stays behind as a symlink for one
171
+ * release, so scripts and 0.2.x callers keep working. The keystore contents
172
+ * are never rewritten, and a home without a keystore migrates nothing.
173
+ */
174
+ migrateLegacyLayout(): Promise<LayoutMigration>;
175
+ private now;
176
+ private newEntry;
177
+ private prepareNewWallet;
178
+ private registerWallet;
179
+ /**
180
+ * Keeps the compatibility symlink honest: when the wallet it points at moves,
181
+ * the link follows it, and when that wallet is removed, the link goes too.
182
+ */
183
+ private retargetLegacyKeystoreLink;
184
+ private update;
185
+ private readRegistry;
186
+ private writeRegistry;
187
+ }
188
+ /**
189
+ * The caps that apply to one wallet: its own entry, or — in a home that has no
190
+ * registry yet — the legacy `config.spendCaps`, and otherwise the defaults.
191
+ */
192
+ export declare function spendCapsForWallet(store: WalletStore, name?: WalletName): Promise<SpendCaps>;
193
+ /** Rejects anything that is not a wallet name, including path traversal. */
194
+ export declare function assertWalletName(value: string): WalletName;
195
+ //# sourceMappingURL=wallet-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-store.d.ts","sourceRoot":"","sources":["../src/wallet-store.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAE1B,mFAAmF;AACnF,eAAO,MAAM,iBAAiB;;;;;;;iBAI5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;iBAI/B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG;IAC5B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAC3C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAOF;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IAIpB,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAiB;IAEjC,OAAO;IASP,0EAA0E;WAC7D,IAAI,CACf,IAAI,SAA2B,EAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC;IAOvB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,mEAAmE;IACnE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7B,uDAAuD;IACvD,KAAK,IAAI,UAAU,EAAE;IAIrB,mEAAmE;IACnE,IAAI,WAAW,IAAI,UAAU,GAAG,SAAS,CAExC;IAED,4EAA4E;IAC5E,WAAW,IAAI,OAAO;IAItB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,6DAA6D;IAC7D,QAAQ,IAAI,cAAc;IAI1B,yCAAyC;IACnC,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAKvC;;;OAGG;IACH,OAAO,CAAC,SAAS,GAAE,eAAoB,GAAG,cAAc;IAexD,kEAAkE;IAC5D,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAqBnC,mEAAmE;IAC7D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI5D;;;;OAIG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,SAAS,CAAC;KAClB,GACL,OAAO,CAAC,aAAa,CAAC;IAUzB,wEAAwE;IAClE,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAO,GACtD,OAAO,CAAC,cAAc,CAAC;IAO1B,uDAAuD;IACjD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKrE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOjD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAUvE,qEAAqE;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAkB7E;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBvE;;;;;;;;OAQG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,aAAa,CAAC,EAAE,mBAAmB,CAAC;QACpC,YAAY,CAAC,EAAE,OAAO,CAAC;KACnB,GACL,OAAO,CAAC,aAAa,CAAC;IAgCzB,iEAAiE;IAC3D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBpD,6DAA6D;IACvD,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAqB3C;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;IAoCrD,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,QAAQ;YAUF,gBAAgB;YAehB,cAAc;IAY5B;;;OAGG;YACW,0BAA0B;YAqB1B,MAAM;YAON,YAAY;YAkBZ,aAAa;CAK5B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,UAAgC,GACrC,OAAO,CAAC,SAAS,CAAC,CAIpB;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAa1D"}
package/dist/wallet.d.ts CHANGED
@@ -23,9 +23,4 @@ export declare class LocalWallet implements Wallet {
23
23
  signTypedData(typedData: X402TypedData): Promise<Hex>;
24
24
  balance(network: string, configured: ConfiguredNetwork): Promise<bigint>;
25
25
  }
26
- export declare function openWallet(options: {
27
- passphrase: string;
28
- policy: Policy;
29
- keystorePath?: string;
30
- }): Promise<Wallet>;
31
26
  //# sourceMappingURL=wallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIzC,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACvD;AAED,gFAAgF;AAChF,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAED,qBAAa,WAAY,YAAW,MAAM;IAItC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAGP,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAK3B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAS/E;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlB"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACvD;AAED,gFAAgF;AAChF,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAED,qBAAa,WAAY,YAAW,MAAM;IAItC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAGP,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAK3B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAS/E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vapi-network/core",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Non-custodial x402 protocol, wallet policy, discovery, and receipts core",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -22,6 +22,10 @@
22
22
  ".": {
23
23
  "types": "./dist/index.d.ts",
24
24
  "import": "./dist/index.js"
25
+ },
26
+ "./secrets": {
27
+ "types": "./dist/secrets.d.ts",
28
+ "import": "./dist/secrets.js"
25
29
  }
26
30
  },
27
31
  "dependencies": {},