@vapi-network/core 0.5.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +406 -5
  2. package/dist/account-add.d.ts +101 -0
  3. package/dist/account-add.d.ts.map +1 -0
  4. package/dist/account-movement-lock.d.ts +10 -0
  5. package/dist/account-movement-lock.d.ts.map +1 -0
  6. package/dist/agent-link.d.ts +16 -1
  7. package/dist/agent-link.d.ts.map +1 -1
  8. package/dist/agent-link.js +131 -54
  9. package/dist/agent-link.js.map +3 -3
  10. package/dist/agent-profile.d.ts +47 -6
  11. package/dist/agent-profile.d.ts.map +1 -1
  12. package/dist/agent-run.d.ts +12 -0
  13. package/dist/agent-run.d.ts.map +1 -0
  14. package/dist/allocation.d.ts +64 -0
  15. package/dist/allocation.d.ts.map +1 -0
  16. package/dist/api-key.js +4 -2
  17. package/dist/api-key.js.map +1 -1
  18. package/dist/atomic-file.d.ts +23 -0
  19. package/dist/atomic-file.d.ts.map +1 -0
  20. package/dist/audit.d.ts +4 -1
  21. package/dist/audit.d.ts.map +1 -1
  22. package/dist/backup.d.ts +307 -0
  23. package/dist/backup.d.ts.map +1 -0
  24. package/dist/backup.js +49938 -0
  25. package/dist/backup.js.map +6 -0
  26. package/dist/call-contracts-wire.d.ts +12 -12
  27. package/dist/ceiling.d.ts +98 -0
  28. package/dist/ceiling.d.ts.map +1 -0
  29. package/dist/cloud-backup.d.ts +123 -0
  30. package/dist/cloud-backup.d.ts.map +1 -0
  31. package/dist/cloud-backup.js +50827 -0
  32. package/dist/cloud-backup.js.map +6 -0
  33. package/dist/config.d.ts +5 -0
  34. package/dist/config.d.ts.map +1 -1
  35. package/dist/device.d.ts +15 -0
  36. package/dist/device.d.ts.map +1 -0
  37. package/dist/distribute.d.ts +68 -0
  38. package/dist/distribute.d.ts.map +1 -0
  39. package/dist/index.d.ts +17 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +10131 -1228
  42. package/dist/index.js.map +3 -3
  43. package/dist/keystore.d.ts +24 -1
  44. package/dist/keystore.d.ts.map +1 -1
  45. package/dist/marketplace-contracts.d.ts +14 -14
  46. package/dist/member-bundle.d.ts +110 -0
  47. package/dist/member-bundle.d.ts.map +1 -0
  48. package/dist/movement-open.d.ts +10 -0
  49. package/dist/movement-open.d.ts.map +1 -0
  50. package/dist/movement.d.ts +172 -0
  51. package/dist/movement.d.ts.map +1 -0
  52. package/dist/networks.d.ts +1 -0
  53. package/dist/networks.d.ts.map +1 -1
  54. package/dist/receipts.d.ts +33 -0
  55. package/dist/receipts.d.ts.map +1 -1
  56. package/dist/router-client.d.ts +9 -1
  57. package/dist/router-client.d.ts.map +1 -1
  58. package/dist/router-client.js +36500 -16308
  59. package/dist/router-client.js.map +3 -3
  60. package/dist/run-budget.d.ts +17 -0
  61. package/dist/run-budget.d.ts.map +1 -0
  62. package/dist/secret-store.d.ts +23 -5
  63. package/dist/secret-store.d.ts.map +1 -1
  64. package/dist/secrets.d.ts +2 -0
  65. package/dist/secrets.d.ts.map +1 -1
  66. package/dist/secrets.js +1439 -56
  67. package/dist/secrets.js.map +3 -3
  68. package/dist/siblings.d.ts +41 -0
  69. package/dist/siblings.d.ts.map +1 -0
  70. package/dist/spend-policy.d.ts +12 -0
  71. package/dist/spend-policy.d.ts.map +1 -1
  72. package/dist/status.d.ts +73 -0
  73. package/dist/status.d.ts.map +1 -0
  74. package/dist/support-report.d.ts +1 -1
  75. package/dist/swarm-capital.d.ts +147 -0
  76. package/dist/swarm-capital.d.ts.map +1 -0
  77. package/dist/swarm.d.ts +224 -0
  78. package/dist/swarm.d.ts.map +1 -0
  79. package/dist/transfer-journal.d.ts +11 -0
  80. package/dist/transfer-journal.d.ts.map +1 -0
  81. package/dist/transfer.d.ts +65 -0
  82. package/dist/transfer.d.ts.map +1 -0
  83. package/dist/vault-key.d.ts +41 -0
  84. package/dist/vault-key.d.ts.map +1 -0
  85. package/dist/vault-migrate.d.ts +29 -0
  86. package/dist/vault-migrate.d.ts.map +1 -0
  87. package/dist/vault.d.ts +104 -0
  88. package/dist/vault.d.ts.map +1 -0
  89. package/dist/wallet-store.d.ts +135 -39
  90. package/dist/wallet-store.d.ts.map +1 -1
  91. package/dist/x402-pay.d.ts +12 -0
  92. package/dist/x402-pay.d.ts.map +1 -1
  93. package/dist/x402.d.ts +3 -0
  94. package/dist/x402.d.ts.map +1 -1
  95. package/package.json +9 -1
