@exagent/sdk 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -204,26 +204,6 @@ interface TradeResult {
204
204
  amountIn: string;
205
205
  expectedAmountOut: string;
206
206
  }
207
- /**
208
- * Basic staking info (raw contract data)
209
- */
210
- interface StakeInfo {
211
- amount: bigint;
212
- unlockTime: bigint;
213
- lockDuration: bigint;
214
- vEXABalance: bigint;
215
- }
216
- /**
217
- * Extended staking info with computed fields
218
- */
219
- interface StakingInfo$1 extends StakeInfo {
220
- /** Current vEXA balance (with time decay applied) */
221
- currentVeEXA: bigint;
222
- /** Whether the lock has expired */
223
- isUnlocked: boolean;
224
- /** Remaining time until unlock in seconds */
225
- remainingLockTime: bigint;
226
- }
227
207
  /**
228
208
  * Vault configuration for creating a new vault
229
209
  */
@@ -887,911 +867,219 @@ declare class ExagentRegistry {
887
867
  }>;
888
868
  /**
889
869
  * Update the agent's LLM config hash on-chain
890
- * @param agentId The agent's ID
891
- * @param configHash The keccak256 hash of (provider, model)
892
- * @returns Transaction hash
893
- */
894
- updateConfig(agentId: bigint, configHash: `0x${string}`): Promise<Hash>;
895
- /**
896
- * Get the current config hash for an agent
897
- * @param agentId The agent's ID
898
- * @returns Config hash (bytes32(0) if never set)
899
- */
900
- getConfigHash(agentId: bigint): Promise<`0x${string}`>;
901
- /**
902
- * Calculate the config hash for a provider and model
903
- * @param provider The LLM provider name (e.g., "openai", "anthropic")
904
- * @param model The model name (e.g., "gpt-4", "claude-opus-4.5")
905
- * @returns keccak256 hash of the config
906
- */
907
- static calculateConfigHash(provider: string, model: string): `0x${string}`;
908
- /**
909
- * Retire an agent — marks it as retired, unlinks all wallets, allows new agent registration
910
- * @param agentId The agent's ID
911
- * @returns Transaction hash
912
- */
913
- retireAgent(agentId: bigint): Promise<Hash>;
914
- /**
915
- * Check if an agent is retired
916
- * @param agentId The agent's ID
917
- * @returns True if agent is retired
918
- */
919
- isRetired(agentId: bigint): Promise<boolean>;
920
- /**
921
- * Check if a token trade is allowed for an agent's risk universe
922
- * @param agentId The agent's ID
923
- * @param token The token address to check
924
- * @param aggregator The aggregator being used (for trusted aggregator bypass)
925
- * @returns True if the trade is allowed
926
- */
927
- isTradeAllowed(agentId: bigint, token: Address, aggregator: Address): Promise<boolean>;
928
- /**
929
- * Get the risk universe for an agent
930
- * @param agentId The agent's ID
931
- * @returns Risk universe (0=Core, 1=Established, 2=Derivatives, 3=Emerging, 4=Frontier)
932
- */
933
- getRiskUniverse(agentId: bigint): Promise<number>;
934
- /**
935
- * Get trade count for an agent
936
- * @param agentId The agent's ID
937
- * @returns Number of recorded trades
938
- */
939
- getTradeCount(agentId: bigint): Promise<bigint>;
940
- }
941
-
942
- /**
943
- * Vault info
944
- */
945
- interface VaultInfo {
946
- address: Address;
947
- name: string;
948
- symbol: string;
949
- asset: Address;
950
- agentId: bigint;
951
- totalAssets: bigint;
952
- totalSupply: bigint;
953
- sharePrice: bigint;
954
- highWaterMark: bigint;
955
- performanceFeeBps: bigint;
956
- managementFeeBps: bigint;
957
- feeRecipient: Address;
958
- depositsPaused: boolean;
959
- withdrawalsPaused: boolean;
960
- circuitBreakerActive: boolean;
961
- }
962
- /**
963
- * User's vault position
964
- */
965
- interface VaultPosition {
966
- shares: bigint;
967
- effectiveShares: bigint;
968
- pendingWithdrawals: bigint;
969
- assetsValue: bigint;
970
- userHighWaterMark: bigint;
971
- }
972
- /**
973
- * Withdrawal request details
974
- */
975
- interface WithdrawalRequest {
976
- requestId: bigint;
977
- owner: Address;
978
- receiver: Address;
979
- shares: bigint;
980
- requestTime: bigint;
981
- processed: boolean;
982
- claimableAt: bigint;
983
- }
984
- /**
985
- * ExagentVault SDK interface for ERC-4626 copy trading vaults
986
- */
987
- declare class ExagentVault {
988
- readonly address: Address;
989
- private readonly publicClient;
990
- private readonly walletClient?;
991
- private readonly chain;
992
- private readonly account?;
993
- constructor(vaultAddress: Address, publicClient: any, walletClient?: any, chain?: Chain, account?: Account);
994
- /**
995
- * Get comprehensive vault info
996
- */
997
- getVaultInfo(): Promise<VaultInfo>;
998
- /**
999
- * Get user's position in the vault
1000
- */
1001
- getPosition(user: Address): Promise<VaultPosition>;
1002
- /**
1003
- * Get current share price (assets per share, scaled to 1e18)
1004
- */
1005
- getSharePrice(): Promise<bigint>;
1006
- /**
1007
- * Preview deposit - get shares for given assets
1008
- */
1009
- previewDeposit(assets: bigint): Promise<bigint>;
1010
- /**
1011
- * Preview withdrawal - get assets for given shares
1012
- */
1013
- previewRedeem(shares: bigint): Promise<bigint>;
1014
- /**
1015
- * Get max deposit amount
1016
- */
1017
- maxDeposit(receiver: Address): Promise<bigint>;
1018
- /**
1019
- * Get max withdrawal amount
1020
- */
1021
- maxWithdraw(owner: Address): Promise<bigint>;
1022
- /**
1023
- * Get rate limit status
1024
- */
1025
- getRateLimitStatus(): Promise<{
1026
- remaining: bigint;
1027
- periodEnds: bigint;
1028
- }>;
1029
- /**
1030
- * Get pending withdrawal request
1031
- */
1032
- getPendingWithdrawal(requestId: bigint): Promise<WithdrawalRequest>;
1033
- /**
1034
- * Deposit assets into the vault
1035
- * @param assets Amount of underlying asset to deposit
1036
- * @param receiver Address to receive vault shares
1037
- * @returns Transaction hash
1038
- */
1039
- deposit(assets: bigint, receiver?: Address): Promise<Hash>;
1040
- /**
1041
- * Withdraw assets from the vault
1042
- * @param assets Amount of underlying asset to withdraw
1043
- * @param receiver Address to receive assets
1044
- * @param owner Address whose shares to burn (defaults to caller)
1045
- * @returns Transaction hash
1046
- */
1047
- withdraw(assets: bigint, receiver?: Address, owner?: Address): Promise<Hash>;
1048
- /**
1049
- * Redeem shares for assets
1050
- * @param shares Amount of shares to redeem
1051
- * @param receiver Address to receive assets
1052
- * @param owner Address whose shares to burn (defaults to caller)
1053
- * @returns Transaction hash
1054
- */
1055
- redeem(shares: bigint, receiver?: Address, owner?: Address): Promise<Hash>;
1056
- /**
1057
- * Redeem all shares safely — charges performance fee first, then redeems remaining balance.
1058
- * Use this instead of redeem(fullBalance) to avoid ERC4626ExceededMaxRedeem revert.
1059
- * @param receiver Address to receive assets
1060
- * @param owner Address whose shares to burn (defaults to caller)
1061
- * @returns Transaction hash
1062
- */
1063
- redeemMax(receiver?: Address, owner?: Address): Promise<Hash>;
1064
- /**
1065
- * Withdraw all assets safely — charges performance fee first, then withdraws remaining balance.
1066
- * @param receiver Address to receive assets
1067
- * @param owner Address whose shares to burn (defaults to caller)
1068
- * @returns Transaction hash
1069
- */
1070
- withdrawMax(receiver?: Address, owner?: Address): Promise<Hash>;
1071
- /**
1072
- * Request a queued withdrawal (for large amounts)
1073
- * @param shares Amount of shares to withdraw
1074
- * @param receiver Address to receive assets
1075
- * @returns Transaction hash
1076
- */
1077
- requestWithdrawal(shares: bigint, receiver?: Address): Promise<Hash>;
1078
- /**
1079
- * Claim a pending withdrawal request
1080
- * @param requestId The withdrawal request ID
1081
- * @returns Transaction hash
1082
- */
1083
- claimWithdrawal(requestId: bigint): Promise<Hash>;
1084
- /**
1085
- * Cancel a pending withdrawal request
1086
- * @param requestId The withdrawal request ID
1087
- * @returns Transaction hash
1088
- */
1089
- cancelWithdrawal(requestId: bigint): Promise<Hash>;
1090
- /**
1091
- * Emergency withdrawal with penalty (50% if vault < 7 days old, 20% otherwise).
1092
- * Penalty stays in the vault for remaining backers.
1093
- * @returns Transaction hash
1094
- */
1095
- emergencyWithdraw(): Promise<Hash>;
1096
- /**
1097
- * Approve vault to spend underlying asset
1098
- * @param assetAddress The asset token address
1099
- * @param amount Amount to approve
1100
- * @returns Transaction hash
1101
- */
1102
- approveAsset(assetAddress: Address, amount: bigint): Promise<Hash>;
1103
- }
1104
-
1105
- /**
1106
- * ExagentStaking ABI (Mainnet — Two-Phase: Deposit → Lock)
1107
- */
1108
- declare const EXAGENT_STAKING_ABI: readonly [{
1109
- readonly type: "function";
1110
- readonly name: "exaToken";
1111
- readonly inputs: readonly [];
1112
- readonly outputs: readonly [{
1113
- readonly type: "address";
1114
- }];
1115
- readonly stateMutability: "view";
1116
- }, {
1117
- readonly type: "function";
1118
- readonly name: "totalDeposited";
1119
- readonly inputs: readonly [];
1120
- readonly outputs: readonly [{
1121
- readonly type: "uint256";
1122
- }];
1123
- readonly stateMutability: "view";
1124
- }, {
1125
- readonly type: "function";
1126
- readonly name: "totalLocked";
1127
- readonly inputs: readonly [];
1128
- readonly outputs: readonly [{
1129
- readonly type: "uint256";
1130
- }];
1131
- readonly stateMutability: "view";
1132
- }, {
1133
- readonly type: "function";
1134
- readonly name: "totalVeEXA";
1135
- readonly inputs: readonly [];
1136
- readonly outputs: readonly [{
1137
- readonly type: "uint256";
1138
- }];
1139
- readonly stateMutability: "view";
1140
- }, {
1141
- readonly type: "function";
1142
- readonly name: "totalEffectiveVeEXA";
1143
- readonly inputs: readonly [];
1144
- readonly outputs: readonly [{
1145
- readonly type: "uint256";
1146
- }];
1147
- readonly stateMutability: "view";
1148
- }, {
1149
- readonly type: "function";
1150
- readonly name: "MIN_LOCK_DURATION";
1151
- readonly inputs: readonly [];
1152
- readonly outputs: readonly [{
1153
- readonly type: "uint256";
1154
- }];
1155
- readonly stateMutability: "view";
1156
- }, {
1157
- readonly type: "function";
1158
- readonly name: "MAX_LOCK_DURATION";
1159
- readonly inputs: readonly [];
1160
- readonly outputs: readonly [{
1161
- readonly type: "uint256";
1162
- }];
1163
- readonly stateMutability: "view";
1164
- }, {
1165
- readonly type: "function";
1166
- readonly name: "VAULT_ACCESS_THRESHOLD";
1167
- readonly inputs: readonly [];
1168
- readonly outputs: readonly [{
1169
- readonly type: "uint256";
1170
- }];
1171
- readonly stateMutability: "view";
1172
- }, {
1173
- readonly type: "function";
1174
- readonly name: "PRECISION";
1175
- readonly inputs: readonly [];
1176
- readonly outputs: readonly [{
1177
- readonly type: "uint256";
1178
- }];
1179
- readonly stateMutability: "view";
1180
- }, {
1181
- readonly type: "function";
1182
- readonly name: "deposit";
1183
- readonly inputs: readonly [{
1184
- readonly name: "amount";
1185
- readonly type: "uint256";
1186
- }];
1187
- readonly outputs: readonly [];
1188
- readonly stateMutability: "nonpayable";
1189
- }, {
1190
- readonly type: "function";
1191
- readonly name: "withdraw";
1192
- readonly inputs: readonly [{
1193
- readonly name: "amount";
1194
- readonly type: "uint256";
1195
- }];
1196
- readonly outputs: readonly [];
1197
- readonly stateMutability: "nonpayable";
1198
- }, {
1199
- readonly type: "function";
1200
- readonly name: "lock";
1201
- readonly inputs: readonly [{
1202
- readonly name: "amount";
1203
- readonly type: "uint256";
1204
- }, {
1205
- readonly name: "lockDuration";
1206
- readonly type: "uint256";
1207
- }];
1208
- readonly outputs: readonly [];
1209
- readonly stateMutability: "nonpayable";
1210
- }, {
1211
- readonly type: "function";
1212
- readonly name: "extendLock";
1213
- readonly inputs: readonly [{
1214
- readonly name: "newLockDuration";
1215
- readonly type: "uint256";
1216
- }];
1217
- readonly outputs: readonly [];
1218
- readonly stateMutability: "nonpayable";
1219
- }, {
1220
- readonly type: "function";
1221
- readonly name: "unlock";
1222
- readonly inputs: readonly [];
1223
- readonly outputs: readonly [];
1224
- readonly stateMutability: "nonpayable";
1225
- }, {
1226
- readonly type: "function";
1227
- readonly name: "emergencyWithdraw";
1228
- readonly inputs: readonly [];
1229
- readonly outputs: readonly [];
1230
- readonly stateMutability: "nonpayable";
1231
- }, {
1232
- readonly type: "function";
1233
- readonly name: "claimRewards";
1234
- readonly inputs: readonly [];
1235
- readonly outputs: readonly [];
1236
- readonly stateMutability: "nonpayable";
1237
- }, {
1238
- readonly type: "function";
1239
- readonly name: "claimRewardsMulti";
1240
- readonly inputs: readonly [];
1241
- readonly outputs: readonly [];
1242
- readonly stateMutability: "nonpayable";
1243
- }, {
1244
- readonly type: "function";
1245
- readonly name: "claimRewardsToken";
1246
- readonly inputs: readonly [{
1247
- readonly name: "token";
1248
- readonly type: "address";
1249
- }];
1250
- readonly outputs: readonly [];
1251
- readonly stateMutability: "nonpayable";
1252
- }, {
1253
- readonly type: "function";
1254
- readonly name: "depositedAmount";
1255
- readonly inputs: readonly [{
1256
- readonly name: "user";
1257
- readonly type: "address";
1258
- }];
1259
- readonly outputs: readonly [{
1260
- readonly type: "uint256";
1261
- }];
1262
- readonly stateMutability: "view";
1263
- }, {
1264
- readonly type: "function";
1265
- readonly name: "locks";
1266
- readonly inputs: readonly [{
1267
- readonly name: "user";
1268
- readonly type: "address";
1269
- }];
1270
- readonly outputs: readonly [{
1271
- readonly name: "amount";
1272
- readonly type: "uint256";
1273
- }, {
1274
- readonly name: "unlockTime";
1275
- readonly type: "uint256";
1276
- }, {
1277
- readonly name: "lockDuration";
1278
- readonly type: "uint256";
1279
- }, {
1280
- readonly name: "vEXABalance";
1281
- readonly type: "uint256";
1282
- }];
1283
- readonly stateMutability: "view";
1284
- }, {
1285
- readonly type: "function";
1286
- readonly name: "getVeEXABalance";
1287
- readonly inputs: readonly [{
1288
- readonly name: "user";
1289
- readonly type: "address";
1290
- }];
1291
- readonly outputs: readonly [{
1292
- readonly type: "uint256";
1293
- }];
1294
- readonly stateMutability: "view";
1295
- }, {
1296
- readonly type: "function";
1297
- readonly name: "getEffectiveVeEXA";
1298
- readonly inputs: readonly [{
1299
- readonly name: "user";
1300
- readonly type: "address";
1301
- }];
1302
- readonly outputs: readonly [{
1303
- readonly type: "uint256";
1304
- }];
1305
- readonly stateMutability: "view";
1306
- }, {
1307
- readonly type: "function";
1308
- readonly name: "calculateVeEXA";
1309
- readonly inputs: readonly [{
1310
- readonly name: "amount";
1311
- readonly type: "uint256";
1312
- }, {
1313
- readonly name: "lockDuration";
1314
- readonly type: "uint256";
1315
- }];
1316
- readonly outputs: readonly [{
1317
- readonly type: "uint256";
1318
- }];
1319
- readonly stateMutability: "pure";
1320
- }, {
1321
- readonly type: "function";
1322
- readonly name: "pendingRewards";
1323
- readonly inputs: readonly [{
1324
- readonly name: "user";
1325
- readonly type: "address";
1326
- }];
1327
- readonly outputs: readonly [{
1328
- readonly type: "uint256";
1329
- }];
1330
- readonly stateMutability: "view";
1331
- }, {
1332
- readonly type: "function";
1333
- readonly name: "pendingRewardsForToken";
1334
- readonly inputs: readonly [{
1335
- readonly name: "user";
1336
- readonly type: "address";
1337
- }, {
1338
- readonly name: "token";
1339
- readonly type: "address";
1340
- }];
1341
- readonly outputs: readonly [{
1342
- readonly type: "uint256";
1343
- }];
1344
- readonly stateMutability: "view";
1345
- }, {
1346
- readonly type: "function";
1347
- readonly name: "getEarningsTier";
1348
- readonly inputs: readonly [{
1349
- readonly name: "user";
1350
- readonly type: "address";
1351
- }];
1352
- readonly outputs: readonly [{
1353
- readonly name: "multiplierBps";
1354
- readonly type: "uint256";
1355
- }, {
1356
- readonly name: "tierName";
1357
- readonly type: "string";
1358
- }];
1359
- readonly stateMutability: "view";
1360
- }, {
1361
- readonly type: "function";
1362
- readonly name: "getEmergencyWithdrawPenalty";
1363
- readonly inputs: readonly [{
1364
- readonly name: "user";
1365
- readonly type: "address";
1366
- }];
1367
- readonly outputs: readonly [{
1368
- readonly name: "penaltyBps";
1369
- readonly type: "uint256";
1370
- }];
1371
- readonly stateMutability: "view";
1372
- }, {
1373
- readonly type: "function";
1374
- readonly name: "hasVaultAccess";
1375
- readonly inputs: readonly [{
1376
- readonly name: "user";
1377
- readonly type: "address";
1378
- }];
1379
- readonly outputs: readonly [{
1380
- readonly type: "bool";
1381
- }];
1382
- readonly stateMutability: "view";
1383
- }, {
1384
- readonly type: "function";
1385
- readonly name: "getUnlockedBalance";
1386
- readonly inputs: readonly [{
1387
- readonly name: "user";
1388
- readonly type: "address";
1389
- }];
1390
- readonly outputs: readonly [{
1391
- readonly type: "uint256";
1392
- }];
1393
- readonly stateMutability: "view";
1394
- }, {
1395
- readonly type: "function";
1396
- readonly name: "getRewardTokens";
1397
- readonly inputs: readonly [];
1398
- readonly outputs: readonly [{
1399
- readonly type: "address[]";
1400
- }];
1401
- readonly stateMutability: "view";
1402
- }, {
1403
- readonly type: "function";
1404
- readonly name: "isRewardToken";
1405
- readonly inputs: readonly [{
1406
- readonly name: "token";
1407
- readonly type: "address";
1408
- }];
1409
- readonly outputs: readonly [{
1410
- readonly type: "bool";
1411
- }];
1412
- readonly stateMutability: "view";
1413
- }, {
1414
- readonly type: "event";
1415
- readonly name: "Deposited";
1416
- readonly inputs: readonly [{
1417
- readonly name: "user";
1418
- readonly type: "address";
1419
- readonly indexed: true;
1420
- }, {
1421
- readonly name: "amount";
1422
- readonly type: "uint256";
1423
- readonly indexed: false;
1424
- }, {
1425
- readonly name: "totalDeposited";
1426
- readonly type: "uint256";
1427
- readonly indexed: false;
1428
- }];
1429
- }, {
1430
- readonly type: "event";
1431
- readonly name: "Withdrawn";
1432
- readonly inputs: readonly [{
1433
- readonly name: "user";
1434
- readonly type: "address";
1435
- readonly indexed: true;
1436
- }, {
1437
- readonly name: "amount";
1438
- readonly type: "uint256";
1439
- readonly indexed: false;
1440
- }, {
1441
- readonly name: "totalDeposited";
1442
- readonly type: "uint256";
1443
- readonly indexed: false;
1444
- }];
1445
- }, {
1446
- readonly type: "event";
1447
- readonly name: "Locked";
1448
- readonly inputs: readonly [{
1449
- readonly name: "user";
1450
- readonly type: "address";
1451
- readonly indexed: true;
1452
- }, {
1453
- readonly name: "amount";
1454
- readonly type: "uint256";
1455
- readonly indexed: false;
1456
- }, {
1457
- readonly name: "lockDuration";
1458
- readonly type: "uint256";
1459
- readonly indexed: false;
1460
- }, {
1461
- readonly name: "unlockTime";
1462
- readonly type: "uint256";
1463
- readonly indexed: false;
1464
- }, {
1465
- readonly name: "vEXABalance";
1466
- readonly type: "uint256";
1467
- readonly indexed: false;
1468
- }];
1469
- }, {
1470
- readonly type: "event";
1471
- readonly name: "Unlocked";
1472
- readonly inputs: readonly [{
1473
- readonly name: "user";
1474
- readonly type: "address";
1475
- readonly indexed: true;
1476
- }, {
1477
- readonly name: "amount";
1478
- readonly type: "uint256";
1479
- readonly indexed: false;
1480
- }];
1481
- }, {
1482
- readonly type: "event";
1483
- readonly name: "EmergencyWithdrawal";
1484
- readonly inputs: readonly [{
1485
- readonly name: "user";
1486
- readonly type: "address";
1487
- readonly indexed: true;
1488
- }, {
1489
- readonly name: "returned";
1490
- readonly type: "uint256";
1491
- readonly indexed: false;
1492
- }, {
1493
- readonly name: "penalty";
1494
- readonly type: "uint256";
1495
- readonly indexed: false;
1496
- }, {
1497
- readonly name: "penaltyBps";
1498
- readonly type: "uint256";
1499
- readonly indexed: false;
1500
- }];
1501
- }, {
1502
- readonly type: "event";
1503
- readonly name: "LockExtended";
1504
- readonly inputs: readonly [{
1505
- readonly name: "user";
1506
- readonly type: "address";
1507
- readonly indexed: true;
1508
- }, {
1509
- readonly name: "newUnlockTime";
1510
- readonly type: "uint256";
1511
- readonly indexed: false;
1512
- }, {
1513
- readonly name: "newVeEXABalance";
1514
- readonly type: "uint256";
1515
- readonly indexed: false;
1516
- }];
1517
- }, {
1518
- readonly type: "event";
1519
- readonly name: "RewardsClaimed";
1520
- readonly inputs: readonly [{
1521
- readonly name: "user";
1522
- readonly type: "address";
1523
- readonly indexed: true;
1524
- }, {
1525
- readonly name: "amount";
1526
- readonly type: "uint256";
1527
- readonly indexed: false;
1528
- }];
1529
- }, {
1530
- readonly type: "event";
1531
- readonly name: "MultiTokenRewardsClaimed";
1532
- readonly inputs: readonly [{
1533
- readonly name: "user";
1534
- readonly type: "address";
1535
- readonly indexed: true;
1536
- }, {
1537
- readonly name: "token";
1538
- readonly type: "address";
1539
- readonly indexed: true;
1540
- }, {
1541
- readonly name: "amount";
1542
- readonly type: "uint256";
1543
- readonly indexed: false;
1544
- }];
1545
- }];
1546
- /**
1547
- * Deposit info for a user (Phase 1 — no lock)
1548
- */
1549
- interface DepositInfo {
1550
- /** Total EXA deposited (locked + unlocked) */
1551
- deposited: bigint;
1552
- /** EXA currently locked */
1553
- locked: bigint;
1554
- /** EXA available for withdrawal or locking */
1555
- unlocked: bigint;
1556
- /** Whether user has vault access (meets deposit threshold) */
1557
- hasVaultAccess: boolean;
870
+ * @param agentId The agent's ID
871
+ * @param configHash The keccak256 hash of (provider, model)
872
+ * @returns Transaction hash
873
+ */
874
+ updateConfig(agentId: bigint, configHash: `0x${string}`): Promise<Hash>;
875
+ /**
876
+ * Get the current config hash for an agent
877
+ * @param agentId The agent's ID
878
+ * @returns Config hash (bytes32(0) if never set)
879
+ */
880
+ getConfigHash(agentId: bigint): Promise<`0x${string}`>;
881
+ /**
882
+ * Calculate the config hash for a provider and model
883
+ * @param provider The LLM provider name (e.g., "openai", "anthropic")
884
+ * @param model The model name (e.g., "gpt-4", "claude-opus-4.5")
885
+ * @returns keccak256 hash of the config
886
+ */
887
+ static calculateConfigHash(provider: string, model: string): `0x${string}`;
888
+ /**
889
+ * Retire an agent — marks it as retired, unlinks all wallets, allows new agent registration
890
+ * @param agentId The agent's ID
891
+ * @returns Transaction hash
892
+ */
893
+ retireAgent(agentId: bigint): Promise<Hash>;
894
+ /**
895
+ * Check if an agent is retired
896
+ * @param agentId The agent's ID
897
+ * @returns True if agent is retired
898
+ */
899
+ isRetired(agentId: bigint): Promise<boolean>;
900
+ /**
901
+ * Check if a token trade is allowed for an agent's risk universe
902
+ * @param agentId The agent's ID
903
+ * @param token The token address to check
904
+ * @param aggregator The aggregator being used (for trusted aggregator bypass)
905
+ * @returns True if the trade is allowed
906
+ */
907
+ isTradeAllowed(agentId: bigint, token: Address, aggregator: Address): Promise<boolean>;
908
+ /**
909
+ * Get the risk universe for an agent
910
+ * @param agentId The agent's ID
911
+ * @returns Risk universe (0=Core, 1=Established, 2=Derivatives, 3=Emerging, 4=Frontier)
912
+ */
913
+ getRiskUniverse(agentId: bigint): Promise<number>;
914
+ /**
915
+ * Get trade count for an agent
916
+ * @param agentId The agent's ID
917
+ * @returns Number of recorded trades
918
+ */
919
+ getTradeCount(agentId: bigint): Promise<bigint>;
1558
920
  }
