@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.mts +163 -997
- package/dist/index.d.ts +163 -997
- package/dist/index.js +33 -1007
- package/dist/index.mjs +35 -1006
- package/package.json +1 -1
package/dist/index.d.mts
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
|
-
*
|
|
923
|
+
* Vault info
|
|
1561
924
|
*/
|
|
1562
|
-
interface
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
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
|
-
*
|
|
943
|
+
* User's vault position
|
|
1580
944
|
*/
|
|
1581
|
-
interface
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
945
|
+
interface VaultPosition {
|
|
946
|
+
shares: bigint;
|
|
947
|
+
effectiveShares: bigint;
|
|
948
|
+
pendingWithdrawals: bigint;
|
|
949
|
+
assetsValue: bigint;
|
|
950
|
+
userHighWaterMark: bigint;
|
|
1586
951
|
}
|
|
1587
952
|
/**
|
|
1588
|
-
*
|
|
953
|
+
* Withdrawal request details
|
|
1589
954
|
*/
|
|
1590
|
-
interface
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
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
|
-
*
|
|
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
|
|
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(
|
|
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
|
-
*
|
|
1673
|
-
* @returns Transaction hash
|
|
975
|
+
* Get comprehensive vault info
|
|
1674
976
|
*/
|
|
1675
|
-
|
|
977
|
+
getVaultInfo(): Promise<VaultInfo>;
|
|
1676
978
|
/**
|
|
1677
|
-
*
|
|
1678
|
-
* @param token The reward token address to claim
|
|
1679
|
-
* @returns Transaction hash
|
|
979
|
+
* Get user's position in the vault
|
|
1680
980
|
*/
|
|
1681
|
-
|
|
981
|
+
getPosition(user: Address): Promise<VaultPosition>;
|
|
1682
982
|
/**
|
|
1683
|
-
* Get
|
|
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
|
-
|
|
985
|
+
getSharePrice(): Promise<bigint>;
|
|
1688
986
|
/**
|
|
1689
|
-
*
|
|
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
|
-
|
|
989
|
+
previewDeposit(assets: bigint): Promise<bigint>;
|
|
1694
990
|
/**
|
|
1695
|
-
*
|
|
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
|
-
|
|
993
|
+
previewRedeem(shares: bigint): Promise<bigint>;
|
|
1700
994
|
/**
|
|
1701
|
-
* Get
|
|
1702
|
-
* @param userAddress Address to check (defaults to connected wallet)
|
|
1703
|
-
* @returns Effective vEXA balance
|
|
995
|
+
* Get max deposit amount
|
|
1704
996
|
*/
|
|
1705
|
-
|
|
997
|
+
maxDeposit(receiver: Address): Promise<bigint>;
|
|
1706
998
|
/**
|
|
1707
|
-
*
|
|
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
|
-
|
|
1001
|
+
maxWithdraw(owner: Address): Promise<bigint>;
|
|
1712
1002
|
/**
|
|
1713
|
-
* Get
|
|
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
|
-
|
|
1005
|
+
getRateLimitStatus(): Promise<{
|
|
1006
|
+
remaining: bigint;
|
|
1007
|
+
periodEnds: bigint;
|
|
1008
|
+
}>;
|
|
1718
1009
|
/**
|
|
1719
|
-
* Get
|
|
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
|
-
|
|
1012
|
+
getPendingWithdrawal(requestId: bigint): Promise<WithdrawalRequest>;
|
|
1724
1013
|
/**
|
|
1725
|
-
*
|
|
1726
|
-
* @param
|
|
1727
|
-
* @
|
|
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
|
-
|
|
1019
|
+
deposit(assets: bigint, receiver?: Address): Promise<Hash>;
|
|
1730
1020
|
/**
|
|
1731
|
-
*
|
|
1732
|
-
* @param
|
|
1733
|
-
* @param
|
|
1734
|
-
* @
|
|
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
|
-
|
|
1027
|
+
withdraw(assets: bigint, receiver?: Address, owner?: Address): Promise<Hash>;
|
|
1737
1028
|
/**
|
|
1738
|
-
*
|
|
1739
|
-
* @
|
|
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
|
-
|
|
1035
|
+
redeem(shares: bigint, receiver?: Address, owner?: Address): Promise<Hash>;
|
|
1742
1036
|
/**
|
|
1743
|
-
*
|
|
1744
|
-
*
|
|
1745
|
-
* @
|
|
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
|
-
|
|
1043
|
+
redeemMax(receiver?: Address, owner?: Address): Promise<Hash>;
|
|
1748
1044
|
/**
|
|
1749
|
-
*
|
|
1750
|
-
* @
|
|
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
|
-
|
|
1050
|
+
withdrawMax(receiver?: Address, owner?: Address): Promise<Hash>;
|
|
1753
1051
|
/**
|
|
1754
|
-
*
|
|
1755
|
-
* @
|
|
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
|
-
|
|
1057
|
+
requestWithdrawal(shares: bigint, receiver?: Address): Promise<Hash>;
|
|
1758
1058
|
/**
|
|
1759
|
-
*
|
|
1760
|
-
* @
|
|
1059
|
+
* Claim a pending withdrawal request
|
|
1060
|
+
* @param requestId The withdrawal request ID
|
|
1061
|
+
* @returns Transaction hash
|
|
1761
1062
|
*/
|
|
1762
|
-
|
|
1063
|
+
claimWithdrawal(requestId: bigint): Promise<Hash>;
|
|
1763
1064
|
/**
|
|
1764
|
-
*
|
|
1765
|
-
* @param
|
|
1766
|
-
* @
|
|
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
|
-
|
|
1069
|
+
cancelWithdrawal(requestId: bigint): Promise<Hash>;
|
|
1770
1070
|
/**
|
|
1771
|
-
*
|
|
1772
|
-
*
|
|
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
|
-
|
|
1075
|
+
emergencyWithdraw(): Promise<Hash>;
|
|
1775
1076
|
/**
|
|
1776
|
-
* Approve
|
|
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
|
-
|
|
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,
|
|
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 };
|