@@ -0,0 +1,41 @@
1
+ import type { SecretStore } from "./secret-store.js";
2
+ import { type Vault } from "./vault.js";
3
+ export declare const VAULT_KEY_ACCOUNT = "vault-key";
4
+ export declare const VAULT_SESSION_ACCOUNT = "vault-session";
5
+ export type VaultEnv = Record<string, string | undefined>;
6
+ export declare function loadOrCreateDeviceKey(args: {
7
+ secrets: SecretStore;
8
+ randomBytes?: (size: number) => Uint8Array;
9
+ }): Promise<Uint8Array>;
10
+ export declare function protectVault(args: {
11
+ path: string;
12
+ secrets: SecretStore;
13
+ password?: string;
14
+ env?: VaultEnv;
15
+ randomBytes?: (size: number) => Uint8Array;
16
+ }): Promise<void>;
17
+ export declare function unprotectVault(args: {
18
+ path: string;
19
+ secrets: SecretStore;
20
+ password?: string;
21
+ env?: VaultEnv;
22
+ }): Promise<void>;
23
+ export declare function unlockProtectedVault(args: {
24
+ path: string;
25
+ secrets: SecretStore;
26
+ password?: string;
27
+ env?: VaultEnv;
28
+ sessionHours?: number;
29
+ now?: () => Date;
30
+ }): Promise<Uint8Array>;
31
+ export declare function lockVault(args: {
32
+ secrets: SecretStore;
33
+ }): Promise<boolean>;
34
+ export declare function restoreVault(args: {
35
+ path: string;
36
+ key: Uint8Array;
37
+ phrase: string;
38
+ probe: (address: `0x${string}`) => Promise<boolean>;
39
+ now?: () => Date;
40
+ }): Promise<Vault>;
41
+ //# sourceMappingURL=vault-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-key.d.ts","sourceRoot":"","sources":["../src/vault-key.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAQL,KAAK,KAAK,EACX,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAa1D,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC;CAC5C,GAAG,OAAO,CAAC,UAAU,CAAC,CAatB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC;CAC5C,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyCtB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAMhF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,GAAG,OAAO,CAAC,KAAK,CAAC,CA0CjB"}
@@ -0,0 +1,29 @@
1
+ import { type AuditRecord } from "./audit.js";
2
+ import { type Vault } from "./vault.js";
3
+ export declare const MIGRATED_DIRECTORY = "wallets.migrated";
4
+ export type MigrationSkipReason = "passphrase_needed" | "unreadable" | "name_taken";
5
+ export type KeystoreMigration = {
6
+ imported: string[];
7
+ skipped: {
8
+ name: string;
9
+ reason: MigrationSkipReason;
10
+ }[];
11
+ };
12
+ /** Returns the 0.5 passphrase for one wallet name, or undefined when it cannot be obtained without a person. */
13
+ export type PassphraseResolver = (name: string) => Promise<string | undefined>;
14
+ /**
15
+ * Names of the 0.5 keystores still under `<home>/wallets/`. Only regular files
16
+ * named for a valid wallet are returned.
17
+ */
18
+ export declare function legacyKeystoreNames(home: string): Promise<string[]>;
19
+ export declare function migrateKeystores(args: {
20
+ home: string;
21
+ vault: Vault;
22
+ resolvePassphrase: PassphraseResolver;
23
+ /** Audit writer; defaults to appendAudit(home, record, { now }). Injected so tests can capture lines. */
24
+ audit?: (record: AuditRecord) => Promise<unknown>;
25
+ now?: () => Date;
26
+ /** When given, only these names are considered (the store uses it to migrate one keystore on unlock). */
27
+ only?: readonly string[];
28
+ }): Promise<KeystoreMigration>;
29
+ //# sourceMappingURL=vault-migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-migrate.d.ts","sourceRoot":"","sources":["../src/vault-migrate.ts"],"names":[],"mappings":"AAeA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EAAc,KAAK,KAAK,EAAqB,MAAM,YAAY,CAAC;AAGvE,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,YAAY,GAAG,YAAY,CAAC;AACpF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,EAAE,CAAC;CAC1D,CAAC;AACF,gHAAgH;AAChH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAE/E;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAczE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,yGAAyG;IACzG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,yGAAyG;IACzG,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwF7B"}
@@ -0,0 +1,104 @@
1
+ import { type VapiPaymentAccount } from "./keystore.js";
2
+ export type VaultAccount = {
3
+ name: string;
4
+ kind: "derived";
5
+ index: number;
6
+ address: `0x${string}`;
7
+ createdAt: string;
8
+ } | {
9
+ name: string;
10
+ kind: "imported";
11
+ address: `0x${string}`;
12
+ createdAt: string;
13
+ };
14
+ export type VaultFile = {
15
+ version: 2;
16
+ kdf: "device-key";
17
+ cipher: "aes-256-gcm";
18
+ phrase: string;
19
+ accounts: (VaultAccount & {
20
+ key?: string;
21
+ })[];
22
+ /** Monotonic high-water mark; absent in vaults written before account removal was supported. */
23
+ nextDerivedIndex?: number;
24
+ protected: boolean;
25
+ wrappedKey?: string;
26
+ };
27
+ export type VaultErrorCode = "not_found" | "name_taken" | "has_balance" | "bad_key" | "corrupt" | "already_protected" | "not_protected" | "password_required";
28
+ export declare class VaultError extends Error {
29
+ readonly code: VaultErrorCode;
30
+ constructor(code: VaultErrorCode, message: string, options?: ErrorOptions);
31
+ }
32
+ export type VaultOptions = {
33
+ path: string;
34
+ key: Uint8Array;
35
+ /** Chain read used by removeAccount; removal fails closed when it is absent. */
36
+ balanceOf?: (address: `0x${string}`) => Promise<bigint>;
37
+ /** Injected clock for createdAt; defaults to () => new Date(). */
38
+ now?: () => Date;
39
+ };
40
+ export interface Vault {
41
+ accounts(): VaultAccount[];
42
+ deriveAccount(name: string): Promise<VaultAccount>;
43
+ importAccount(name: string, privateKey: `0x${string}`): Promise<VaultAccount>;
44
+ removeAccount(name: string): Promise<void>;
45
+ rename(from: string, to: string): Promise<void>;
46
+ signer(name: string): Promise<VapiPaymentAccount>;
47
+ phrase(): Promise<string>;
48
+ save(): Promise<void>;
49
+ }
50
+ type StoredDerivedAccount = Extract<VaultAccount, {
51
+ kind: "derived";
52
+ }>;
53
+ type StoredImportedAccount = Extract<VaultAccount, {
54
+ kind: "imported";
55
+ }> & {
56
+ key: string;
57
+ };
58
+ type StoredAccount = StoredDerivedAccount | StoredImportedAccount;
59
+ export type StoredVaultFile = Omit<VaultFile, "accounts"> & {
60
+ accounts: StoredAccount[];
61
+ };
62
+ export type StoredVaultAccount = StoredVaultFile["accounts"][number];
63
+ export declare function createVault(args: VaultOptions & {
64
+ phrase?: string;
65
+ }): Promise<Vault>;
66
+ export declare function openVault(args: VaultOptions): Promise<Vault>;
67
+ /**
68
+ * Puts a stored account record back into the vault under the vault lock: the exact
69
+ * record `readVaultFileUnlocked` returned before `removeAccount` took it out.
70
+ * Refuses (VaultError "name_taken") a name that is already present or, for a
71
+ * derived record, an index already in use; refuses ("bad_key") an imported record
72
+ * whose key does not decrypt to its address with this device key. Returns the
73
+ * public VaultAccount.
74
+ */
75
+ export declare function reinstateVaultAccount(args: {
76
+ path: string;
77
+ key: Uint8Array;
78
+ account: StoredVaultAccount;
79
+ }): Promise<VaultAccount>;
80
+ /** Human-only: opens the vault and returns the recovery phrase. Re-exported ONLY from secrets.ts. */
81
+ export declare function exportVaultPhrase(args: VaultOptions): Promise<string>;
82
+ /** Human-only: decrypts one named account's private key. Re-exported ONLY from secrets.ts. */
83
+ export declare function exportVaultAccountKey(args: {
84
+ path: string;
85
+ key: Uint8Array;
86
+ name: string;
87
+ }): Promise<`0x${string}`>;
88
+ /**
89
+ * One swarm member's own private key, for a member bundle that runs it on a
90
+ * remote sandbox. It is `exportVaultAccountKey` under the name the remote path
91
+ * uses: one account, never the phrase. Which accounts may leave the machine is
92
+ * the caller's policy; this function refuses nothing beyond an unknown name.
93
+ */
94
+ export declare function exportMemberKey(args: {
95
+ path: string;
96
+ key: Uint8Array;
97
+ name: string;
98
+ }): Promise<`0x${string}`>;
99
+ export declare function readVaultFileUnlocked(path: string): Promise<StoredVaultFile>;
100
+ export declare function writeVaultFile(path: string, file: StoredVaultFile): Promise<void>;
101
+ /** Serializes vault read-modify-write transactions across CLI and MCP processes. */
102
+ export declare function withVaultLock<T>(path: string, operation: () => Promise<T>): Promise<T>;
103
+ export {};
104
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { z } from "zod";
2
+ import { type AuditRecord } from "./audit.js";
2
3
  import { type SpendCaps } from "./config.js";