921
+
1559
922
  /**
1560
- * Lock info for a user (Phase 2)
923
+ * Vault info
1561
924
  */
1562
- interface LockInfo {
1563
- /** Amount of EXA locked */
1564
- amount: bigint;
1565
- /** Timestamp when lock expires */
1566
- unlockTime: bigint;
1567
- /** Original lock duration in seconds */
1568
- lockDuration: bigint;
1569
- /** vEXA balance at lock time (before time decay) */
1570
- vEXABalance: bigint;
1571
- /** Current vEXA balance (with time decay applied) */
1572
- currentVeEXA: bigint;
1573
- /** Whether the lock has expired */
1574
- isUnlocked: boolean;
1575
- /** Remaining time until unlock in seconds */
1576
- remainingLockTime: bigint;
925
+ interface VaultInfo {
926
+ address: Address;
927
+ name: string;
928
+ symbol: string;
929
+ asset: Address;
930
+ agentId: bigint;
931
+ totalAssets: bigint;
932
+ totalSupply: bigint;
933
+ sharePrice: bigint;
934
+ highWaterMark: bigint;
935
+ performanceFeeBps: bigint;
936
+ managementFeeBps: bigint;
937
+ feeRecipient: Address;
938
+ depositsPaused: boolean;
939
+ withdrawalsPaused: boolean;
940
+ circuitBreakerActive: boolean;
1577
941
  }
1578
942
  /**
1579
- * Combined staking info (deposit + lock)
943
+ * User's vault position
1580
944
  */
1581
- interface StakingInfo {
1582
- /** Deposit phase info */
1583
- deposit: DepositInfo;
1584
- /** Lock phase info (null if no active lock) */
1585
- lock: LockInfo | null;
945
+ interface VaultPosition {
946
+ shares: bigint;
947
+ effectiveShares: bigint;
948
+ pendingWithdrawals: bigint;
949
+ assetsValue: bigint;
950
+ userHighWaterMark: bigint;
1586
951
  }
1587
952
  /**
1588
- * Earnings tier info from the mainnet staking contract
953
+ * Withdrawal request details
1589
954
  */
1590
- interface EarningsTierInfo {
1591
- /** Earnings multiplier in basis points (e.g. 10000 = 1x, 25000 = 2.5x) */
1592
- multiplierBps: bigint;
1593
- /** Tier name: None, Bronze, Silver, Gold, Platinum, Diamond */
1594
- tierName: string;
955
+ interface WithdrawalRequest {
956
+ requestId: bigint;
957
+ owner: Address;
958
+ receiver: Address;
959
+ shares: bigint;
960
+ requestTime: bigint;
961
+ processed: boolean;
962
+ claimableAt: bigint;
1595
963
  }
1596
964
  /**
1597
- * ExagentStaking SDK Two-Phase Staking: Deposit for Vault Access, Lock for vEXA + Rewards
1598
- *
1599
- * Phase 1: deposit() → withdraw()
1600
- * Deposit EXA to get vault access. No lock, no vEXA, no rewards. Instant withdraw.
1601
- *
1602
- * Phase 2: lock() → unlock() / emergencyWithdraw()
1603
- * Lock deposited EXA for vEXA voting power and tiered earnings.
1604
- * unlock() after expiry (0% penalty). emergencyWithdraw() before expiry (50%→20% penalty).
965
+ * ExagentVault SDK interface for ERC-4626 copy trading vaults
1605
966
  */
1606
- declare class ExagentStaking {
967
+ declare class ExagentVault {
1607
968
  readonly address: Address;
1608
969
  private readonly publicClient;
1609
970
  private readonly walletClient?;
1610
971
  private readonly chain;
1611
972
  private readonly account?;
1612
- constructor(stakingAddress: Address, publicClient: any, walletClient?: any, chain?: Chain, account?: Account);
1613
- /**
1614
- * Deposit EXA tokens for vault access (no lock required)
1615
- * @param amount Amount of EXA to deposit (in wei)
1616
- * @returns Transaction hash
1617
- *
1618
- * @example
1619
- * ```typescript
1620
- * // Deposit 1000 EXA to unlock vault access
1621
- * const tx = await staking.deposit(parseEther('1000'));
1622
- * ```
1623
- */
1624
- deposit(amount: bigint): Promise<Hash>;
1625
- /**
1626
- * Withdraw unlocked EXA tokens (instant, no penalty)
1627
- * @param amount Amount of EXA to withdraw (in wei)
1628
- * @returns Transaction hash
1629
- */
1630
- withdraw(amount: bigint): Promise<Hash>;
1631
- /**
1632
- * Lock deposited EXA to receive vEXA voting power and earn rewards
1633
- * @param amount Amount of deposited EXA to lock (in wei)
1634
- * @param lockDuration Lock duration in seconds (30 days to 2 years)
1635
- * @returns Transaction hash
1636
- *
1637
- * @example
1638
- * ```typescript
1639
- * // Lock 1000 EXA for 6 months
1640
- * const tx = await staking.lock(
1641
- * parseEther('1000'),
1642
- * ExagentStaking.LOCK_6_MONTHS
1643
- * );
1644
- * ```
1645
- */
1646
- lock(amount: bigint, lockDuration: bigint): Promise<Hash>;
1647
- /**
1648
- * Extend lock duration for additional voting power
1649
- * @param newLockDuration New lock duration in seconds (must be longer than remaining)
1650
- * @returns Transaction hash
1651
- */
1652
- extendLock(newLockDuration: bigint): Promise<Hash>;
1653
- /**
1654
- * Unlock EXA after lock expires (normal path — no penalty)
1655
- * Returns locked amount to unlocked deposited balance.
1656
- * @returns Transaction hash
1657
- */
1658
- unlock(): Promise<Hash>;
1659
- /**
1660
- * Emergency withdrawal — instant exit from lock with graduated penalty
1661
- * Two-phase penalty: 50%→20% over the first quarter of the lock, then flat 20% until expiry.
1662
- * Penalty goes to treasury. Remaining returns to unlocked deposit balance.
1663
- * @returns Transaction hash
1664
- */
1665
- emergencyWithdraw(): Promise<Hash>;
1666
- /**
1667
- * Claim accumulated EXA rewards
1668
- * @returns Transaction hash
1669
- */
1670
- claimRewards(): Promise<Hash>;
973
+ constructor(vaultAddress: Address, publicClient: any, walletClient?: any, chain?: Chain, account?: Account);
1671
974
  /**
1672
- * Claim all pending multi-token rewards (ETH, USDC, etc.)
1673
- * @returns Transaction hash
975
+ * Get comprehensive vault info
1674
976
  */
1675
- claimRewardsMulti(): Promise<Hash>;
977
+ getVaultInfo(): Promise<VaultInfo>;
1676
978
  /**
1677
- * Claim pending rewards for a specific token
1678
- * @param token The reward token address to claim
1679
- * @returns Transaction hash
979
+ * Get user's position in the vault
1680
980
  */
1681
- claimRewardsToken(token: Address): Promise<Hash>;
981
+ getPosition(user: Address): Promise<VaultPosition>;
1682
982
  /**
1683
- * Get comprehensive staking info for a user (deposit + lock)
1684
- * @param userAddress Address to check (defaults to connected wallet)
1685
- * @returns Combined staking info
983
+ * Get current share price (assets per share, scaled to 1e18)
1686
984
  */
1687
- getStakingInfo(userAddress?: Address): Promise<StakingInfo>;
985
+ getSharePrice(): Promise<bigint>;
1688
986
  /**
1689
- * Get deposit info for a user
1690
- * @param userAddress Address to check (defaults to connected wallet)
1691
- * @returns Deposit info
987
+ * Preview deposit - get shares for given assets
1692
988
  */
1693
- getDepositInfo(userAddress?: Address): Promise<DepositInfo>;
989
+ previewDeposit(assets: bigint): Promise<bigint>;
1694
990
  /**
1695
- * Get current vEXA balance (with time decay applied)
1696
- * @param userAddress Address to check (defaults to connected wallet)
1697
- * @returns Current vEXA balance
991
+ * Preview withdrawal - get assets for given shares
1698
992
  */
1699
- getVeEXABalance(userAddress?: Address): Promise<bigint>;
993
+ previewRedeem(shares: bigint): Promise<bigint>;
1700
994
  /**
1701
- * Get effective vEXA (with tier multiplier applied)
1702
- * @param userAddress Address to check (defaults to connected wallet)
1703
- * @returns Effective vEXA balance
995
+ * Get max deposit amount
1704
996
  */
1705
- getEffectiveVeEXA(userAddress?: Address): Promise<bigint>;
997
+ maxDeposit(receiver: Address): Promise<bigint>;
1706
998
  /**
1707
- * Check if user has vault access (meets deposit threshold)
1708
- * @param userAddress Address to check (defaults to connected wallet)
1709
- * @returns True if user can access vaults
999
+ * Get max withdrawal amount
1710
1000
  */
1711
- hasVaultAccess(userAddress?: Address): Promise<boolean>;
1001
+ maxWithdraw(owner: Address): Promise<bigint>;
1712
1002
  /**
1713
- * Get earnings tier for a user (Bronze/Silver/Gold/Platinum/Diamond)
1714
- * @param userAddress Address to check (defaults to connected wallet)
1715
- * @returns Tier info with multiplier and name
1003
+ * Get rate limit status
1716
1004
  */
1717
- getEarningsTier(userAddress?: Address): Promise<EarningsTierInfo>;
1005
+ getRateLimitStatus(): Promise<{
1006
+ remaining: bigint;
1007
+ periodEnds: bigint;
1008
+ }>;
1718
1009
  /**
1719
- * Get current emergency withdrawal penalty for a user
1720
- * @param userAddress Address to check (defaults to connected wallet)
1721
- * @returns Penalty in basis points (5000 = 50% at lock start, ramps to 2000 over first 25% of lock, then flat 2000)
1010
+ * Get pending withdrawal request
1722
1011
  */
1723
- getEmergencyWithdrawPenalty(userAddress?: Address): Promise<bigint>;
1012
+ getPendingWithdrawal(requestId: bigint): Promise<WithdrawalRequest>;
1724
1013
  /**
1725
- * Get pending EXA rewards for a user
1726
- * @param userAddress Address to check (defaults to connected wallet)
1727
- * @returns Pending reward amount in wei
1014
+ * Deposit assets into the vault
1015
+ * @param assets Amount of underlying asset to deposit
1016
+ * @param receiver Address to receive vault shares
1017
+ * @returns Transaction hash
1728
1018
  */
1729
- pendingRewards(userAddress?: Address): Promise<bigint>;
1019
+ deposit(assets: bigint, receiver?: Address): Promise<Hash>;
1730
1020
  /**
1731
- * Get pending rewards for a specific token
1732
- * @param token The reward token address
1733
- * @param userAddress Address to check (defaults to connected wallet)
1734
- * @returns Pending reward amount in wei
1021
+ * Withdraw assets from the vault
1022
+ * @param assets Amount of underlying asset to withdraw
1023
+ * @param receiver Address to receive assets
1024
+ * @param owner Address whose shares to burn (defaults to caller)
1025
+ * @returns Transaction hash
1735
1026
  */
1736
- pendingRewardsMulti(token: Address, userAddress?: Address): Promise<bigint>;
1027
+ withdraw(assets: bigint, receiver?: Address, owner?: Address): Promise<Hash>;
1737
1028
  /**
1738
- * Get list of whitelisted reward tokens
1739
- * @returns Array of reward token addresses
1029
+ * Redeem shares for assets
1030
+ * @param shares Amount of shares to redeem
1031
+ * @param receiver Address to receive assets
1032
+ * @param owner Address whose shares to burn (defaults to caller)
1033
+ * @returns Transaction hash
1740
1034
  */
1741
- getRewardTokens(): Promise<Address[]>;
1035
+ redeem(shares: bigint, receiver?: Address, owner?: Address): Promise<Hash>;
1742
1036
  /**
1743
- * Check if a token is whitelisted for rewards
1744
- * @param token The token address to check
1745
- * @returns True if token is whitelisted
1037
+ * Redeem all shares safely charges performance fee first, then redeems remaining balance.
1038
+ * Use this instead of redeem(fullBalance) to avoid ERC4626ExceededMaxRedeem revert.
1039
+ * @param receiver Address to receive assets
1040
+ * @param owner Address whose shares to burn (defaults to caller)
1041
+ * @returns Transaction hash
1746
1042
  */
1747
- isRewardToken(token: Address): Promise<boolean>;
1043
+ redeemMax(receiver?: Address, owner?: Address): Promise<Hash>;
1748
1044
  /**
1749
- * Get total EXA deposited across all users
1750
- * @returns Total deposited amount in wei
1045
+ * Withdraw all assets safely charges performance fee first, then withdraws remaining balance.
1046
+ * @param receiver Address to receive assets
1047
+ * @param owner Address whose shares to burn (defaults to caller)
1048
+ * @returns Transaction hash
1751
1049
  */
1752
- getTotalDeposited(): Promise<bigint>;
1050
+ withdrawMax(receiver?: Address, owner?: Address): Promise<Hash>;
1753
1051
  /**
1754
- * Get total EXA locked across all users
1755
- * @returns Total locked amount in wei
1052
+ * Request a queued withdrawal (for large amounts)
1053
+ * @param shares Amount of shares to withdraw
1054
+ * @param receiver Address to receive assets
1055
+ * @returns Transaction hash
1756
1056
  */
1757
- getTotalLocked(): Promise<bigint>;
1057
+ requestWithdrawal(shares: bigint, receiver?: Address): Promise<Hash>;
1758
1058
  /**
1759
- * Get total vEXA supply across all users
1760
- * @returns Total vEXA supply
1059
+ * Claim a pending withdrawal request
1060
+ * @param requestId The withdrawal request ID
1061
+ * @returns Transaction hash
1761
1062
  */
1762
- getTotalVeEXA(): Promise<bigint>;
1063
+ claimWithdrawal(requestId: bigint): Promise<Hash>;
1763
1064
  /**
1764
- * Calculate vEXA balance for a given lock (preview)
1765
- * @param amount Amount of EXA to lock
1766
- * @param lockDuration Lock duration in seconds
1767
- * @returns Expected vEXA balance
1065
+ * Cancel a pending withdrawal request
1066
+ * @param requestId The withdrawal request ID
1067
+ * @returns Transaction hash
1768
1068
  */
1769
- calculateVeEXA(amount: bigint, lockDuration: bigint): Promise<bigint>;
1069
+ cancelWithdrawal(requestId: bigint): Promise<Hash>;
1770
1070
  /**
1771
- * Get the EXA token address
1772
- * @returns EXA token contract address
1071
+ * Emergency withdrawal with penalty (50% if vault < 7 days old, 20% otherwise).
1072
+ * Penalty stays in the vault for remaining backers.
1073
+ * @returns Transaction hash
1773
1074
  */
1774
- getExaTokenAddress(): Promise<Address>;
1075
+ emergencyWithdraw(): Promise<Hash>;
1775
1076
  /**
1776
- * Approve EXA token spending for deposits
1077
+ * Approve vault to spend underlying asset
1078
+ * @param assetAddress The asset token address
1777
1079
  * @param amount Amount to approve
1778
1080
  * @returns Transaction hash
1779
1081
  */
1780
- approveExa(amount: bigint): Promise<Hash>;
1781
- /** Minimum lock duration: 30 days in seconds */
1782
- static readonly MIN_LOCK_DURATION: bigint;
1783
- /** Maximum lock duration: 2 years in seconds */
1784
- static readonly MAX_LOCK_DURATION: bigint;
1785
- /** 1 month lock duration in seconds */
1786
- static readonly LOCK_1_MONTH: bigint;
1787
- /** 3 months lock duration in seconds */
1788
- static readonly LOCK_3_MONTHS: bigint;
1789
- /** 6 months lock duration in seconds */
1790
- static readonly LOCK_6_MONTHS: bigint;
1791
- /** 1 year lock duration in seconds */
1792
- static readonly LOCK_1_YEAR: bigint;
1793
- /** 2 years lock duration in seconds */
1794
- static readonly LOCK_2_YEARS: bigint;
1082
+ approveAsset(assetAddress: Address, amount: bigint): Promise<Hash>;
1795
1083
  }
1796
1084
 
1797
1085
  /** SDK version — sent to API for version gating */
@@ -2131,12 +1419,9 @@ type NetworkType = 'mainnet';
2131
1419
  */
2132
1420
  declare const CONTRACT_ADDRESSES: Record<NetworkType, {
2133
1421
  agentRegistry: Address;
2134
- exaToken: Address;
2135
- staking: Address;
2136
1422
  router: Address;
2137
1423
  vaultFactory: Address;
2138
1424
  feeCollector: Address;
2139
- buyback: Address;
2140
1425
  serviceEscrow: Address;
2141
1426
  }>;
2142
1427
  /**
@@ -2215,7 +1500,6 @@ declare class ExagentClient {
2215
1500
  private readonly network;
2216
1501
  private readonly apiKey?;
2217
1502
  readonly registry: ExagentRegistry;
2218
- readonly staking: ExagentStaking;
2219
1503
  private _agentId?;
2220
1504
  constructor(config: ExagentClientConfig);
2221
1505
  /** Standard headers for all API requests (includes SDK version for gating) */
@@ -2296,7 +1580,9 @@ declare class ExagentClient {
2296
1580
  */
2297
1581
  private getAllowance;
2298
1582
  /**
2299
- * Approve token spending for router
1583
+ * Approve token spending for router.
1584
+ * Verifies the approval receipt succeeded — previous version silently continued
1585
+ * on reverted approvals, causing downstream "transfer amount exceeds allowance" errors.
2300
1586
  */
2301
1587
  private approveToken;
2302
1588
  /**
@@ -2371,88 +1657,6 @@ declare class ExagentClient {
2371
1657
  * @returns Transaction hash
2372
1658
  */
2373
1659
  redeemFromVault(vaultAddress: Address, shares: bigint): Promise<Hash>;
2374
- /**
2375
- * Deposit EXA tokens for vault access (no lock required)
2376
- * @param amount Amount of EXA to deposit (in wei)
2377
- * @returns Transaction hash
2378
- *
2379
- * @example
2380
- * ```typescript
2381
- * // Deposit 1000 EXA to unlock vault access
2382
- * const tx = await exagent.depositExa(parseEther('1000'));
2383
- * ```
2384
- */
2385
- depositExa(amount: bigint): Promise<Hash>;
2386
- /**
2387
- * Withdraw unlocked EXA tokens (instant, no penalty)
2388
- * @param amount Amount of EXA to withdraw (in wei)
2389
- * @returns Transaction hash
2390
- */
2391
- withdrawExa(amount: bigint): Promise<Hash>;
2392
- /**
2393
- * Lock deposited EXA to receive vEXA voting power and earn rewards
2394
- * @param amount Amount of deposited EXA to lock (in wei)
2395
- * @param lockDuration Lock duration in seconds (30 days to 2 years)
2396
- * @returns Transaction hash
2397
- *
2398
- * @example
2399
- * ```typescript
2400
- * // Lock 1000 EXA for 6 months
2401
- * const tx = await exagent.lockExa(
2402
- * parseEther('1000'),
2403
- * ExagentStaking.LOCK_6_MONTHS
2404
- * );
2405
- * ```
2406
- */
2407
- lockExa(amount: bigint, lockDuration: bigint): Promise<Hash>;
2408
- /**
2409
- * Unlock EXA after lock expires (no penalty)
2410
- * @returns Transaction hash
2411
- */
2412
- unlockExa(): Promise<Hash>;
2413
- /**
2414
- * Emergency withdrawal from active lock (graduated 50%→20% penalty)
2415
- * @returns Transaction hash
2416
- */
2417
- emergencyWithdrawExa(): Promise<Hash>;
2418
- /**
2419
- * Get comprehensive staking info (deposit + lock) for the connected wallet
2420
- * @returns Staking info including deposit status and lock status
2421
- */
2422
- getStakingInfo(): Promise<StakingInfo>;
2423
- /**
2424
- * Get deposit info for the connected wallet
2425
- * @returns Deposit info (deposited, locked, unlocked, vault access)
2426
- */
2427
- getDepositInfo(): Promise<DepositInfo>;
2428
- /**
2429
- * Get current vEXA balance for the connected wallet
2430
- * @returns Current vEXA balance (with time decay applied)
2431
- */
2432
- getVeEXABalance(): Promise<bigint>;
2433
- /**
2434
- * Check if connected wallet has vault access (meets deposit threshold)
2435
- * @returns True if user can access vaults
2436
- */
2437
- hasVaultAccess(): Promise<boolean>;
2438
- /**
2439
- * Get earnings tier for the connected wallet
2440
- * @returns Tier info with multiplier and name
2441
- */
2442
- getEarningsTier(): Promise<EarningsTierInfo>;
2443
- /**
2444
- * Get emergency withdrawal penalty for the connected wallet
2445
- * @returns Penalty in basis points (5000 = 50% at start, 2000 = 20% near expiry)
2446
- */
2447
- getEmergencyWithdrawPenalty(): Promise<bigint>;
2448
- /**
2449
- * Claim all pending staking rewards (EXA + multi-token)
2450
- * @returns Transaction hashes for EXA and multi-token claims
2451
- */
2452
- claimAllRewards(): Promise<{
2453
- exaRewards: Hash;
2454
- multiTokenRewards: Hash;
2455
- }>;
2456
1660
  /**
2457
1661
  * Get the ERC-8004 global agent identifier for the current agent
2458
1662
  *
@@ -2704,36 +1908,6 @@ declare const EXAGENT_VAULT_FACTORY_ABI: readonly [{
2704
1908
  readonly type: "uint256";
2705
1909
  }];
2706
1910
  readonly stateMutability: "view";
2707
- }, {
2708
- readonly type: "function";
2709
- readonly name: "canCreateVault";
2710
- readonly inputs: readonly [{
2711
- readonly name: "creator";
2712
- readonly type: "address";
2713
- }];
2714
- readonly outputs: readonly [{
2715
- readonly name: "canCreate";
2716
- readonly type: "bool";
2717
- }, {
2718
- readonly name: "reason";
2719
- readonly type: "string";
2720
- }];
2721
- readonly stateMutability: "view";
2722
- }, {
2723
- readonly type: "function";
2724
- readonly name: "canCreateVerifiedVault";
2725
- readonly inputs: readonly [{
2726
- readonly name: "agentId";
2727
- readonly type: "uint256";
2728
- }];
2729
- readonly outputs: readonly [{
2730
- readonly name: "isVerified";
2731
- readonly type: "bool";
2732
- }, {
2733
- readonly name: "reason";
2734
- readonly type: "string";
2735
- }];
2736
- readonly stateMutability: "view";
2737
1911
  }, {
2738
1912
  readonly type: "function";
2739
1913
  readonly name: "createVault";
@@ -2805,11 +1979,9 @@ declare const EXAGENT_VAULT_FACTORY_ABI: readonly [{
2805
1979
  * Vault creation requirements from the mainnet factory
2806
1980
  */
2807
1981
  interface VaultCreationRequirements {
2808
- veXARequired: bigint;
2809
1982
  minSeedAmount: bigint;
2810
1983
  unverifiedCapMultiplier: bigint;
2811
1984
  verifiedCapMultiplier: bigint;
2812
- stakingContract: Address;
2813
1985
  }
2814
1986
  /**
2815
1987
  * Result of checking if an address can create a vault
@@ -2844,18 +2016,12 @@ declare class ExagentVaultFactory {
2844
2016
  */
2845
2017
  getRequirements(): Promise<VaultCreationRequirements>;
2846
2018
  /**
2847
- * Check if an address can create a vault
2019
+ * Check if an address can create a vault.
2020
+ * Performs inline validation since the on-chain contract does not expose
2021
+ * a canCreateVault() view function.
2848
2022
  * @param creator Address to check
2849
2023
  */
2850
2024
  canCreateVault(creator: Address): Promise<CanCreateVaultResult>;
2851
- /**
2852
- * Check if an agent can create a verified vault (higher deposit cap)
2853
- * @param agentId Agent ID to check
2854
- */
2855
- canCreateVerifiedVault(agentId: bigint): Promise<{
2856
- isVerified: boolean;
2857
- reason: string;
2858
- }>;
2859
2025
  /**
2860
2026
  * Check if an asset is whitelisted for vault creation
2861
2027
  * @param asset Asset address to check
@@ -2903,4 +2069,4 @@ declare class ExagentVaultFactory {
2903
2069
  }>;
2904
2070
  }
2905
2071
 
2906
- export { type AgentMetadata, type AgentProfile, type StakingInfo$1 as ApiStakingInfo, CHAIN_CONFIG, CONTRACT_ADDRESSES, type CanCreateVaultResult, type CreateVaultOptions, DEFAULT_RPC_URL, DEX_ADDRESSES, type DepositInfo, EXAGENT_API_CONFIG, EXAGENT_REGISTRY_ABI, EXAGENT_ROUTER_ABI, EXAGENT_STAKING_ABI, EXAGENT_VAULT_FACTORY_ABI, type EarningsTierInfo, ExagentClient, type ExagentClientConfig, ExagentRegistry, ExagentStaking, ExagentVault, ExagentVaultFactory, type GlobalAgentId, type LockInfo, type NetworkType, type PerformanceSnapshot, type PriceQuote, type RouteQuote, type RouteStep, type RouterTradeResponse, SDK_VERSION, type ServiceRequest, type StakeInfo, type StakingInfo, type TradeIntent, type TradeResult, type UserVaultPosition, type VaultActivityEntry, type VaultConfig, type VaultCreationRequirements, type VaultInfo, type VaultPosition, type VaultSummary, type VaultTradeEntry, type WithdrawalRequest, ZERO_X_CONFIG, buildGlobalAgentId, getRpcUrl, parseGlobalAgentId };
2072
+ export { type AgentMetadata, type AgentProfile, CHAIN_CONFIG, CONTRACT_ADDRESSES, type CanCreateVaultResult, type CreateVaultOptions, DEFAULT_RPC_URL, DEX_ADDRESSES, EXAGENT_API_CONFIG, EXAGENT_REGISTRY_ABI, EXAGENT_ROUTER_ABI, EXAGENT_VAULT_FACTORY_ABI, ExagentClient, type ExagentClientConfig, ExagentRegistry, ExagentVault, ExagentVaultFactory, type GlobalAgentId, type NetworkType, type PerformanceSnapshot, type PriceQuote, type RouteQuote, type RouteStep, type RouterTradeResponse, SDK_VERSION, type ServiceRequest, type TradeIntent, type TradeResult, type UserVaultPosition, type VaultActivityEntry, type VaultConfig, type VaultCreationRequirements, type VaultInfo, type VaultPosition, type VaultSummary, type VaultTradeEntry, type WithdrawalRequest, ZERO_X_CONFIG, buildGlobalAgentId, getRpcUrl, parseGlobalAgentId };