3
4
  import { type VapiPaymentAccount } from "./keystore.js";
4
- import type { SecretStore } from "./secret-store.js";
5
+ import { type SecretStore } from "./secret-store.js";
6
+ import { type PassphraseResolver } from "./vault-migrate.js";
5
7
  import { type WalletName } from "./wallet-name.js";
6
8
  export { DEFAULT_WALLET_NAME, isWalletName, walletNameSchema, WALLET_NAME_PATTERN, type WalletName, } from "./wallet-name.js";
7
9
  export type AgentLink = {
@@ -19,7 +21,19 @@ export type RouterRefill = {
19
21
  belowUsd: number;
20
22
  tierUsd: RouterTopupTier;
21
23
  };
22
- /** What `wallets.json` records about one wallet. The keys live in its keystore. */
24
+ declare const ceilingSweepPendingSchema: z.ZodObject<{
25
+ owner: z.ZodString;
26
+ target: z.ZodOptional<z.ZodString>;
27
+ amountAtomic: z.ZodString;
28
+ nonce: z.ZodString;
29
+ createdAt: z.ZodISODateTime;
30
+ status: z.ZodEnum<{
31
+ unknown: "unknown";
32
+ planned: "planned";
33
+ }>;
34
+ }, z.core.$strict>;
35
+ export type WalletCeilingSweepPending = z.infer<typeof ceilingSweepPendingSchema>;
36
+ /** What `wallets.json` records about one wallet. Keys live in the vault or a legacy keystore. */
23
37
  export declare const walletEntrySchema: z.ZodObject<{
24
38
  createdAt: z.ZodISODateTime;
25
39
  label: z.ZodOptional<z.ZodString>;
@@ -27,6 +41,19 @@ export declare const walletEntrySchema: z.ZodObject<{
27
41
  perCallAtomic: z.ZodString;
28
42
  perDayAtomic: z.ZodString;
29
43
  }, z.core.$strip>;
44
+ ceilingAtomic: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ ceilingSweepAttemptedAt: z.ZodOptional<z.ZodISODateTime>;
46
+ ceilingSweepPending: z.ZodOptional<z.ZodObject<{
47
+ owner: z.ZodString;
48
+ target: z.ZodOptional<z.ZodString>;
49
+ amountAtomic: z.ZodString;
50
+ nonce: z.ZodString;
51
+ createdAt: z.ZodISODateTime;
52
+ status: z.ZodEnum<{
53
+ unknown: "unknown";
54
+ planned: "planned";
55
+ }>;
56
+ }, z.core.$strict>>;
30
57
  routerRefill: z.ZodOptional<z.ZodType<RouterRefill, unknown, z.core.$ZodTypeInternals<RouterRefill, unknown>>>;
31
58
  link: z.ZodOptional<z.ZodType<AgentLink, unknown, z.core.$ZodTypeInternals<AgentLink, unknown>>>;
32
59
  }, z.core.$strip>;
@@ -40,12 +67,29 @@ export declare const walletRegistrySchema: z.ZodObject<{
40
67
  perCallAtomic: z.ZodString;
41
68
  perDayAtomic: z.ZodString;
42
69
  }, z.core.$strip>;
70
+ ceilingAtomic: z.ZodOptional<z.ZodNullable<z.ZodString>>;
71
+ ceilingSweepAttemptedAt: z.ZodOptional<z.ZodISODateTime>;
72
+ ceilingSweepPending: z.ZodOptional<z.ZodObject<{
73
+ owner: z.ZodString;
74
+ target: z.ZodOptional<z.ZodString>;
75
+ amountAtomic: z.ZodString;
76
+ nonce: z.ZodString;
77
+ createdAt: z.ZodISODateTime;
78
+ status: z.ZodEnum<{
79
+ unknown: "unknown";
80
+ planned: "planned";
81
+ }>;
82
+ }, z.core.$strict>>;
43
83
  routerRefill: z.ZodOptional<z.ZodType<RouterRefill, unknown, z.core.$ZodTypeInternals<RouterRefill, unknown>>>;
44
84
  link: z.ZodOptional<z.ZodType<AgentLink, unknown, z.core.$ZodTypeInternals<AgentLink, unknown>>>;
45
85
  }, z.core.$strip>>;
46
86
  }, z.core.$strip>;
47
87
  export type WalletEntry = z.infer<typeof walletEntrySchema>;
48
88
  export type WalletRegistry = z.infer<typeof walletRegistrySchema>;
89
+ export type WalletCeilingCaps = {
90
+ ceilingAtomic: bigint | null;
91
+ effectiveCeilingAtomic: bigint | null;
92
+ };
49
93
  /** How a caller names the wallet it wants; every field is optional. */
50
94
  export type WalletSelection = {
51
95
  /** An explicit name, from `--wallet` or an MCP argument. */
@@ -69,7 +113,7 @@ export type WalletInfo = ResolvedWallet & {
69
113
  };
70
114
  export type CreatedWallet = ResolvedWallet & {
71
115
  account: VapiPaymentAccount;
72
- recoveryPhrase: string;
116
+ recoveryPhrase?: string;
73
117
  };
74
118
  export type ImportedWallet = ResolvedWallet & {
75
119
  account: VapiPaymentAccount;
@@ -82,27 +126,46 @@ export type TrashedWallet = {
82
126
  };
83
127
  /** Reads the USDC balance of an address, so `remove` can refuse a funded wallet. */
84
128
  export type WalletBalanceReader = (address: string) => Promise<bigint>;
129
+ type WalletRenameOptions = {
130
+ secrets?: SecretStore;
131
+ serialize?: <T>(operation: () => Promise<T>) => Promise<T>;
132
+ };
133
+ type WalletRemoveOptions = {
134
+ force?: boolean;
135
+ balanceReader?: WalletBalanceReader;
136
+ allowDefault?: boolean;
137
+ };
85
138
  export type WalletStoreOptions = {
86
139
  /** Injected clock, so `createdAt` is deterministic in tests. */
87
140
  now?: () => Date;
141
+ /** OS secret store holding the device vault key and optional legacy passphrases. */
142
+ secrets?: SecretStore;
143
+ /** Environment used for vault and legacy-keystore passwords. */
144
+ env?: NodeJS.ProcessEnv;
145
+ /** Resolves a 0.5 keystore passphrase without prompting. */
146
+ resolvePassphrase?: PassphraseResolver;
147
+ /** Writes migration audit records. */
148
+ audit?: (record: AuditRecord) => Promise<unknown>;
88
149
  };
89
150
  export type LayoutMigration = {
90
151
  moved: boolean;
91
152
  from?: string;
92
153
  to?: string;
93
154
  };
155
+ export declare const VAULT_LOCKED_MESSAGE = "The vault is locked. Run vapi vault unlock, or set VAPI_VAULT_PASSWORD.";
94
156
  /**
95
- * The wallets on this machine: one registry file, one keystore per wallet, and
96
- * the rules for picking the wallet a command acts on. Keys never leave the
97
- * keystore files; the store only moves, names and caps them.
157
+ * The wallets on this machine: a vault of keys, a registry of settings, and the
158
+ * rules for picking the wallet a command acts on.
98
159
  *
99
160
  * Layout under the config home (`~/.vapi`, or `VAPI_HOME`):
100
161
  *
101
162
  * ```
163
+ * vault.json encrypted device vault and named accounts
102
164
  * wallets.json registry: default wallet, per-wallet caps and labels
103
- * wallets/<name>.json one keystore per wallet, mode 0600
104
- * wallets/.trash/ removed wallets, kept encrypted, never auto-deleted
105
- * keystore.json symlink to wallets/main.json after the 0.2.x migration
165
+ * wallets/<name>.json 0.5 keystores awaiting migration
166
+ * wallets.migrated/ migrated 0.5 keystores, retained as encrypted backups
167
+ * wallets/.trash/ removed accounts and their registry sidecars
168
+ * audit.log append-only local audit trail
106
169
  * ```
107
170
  */
108
171
  export declare class WalletStore {
@@ -110,13 +173,20 @@ export declare class WalletStore {
110
173
  readonly home: string;
111
174
  private readonly options;
112
175
  private registry;
176
+ private readonly secrets;
177
+ private readonly environment;
178
+ private readonly passphraseResolver;
179
+ private readonly audit;
180
+ private cachedVault;
181
+ private vaultKey;
182
+ private balanceProbe;
113
183
  private constructor();
114
184
  /** Opens the store, migrating a 0.2.x single-keystore home on the way. */
115
185
  static open(home?: string, options?: WalletStoreOptions): Promise<WalletStore>;
116
186
  get registryPath(): string;
117
187
  get walletsDirectory(): string;
118
188
  get trashDirectory(): string;
119
- /** The keystore path of a wallet, whether or not it exists yet. */
189
+ /** The legacy 0.5 keystore path of a wallet, whether or not it exists. */
120
190
  pathFor(name: string): string;
121
191
  /** The names this machine knows, in registry order. */
122
192
  names(): WalletName[];
@@ -126,9 +196,11 @@ export declare class WalletStore {
126
196
  hasRegistry(): boolean;
127
197
  entry(name: string): WalletEntry | undefined;
128
198
  has(name: string): boolean;
199
+ /** True only when the device vault currently contains an account with this name. */
200
+ hasVaultAccount(name: string): Promise<boolean>;
129
201
  /** A copy of the registry as it was last read or written. */
130
202
  snapshot(): WalletRegistry;
131
- /** Re-reads `wallets.json` from disk. */
203
+ /** Re-reads `wallets.json` from disk and drops the process-local vault cache. */
132
204
  reload(): Promise<WalletRegistry>;
133
205
  /**
134
206
  * Picks the wallet a command acts on: an explicit name first, then
@@ -140,72 +212,90 @@ export declare class WalletStore {
140
212
  /** The stored Base address of a wallet, without its passphrase. */
141
213
  readAddress(name: string): Promise<string | undefined>;
142
214
  /**
143
- * Creates a wallet from a fresh or supplied recovery phrase. The first wallet
144
- * on a machine also becomes the default. The phrase is returned once and is
145
- * never written anywhere but the encrypted keystore.
215
+ * Creates a vault account from a fresh or supplied recovery phrase. The first
216
+ * wallet on a machine also becomes the default. `passphrase` and
217
+ * `enableSolana` are accepted and ignored for one release. Every derived
218
+ * account returns the vault's shared phrase to preserve this method's public
219
+ * contract; callers decide whether their current flow may display it.
146
220
  */
147
221
  create(name: string, passphrase: string, options?: {
148
222
  phrase?: string;
149
223
  enableSolana?: boolean;
150
224
  label?: string;
151
225
  spendCaps?: SpendCaps;
152
- }): Promise<CreatedWallet>;
153
- /** Wraps a private key the user already holds in a new named wallet. */
226
+ }): Promise<CreatedWallet & {
227
+ recoveryPhrase: string;
228
+ }>;
229
+ /** Imports a private key into the vault. `passphrase` is ignored for one release. */
154
230
  importKey(name: string, passphrase: string, privateKey: string, options?: {
155
231
  label?: string;
156
232
  spendCaps?: SpendCaps;
157
233
  }): Promise<ImportedWallet>;
158
- /** Opens one wallet's keystore with its passphrase. */
234
+ /** Returns one wallet's vault signer, migrating its legacy keystore if needed. */
159
235
  unlock(name: string, passphrase: string): Promise<VapiPaymentAccount>;
160
236
  setDefault(name: string): Promise<WalletRegistry>;
161
237
  setSpendCaps(name: string, caps: SpendCaps): Promise<WalletEntry>;
238
+ /** Stores an explicit atomic ceiling, or null to disable automatic sweeps. */
239
+ setCeiling(name: string, ceilingAtomic: bigint | null): Promise<WalletEntry>;
240
+ /** Updates a ceiling from the latest value while holding the registry write lock. */
241
+ updateCeiling(name: string, update: (current: bigint | null) => bigint | null): Promise<WalletEntry>;
242
+ /** Reads the configured ceiling and the per-day-cap floor for one wallet. */
243
+ ceilingCaps(name: string): WalletCeilingCaps;
244
+ /**
245
+ * Atomically claims the ten-minute sweep window. The timestamp is written
246
+ * before authorization work, so failed attempts consume the window too.
247
+ */
248
+ claimCeilingSweepAttempt(name: string, now: Date, guardMs?: number): Promise<boolean>;
249
+ /** Reads the durable authorization plan used to resume an uncertain sweep. */
250
+ ceilingSweepPending(name: string): WalletCeilingSweepPending | undefined;
251
+ /** Updates an uncertain sweep from the latest registry value under its lock. */
252
+ updateCeilingSweepPending(name: string, update: (current: Readonly<WalletCeilingSweepPending> | undefined) => WalletCeilingSweepPending | undefined): Promise<WalletCeilingSweepPending | undefined>;
253
+ /** Updates spend caps from the latest registry value while holding its write lock. */
254
+ updateSpendCaps(name: string, update: (current: Readonly<SpendCaps>) => SpendCaps): Promise<WalletEntry>;
255
+ /** Atomically keeps the stricter current or planned provisioning limit in every field. */
256
+ lowerProvisioningLimits(name: string, plannedCaps: SpendCaps, plannedCeilingAtomic: bigint | null): Promise<WalletEntry>;
162
257
  setRouterRefill(name: string, refill: RouterRefill | null): Promise<WalletEntry>;
163
258
  /** Sets or, with `undefined`, clears the human label of a wallet. */
164
259
  setLabel(name: string, label: string | undefined): Promise<WalletEntry>;
165
260
  setLink(name: WalletName, link: AgentLink): Promise<WalletEntry>;
166
261
  clearLink(name: WalletName): Promise<WalletEntry>;
167
262
  /**
168
- * Renames a wallet everywhere its name is recorded: the keystore file, the
169
- * registry, and the wallet field of its receipts. The keystore contents are
170
- * moved untouched.
263
+ * Renames a wallet everywhere its name is recorded: the vault or legacy
264
+ * keystore, the registry, and the wallet field of its receipts.
171
265
  */
172
- rename(oldName: string, newName: string, options?: {
173
- secrets?: SecretStore;
174
- }): Promise<ResolvedWallet>;
266
+ rename(oldName: string, newName: string, options?: WalletRenameOptions): Promise<ResolvedWallet>;
267
+ private renameWithMovementLocksHeld;
175
268
  /**
176
- * Moves a wallet's keystore to `wallets/.trash/`. Nothing is deleted: the
177
- * encrypted file stays, and its passphrase still opens it. The default wallet
178
- * and a wallet that still holds USDC are refused unless forced.
269
+ * Moves a wallet's encrypted vault record or legacy keystore to
270
+ * `wallets/.trash/`. The default wallet and a wallet that still holds USDC
271
+ * are refused unless forced.
179
272
  *
180
273
  * `allowDefault` exists for one caller: `vapi import --replace`, which puts a
181
274
  * new wallet under the same name back in place immediately afterwards, so the
182
275
  * machine is never left without a default. `vapi wallet remove` never sets it.
183
276
  */
184
- remove(name: string, options?: {
185
- force?: boolean;
186
- balanceReader?: WalletBalanceReader;
187
- allowDefault?: boolean;
188
- }): Promise<TrashedWallet>;
277
+ remove(name: string, options?: WalletRemoveOptions): Promise<TrashedWallet>;
278
+ private removeWithMovementLockHeld;
189
279
  /** Brings the most recently removed wallet of that name back. */
190
280
  restore(name: string): Promise<ResolvedWallet>;
281
+ private restoreWithAccountMutationLockHeld;
191
282
  /** Every removed wallet still in the trash, newest first. */
192
283
  listTrash(): Promise<TrashedWallet[]>;
193
284
  /**
194
285
  * Moves a 0.2.x home into the wallet layout, once: `keystore.json` becomes
195
- * `wallets/main.json` and `keystore.json` stays behind as a symlink for one
196
- * release, so scripts and 0.2.x callers keep working. The keystore contents
197
- * are never rewritten, and a home without a keystore migrates nothing.
286
+ * `wallets/main.json`, ready for vault migration. The keystore contents are
287
+ * never rewritten, and a home without a keystore migrates nothing.
198
288
  */
199
289
  migrateLegacyLayout(): Promise<LayoutMigration>;
200
290
  private now;
201
291
  private newEntry;
202
292
  private prepareNewWallet;
203
293
  private registerWallet;
204
- /**
205
- * Keeps the compatibility symlink honest: when the wallet it points at moves,
206
- * the link follows it, and when that wallet is removed, the link goes too.
207
- */
208
- private retargetLegacyKeystoreLink;
294
+ private get vaultPath();
295
+ private readVaultUnlocked;
296
+ private registerMissingVaultAccounts;
297
+ private openVault;
298
+ private dropVaultCache;
209
299
  private update;
210
300
  private readRegistry;
211
301
  private writeRegistry;
@@ -215,6 +305,12 @@ export declare class WalletStore {
215
305
  * registry yet — the legacy `config.spendCaps`, and otherwise the defaults.
216
306
  */
217
307
  export declare function spendCapsForWallet(store: WalletStore, name?: WalletName): Promise<SpendCaps>;
308
+ /** Formats atomic USDC without floating point for JSON-facing cap objects. */
309
+ export declare function formatCeilingUsd(ceilingAtomic: bigint | null): string;
310
+ /** The JSON fragment used by account and caps output. */
311
+ export declare function ceilingCapsJson(caps: Pick<WalletCeilingCaps, "ceilingAtomic">): {
312
+ ceilingUsd: string;
313
+ };
218
314
  /** Rejects anything that is not a wallet name, including path traversal. */
219
315
  export declare function assertWalletName(value: string): WalletName;
220
316
  //# sourceMappingURL=wallet-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-store.d.ts","sourceRoot":"","sources":["../src/wallet-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet-store.d.ts","sourceRoot":"","sources":["../src/wallet-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
+ import { type CeilingSweepHook } from "./ceiling.js";
2
+ import type { RunRef } from "./agent-run.js";
1
3
  import type { SpendCaps, VapiConfig } from "./config.js";
2
4
  import type { VapiPaymentAccount } from "./keystore.js";
3
5
  import { type LookupFn } from "./net-guard.js";
4
6
  import { type Receipt } from "./receipts.js";
7
+ import { type RunBudget } from "./run-budget.js";
5
8
  import type { WalletName } from "./wallet-name.js";
6
9
  import { type X402Quote, type X402SettlementOutcome } from "./x402.js";
7
10
  export type PayRequestArgs = {
@@ -20,9 +23,14 @@ export type PayRequestArgs = {
20
23
  preferNetworks?: string[];
21
24
  paymentId?: string;
22
25
  now?: Date;
26
+ allowanceExpiresAt?: Date;
23
27
  nowMs?: () => number;
24
28
  source?: string;
25
29
  lookup?: LookupFn;
30
+ /** Optional settled-call hook; omitted or false keeps payment tests and custom SDK flows inert. */
31
+ ceilingSweep?: CeilingSweepHook | false;
32
+ runBudget?: RunBudget;
33
+ run?: RunRef;
26
34
  };
27
35
  export type PayRequestResult = {
28
36
  response: Response;
@@ -101,9 +109,13 @@ export type CompleteX402PaymentArgs<T = undefined> = {
101
109
  expectedPayTo?: string;
102
110
  paymentId?: string;
103
111
  now?: Date;
112
+ allowanceExpiresAt?: Date;
104
113
  nowMs?: () => number;
105
114
  quoteStartedMs?: number;
106
115
  trace?: X402PaymentTrace;
116
+ /** Runs only after a successful, decisively settled paid result is ready. */
117
+ ceilingSweep?: CeilingSweepHook | false;
118
+ runBudget?: RunBudget;
107
119
  };
108
120
  export type CompleteX402PaymentResult<T = undefined> = {
109
121
  response: Response;
@@ -1 +1 @@
1
- {"version":3,"file":"x402-pay.d.ts","sourceRoot":"","sources":["../src/x402-pay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"x402-pay.d.ts","sourceRoot":"","sources":["../src/x402-pay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAsC,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,KAAK,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,mGAAmG;IACnG,YAAY,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAK;aAIvB,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,GAAG,oBAAoB;aAEvE,kBAAkB,CAAC,EAAE,sBAAsB;IAL7D,QAAQ,CAAC,IAAI,sBAAsB;gBAGjB,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,GAAG,oBAAoB,EACvF,OAAO,EAAE,MAAM,EACC,kBAAkB,CAAC,EAAE,sBAAsB,YAAA,EAC3D,OAAO,CAAC,EAAE,YAAY,GAAG;QACvB,gBAAgB,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAC5D,mBAAmB,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;KAChE;IAOH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACzE;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,GAAG,SAAS,IAAI;IACnD,SAAS,EAAE,kBAAkB,CAAC;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,CAAC,GAAG,SAAS,IAAI;IACrD,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,qBAAqB,CAAC;CAC1C,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiFhF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,SAAS,EACrD,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CA6OvC"}
package/dist/x402.d.ts CHANGED
@@ -147,6 +147,7 @@ export declare function buildEip3009TypedData(args: {
147
147
  quote: X402Quote;
148
148
  nonce: Hex;
149
149
  nowSeconds: number;
150
+ maximumValidBeforeSeconds?: number;
150
151
  }): {
151
152
  authorization: Eip3009Authorization;
152
153
  typedData: X402TypedData;
@@ -155,6 +156,7 @@ export declare function buildX402Payment(args: {
155
156
  signer: X402Signer;
156
157
  quote: X402Quote;
157
158
  nowSeconds?: number;
159
+ maximumValidBeforeSeconds?: number;
158
160
  nonce?: Hex;
159
161
  fetchImpl?: typeof fetch;
160
162
  paymentId?: string;
@@ -168,6 +170,7 @@ export declare function buildCompatibleX402Payment(args: {
168
170
  account: X402Signer;
169
171
  quote: X402Quote;
170
172
  nowSeconds?: number;
173
+ maximumValidBeforeSeconds?: number;
171
174
  nonce?: Hex;
172
175
  fetchImpl?: typeof fetch;
173
176
  paymentId?: string;