@strkfarm/sdk 2.0.0-staging.6 → 2.0.0-staging.61

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
@@ -1,6 +1,6 @@
1
- import BigNumber from 'bignumber.js';
2
1
  import * as starknet from 'starknet';
3
- import { RpcProvider, BlockIdentifier, Contract, Uint256, Call, Account, CairoCustomEnum, RawArgs } from 'starknet';
2
+ import { Uint256, RpcProvider, BlockIdentifier, Contract, Call, Account, CairoCustomEnum, RawArgs } from 'starknet';
3
+ import BigNumber from 'bignumber.js';
4
4
  import React, { ReactNode } from 'react';
5
5
  import { Quote, AvnuOptions } from '@avnu/avnu-sdk';
6
6
  import { HexString, BytesLike } from '@ericnordelo/strk-merkle-tree/dist/bytes';
@@ -31,10 +31,12 @@ declare class _Web3Number<T extends _Web3Number<T>> extends BigNumber {
31
31
  mag: bigint;
32
32
  sign: 0 | 1;
33
33
  };
34
+ toUint256(): starknet.Uint256;
34
35
  }
35
36
 
36
37
  declare class Web3Number extends _Web3Number<Web3Number> {
37
38
  static fromWei(weiNumber: string | number, decimals: number): Web3Number;
39
+ static fromUint256(uint256Value: Uint256): Web3Number;
38
40
  }
39
41
 
40
42
  /**
@@ -123,20 +125,23 @@ interface IProtocol {
123
125
  name: string;
124
126
  logo: string;
125
127
  }
126
- declare enum StrategyCategory {
127
- ALL = "all",
128
- BTC = "btc",
129
- META_VAULTS = "meta-vaults"
128
+ interface ICurator {
129
+ name: string;
130
+ logo: string;
130
131
  }
131
132
  declare enum StrategyTag {
132
- EKUBO = "Ekubo",
133
- EVERGREEN = "Evergreen",
134
- HYPER_LST = "Hyper-LST",
135
- VESU = "Vesu",
136
- SENSEI = "Sensei",
137
- ENDUR = "Endur",
133
+ META_VAULT = "Meta Vaults",
134
+ LEVERED = "Maxx",
135
+ AUTOMATED_LP = "Ekubo",
138
136
  BTC = "BTC"
139
137
  }
138
+ declare enum VaultType {
139
+ LOOPING = "Looping",
140
+ META_VAULT = "Meta Vault",
141
+ DELTA_NEUTRAL = "Delta Neutral",
142
+ AUTOMATED_LP = "Automated LP",
143
+ TVA = "Troves Value Averaging"
144
+ }
140
145
  declare enum AuditStatus {
141
146
  AUDITED = "Audited",
142
147
  NOT_AUDITED = "Not Audited"
@@ -147,7 +152,8 @@ declare enum SourceCodeType {
147
152
  }
148
153
  declare enum AccessControlType {
149
154
  MULTISIG_ACCOUNT = "Multisig Account",
150
- STANDARD_ACCOUNT = "Standard Account"
155
+ STANDARD_ACCOUNT = "Standard Account",
156
+ ROLE_BASED_ACCESS = "Role Based Access"
151
157
  }
152
158
  declare enum InstantWithdrawalVault {
153
159
  YES = "Yes",
@@ -160,21 +166,20 @@ interface SourceCodeInfo {
160
166
  interface AccessControlInfo {
161
167
  type: AccessControlType;
162
168
  addresses: ContractAddr[];
163
- timeLock: string;
169
+ timeLock?: string;
164
170
  }
165
171
  interface SecurityMetadata {
166
172
  auditStatus: AuditStatus;
167
173
  sourceCode: SourceCodeInfo;
168
174
  accessControl: AccessControlInfo;
169
175
  }
170
- interface RedemptionExpectedTime {
171
- upto1M: string;
172
- upto10M: string;
173
- above10M: string;
174
- }
175
176
  interface RedemptionInfo {
176
177
  instantWithdrawalVault: InstantWithdrawalVault;
177
- expectedRedemptionTime?: RedemptionExpectedTime;
178
+ redemptionsInfo: {
179
+ title: string;
180
+ description: string;
181
+ }[];
182
+ alerts: StrategyAlert[];
178
183
  }
179
184
  declare enum FlowChartColors {
180
185
  Green = "purple",
@@ -189,7 +194,8 @@ declare enum StrategyLiveStatus {
189
194
  ACTIVE = "Active",
190
195
  NEW = "New",
191
196
  COMING_SOON = "Coming Soon",
192
- RETIRED = "Retired",
197
+ DEPRECATED = "Deprecated",// active but not recommended
198
+ RETIRED = "Retired",// not active anymore
193
199
  HOT = "Hot & New \uD83D\uDD25"
194
200
  }
195
201
  interface StrategyAlert {
@@ -198,7 +204,6 @@ interface StrategyAlert {
198
204
  tab: "all" | "deposit" | "withdraw";
199
205
  }
200
206
  interface StrategySettings {
201
- maxTVL?: Web3Number;
202
207
  liveStatus?: StrategyLiveStatus;
203
208
  isPaused?: boolean;
204
209
  isInMaintenance?: boolean;
@@ -213,6 +218,10 @@ interface StrategySettings {
213
218
  alerts?: StrategyAlert[];
214
219
  tags?: StrategyTag[];
215
220
  }
221
+ interface StrategyApyHistoryUIConfig {
222
+ showApyHistory?: boolean;
223
+ noApyHistoryMessage?: string;
224
+ }
216
225
  /**
217
226
  * @property risk.riskFactor.factor - The risk factors that are considered for the strategy.
218
227
  * @property risk.riskFactor.factor - The value of the risk factor from 0 to 10, 0 being the lowest and 10 being the highest.
@@ -223,9 +232,26 @@ interface IStrategyMetadata<T> {
223
232
  id: string;
224
233
  name: string;
225
234
  description: string | React.ReactNode;
235
+ /**
236
+ * Optional UI sort priority. Higher shows earlier.
237
+ * Intended for pinning flagship parent vaults (e.g. BTC above STRK).
238
+ */
239
+ priority?: number;
240
+ /**
241
+ * Optional UI config for the variant intro popup (strategy page).
242
+ * Should be identical across strategies that share the same `parentId`.
243
+ */
244
+ variantIntro?: {
245
+ title: string;
246
+ description: string;
247
+ };
226
248
  address: ContractAddr;
227
249
  launchBlock: number;
228
250
  type: "ERC4626" | "ERC721" | "Other";
251
+ vaultType: {
252
+ type: VaultType;
253
+ description: string;
254
+ };
229
255
  depositTokens: TokenInfo[];
230
256
  protocols: IProtocol[];
231
257
  auditUrl?: string;
@@ -235,6 +261,7 @@ interface IStrategyMetadata<T> {
235
261
  notARisks: RiskType[];
236
262
  };
237
263
  apyMethodology?: string;
264
+ realizedApyMethodology?: string;
238
265
  additionalInfo: T;
239
266
  contractDetails: {
240
267
  address: ContractAddr;
@@ -249,16 +276,20 @@ interface IStrategyMetadata<T> {
249
276
  }[];
250
277
  docs?: string;
251
278
  investmentSteps: string[];
252
- curator?: {
253
- name: string;
254
- logo: string;
255
- };
279
+ curator?: ICurator;
256
280
  isPreview?: boolean;
257
- category: StrategyCategory;
258
281
  tags?: StrategyTag[];
259
282
  security: SecurityMetadata;
260
283
  redemptionInfo: RedemptionInfo;
284
+ usualTimeToEarnings: null | string;
285
+ usualTimeToEarningsDescription: null | string;
286
+ discontinuationInfo?: {
287
+ date?: Date;
288
+ reason?: React.ReactNode | string;
289
+ info?: React.ReactNode | string;
290
+ };
261
291
  settings?: StrategySettings;
292
+ apyHistoryUIConfig?: StrategyApyHistoryUIConfig;
262
293
  actions?: Array<{
263
294
  name?: string;
264
295
  pool?: {
@@ -278,6 +309,8 @@ interface IStrategyMetadata<T> {
278
309
  amount?: string | number;
279
310
  isDeposit?: boolean;
280
311
  }>;
312
+ parentId?: string;
313
+ parentName?: string;
281
314
  }
282
315
  interface IInvestmentFlow {
283
316
  id?: string;
@@ -290,6 +323,8 @@ interface IInvestmentFlow {
290
323
  style?: any;
291
324
  }
292
325
  declare function getMainnetConfig(rpcUrl?: string, blockIdentifier?: BlockIdentifier): IConfig;
326
+ declare const getStrategyTagDesciption: (tag: StrategyTag) => string;
327
+ declare const getAllStrategyTags: () => StrategyTag[];
293
328
  declare const getRiskExplaination: (riskType: RiskType) => "The risk of the market moving against the position." | "The temporary loss of value experienced by liquidity providers in AMMs when asset prices diverge compared to simply holding them." | "The risk of losing funds due to the position being liquidated." | "The risk of low liquidity in the pool, which can lead to high slippages or reduced in-abilities to quickly exit the position." | "The risk of the oracle being manipulated or incorrect." | "The risk of the smart contract being vulnerable to attacks." | "The risk of technical issues e.g. backend failure." | "The risk of the counterparty defaulting e.g. bad debt on lending platforms." | "The risk of a token losing its peg to the underlying asset, leading to potential losses for holders.";
294
329
  declare const getRiskColor: (risk: RiskFactor) => "light_green_2" | "yellow" | "red";
295
330
  declare const getNoRiskTags: (risks: RiskFactor[]) => RiskType[];
@@ -330,6 +365,7 @@ declare const Protocols: {
330
365
  ENDUR: IProtocol;
331
366
  EXTENDED: IProtocol;
332
367
  };
368
+ declare const UnwrapLabsCurator: ICurator;
333
369
 
334
370
  interface ILendingMetadata {
335
371
  name: string;
@@ -487,6 +523,7 @@ declare class ERC20 {
487
523
  contract(addr: string | ContractAddr): Contract;
488
524
  balanceOf(token: string | ContractAddr, address: string | ContractAddr, tokenDecimals: number): Promise<Web3Number>;
489
525
  allowance(token: string | ContractAddr, owner: string | ContractAddr, spender: string | ContractAddr, tokenDecimals: number): Promise<Web3Number>;
526
+ approve(token: string | ContractAddr, spender: string | ContractAddr, amount: Web3Number): starknet.Call;
490
527
  }
491
528
 
492
529
  interface Route {
@@ -584,6 +621,8 @@ interface DualTokenInfo {
584
621
  token0: SingleTokenInfo;
585
622
  token1: SingleTokenInfo;
586
623
  }
624
+ type StrategyInputMode = "single" | "dual";
625
+ type InputModeFromAction<T> = T extends DualActionAmount ? "dual" : "single";
587
626
  interface NetAPYSplit {
588
627
  apy: number;
589
628
  id: string;
@@ -592,22 +631,75 @@ interface NetAPYDetails {
592
631
  net: number;
593
632
  splits: NetAPYSplit[];
594
633
  }
634
+ type UserPositionCardSubValueColor = "default" | "positive" | "negative" | "info";
635
+ interface UserPositionCard {
636
+ title: string;
637
+ value: string;
638
+ tooltip?: string;
639
+ subValue?: string;
640
+ subValueColor?: UserPositionCardSubValueColor;
641
+ }
642
+ interface UserPositionCardsInput {
643
+ user: ContractAddr;
644
+ investmentFlows?: Array<{
645
+ amount: string;
646
+ type: string;
647
+ timestamp: number;
648
+ tx_hash: string;
649
+ }>;
650
+ usualTimeToEarnings?: string | null;
651
+ usualTimeToEarningsDescription?: string | null;
652
+ }
595
653
  interface CacheData {
596
654
  timestamp: number;
597
655
  ttl: number;
598
656
  data: any;
599
657
  }
600
- declare class BaseStrategy<TVLInfo, ActionInfo> extends CacheClass {
658
+ declare class BaseStrategy<TVLInfo, DepositActionInfo, WithdrawActionInfo = DepositActionInfo> extends CacheClass {
601
659
  readonly config: IConfig;
602
660
  readonly cache: Map<string, CacheData>;
603
- constructor(config: IConfig);
661
+ private readonly _depositInputMode;
662
+ private readonly _withdrawInputMode;
663
+ constructor(config: IConfig, inputModes?: {
664
+ depositInputMode?: InputModeFromAction<DepositActionInfo>;
665
+ withdrawInputMode?: InputModeFromAction<WithdrawActionInfo>;
666
+ });
667
+ depositInputMode(): InputModeFromAction<DepositActionInfo>;
668
+ withdrawInputMode(): InputModeFromAction<WithdrawActionInfo>;
604
669
  getUserTVL(user: ContractAddr, blockIdentifier?: BlockIdentifier): Promise<TVLInfo>;
605
670
  getTVL(): Promise<TVLInfo>;
606
- depositCall(amountInfo: ActionInfo, receiver: ContractAddr): Promise<Call[]>;
607
- withdrawCall(amountInfo: ActionInfo, receiver: ContractAddr, owner: ContractAddr): Promise<Call[]>;
671
+ depositCall(amountInfo: DepositActionInfo, receiver: ContractAddr): Promise<Call[]>;
672
+ withdrawCall(amountInfo: WithdrawActionInfo, receiver: ContractAddr, owner: ContractAddr): Promise<Call[]>;
608
673
  getVaultPositions(): Promise<VaultPosition[]>;
609
- netAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number, timeperiod?: "24h" | "7d" | "30d" | "3m"): Promise<number | NetAPYDetails>;
674
+ netAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number, timeperiod?: "24h" | "7d" | "30d" | "3m"): Promise<number | string | NetAPYDetails>;
610
675
  getPendingRewards(): Promise<HarvestInfo[]>;
676
+ getUserRealizedAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
677
+ getUserPositionCards(_input: UserPositionCardsInput): Promise<UserPositionCard[]>;
678
+ getMaxTVL(): Promise<Web3Number>;
679
+ protected formatTokenAmountForCard(amount: Web3Number, tokenInfo: TokenInfo): string;
680
+ protected formatPercentForCard(value: number): string;
681
+ protected formatUSDForCard(value: number): string;
682
+ protected getSubValueColorFromSignedNumber(value: number): UserPositionCardSubValueColor;
683
+ /**
684
+ * Calculate lifetime earnings for a user based on provided data from client
685
+ * Formula: lifetimeEarnings = currentValue + totalWithdrawals - totalDeposits
686
+ *
687
+ * @param userTVL - The user's current TVL (SingleTokenInfo with amount, usdValue, tokenInfo)
688
+ * @param investmentFlows - Array of investment flow transactions from client
689
+ * @returns Object containing lifetime earnings, current value, and total deposits/withdrawals
690
+ */
691
+ getLifetimeEarnings(userTVL: SingleTokenInfo, investmentFlows: Array<{
692
+ amount: string;
693
+ type: string;
694
+ timestamp: number;
695
+ tx_hash: string;
696
+ }>): {
697
+ tokenInfo: SingleTokenInfo;
698
+ lifetimeEarnings: Web3Number;
699
+ currentValue: Web3Number;
700
+ totalDeposits: Web3Number;
701
+ totalWithdrawals: Web3Number;
702
+ };
611
703
  }
612
704
 
613
705
  interface PoolProps {
@@ -893,17 +985,32 @@ declare class EkuboCLVault extends BaseStrategy<DualTokenInfo, DualActionAmount>
893
985
  rebalanceCall(newBounds: EkuboBounds, swapParams: SwapInfo): Call[];
894
986
  handleUnusedCall(swapParams: SwapInfo): Call[];
895
987
  handleFeesCall(): Call[];
896
- getFeeHistory(timePeriod?: '24h' | '7d' | '30d' | '3m'): Promise<{
988
+ getFeeHistory(timePeriod?: '24h' | '7d' | '30d' | '3m' | '6m', range?: {
989
+ startTimestamp?: number;
990
+ endTimestamp?: number;
991
+ }): Promise<{
897
992
  summary: DualTokenInfo;
898
993
  history: FeeHistory[];
899
994
  }>;
900
995
  netSharesBasedTrueAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
996
+ /**
997
+ * Calculate lifetime earnings for a user
998
+ * Not yet implemented for Ekubo CL Vault strategy
999
+ */
1000
+ getLifetimeEarnings(userTVL: SingleTokenInfo, investmentFlows: Array<{
1001
+ amount: string;
1002
+ type: string;
1003
+ timestamp: number;
1004
+ tx_hash: string;
1005
+ }>): any;
901
1006
  /**
902
1007
  * Calculates realized APY based on TVL per share growth, always valued in USDC.
903
1008
  * This is a vault-level metric (same for all users) and works for all strategies,
904
1009
  * regardless of quote asset configuration.
905
1010
  */
906
1011
  getUserRealizedAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
1012
+ getMaxTVL(): Promise<Web3Number>;
1013
+ getUserPositionCards(input: UserPositionCardsInput): Promise<UserPositionCard[]>;
907
1014
  feeBasedAPY(timeperiod?: '24h' | '7d' | '30d' | '3m'): Promise<number>;
908
1015
  /**
909
1016
  * Calculates assets before and now in a given token of TVL per share to observe growth
@@ -1099,15 +1206,122 @@ declare class SenseiVault extends BaseStrategy<SingleTokenInfo, SingleActionAmou
1099
1206
  }>;
1100
1207
  getSecondaryTokenPriceRelativeToMain(retry?: number): Promise<number>;
1101
1208
  getSettings: () => Promise<starknet.CallResult>;
1209
+ /**
1210
+ * Calculate lifetime earnings for a user
1211
+ * Not yet implemented for Sensei Vault strategy
1212
+ */
1213
+ getLifetimeEarnings(userTVL: SingleTokenInfo, investmentFlows: Array<{
1214
+ amount: string;
1215
+ type: string;
1216
+ timestamp: number;
1217
+ tx_hash: string;
1218
+ }>): any;
1102
1219
  netAPY(): Promise<number>;
1103
1220
  /**
1104
1221
  * Calculates user realized APY based on position growth accounting for deposits and withdrawals.
1105
1222
  * Returns the APY as a number.
1223
+ * Not implemented for Sensei Strategy yet.
1106
1224
  */
1107
- getUserRealizedAPY(userAddress: ContractAddr, blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
1225
+ getUserRealizedAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
1226
+ getUserPositionCards(_input: UserPositionCardsInput): Promise<UserPositionCard[]>;
1108
1227
  }
1109
1228
  declare const SenseiStrategies: IStrategyMetadata<SenseiVaultSettings>[];
1110
1229
 
1230
+ interface YoloVaultSettings {
1231
+ startDate: string;
1232
+ expiryDate: string;
1233
+ mainToken: TokenInfo;
1234
+ secondaryToken: TokenInfo;
1235
+ totalEpochs: number;
1236
+ minEpochDurationSeconds: number;
1237
+ spendingLevels: YoloSpendingLevel[];
1238
+ feeBps: number;
1239
+ /** When true, base token is ERC-4626 (e.g. vUSDC); amounts for TVL / user info use `convert_to_assets` into `baseUnderlying`. */
1240
+ isBaseERC4626?: boolean;
1241
+ /** When true, second token is ERC-4626 (e.g. xSTRK); amounts use `convert_to_assets` into `secondUnderlying`. */
1242
+ isSecondERC4626?: boolean;
1243
+ /** Required when `isBaseERC4626` is true (e.g. USDC). */
1244
+ baseUnderlying?: TokenInfo;
1245
+ /** Required when `isSecondERC4626` is true (e.g. STRK / WBTC for xSTRK / xWBTC). */
1246
+ secondUnderlying?: TokenInfo;
1247
+ }
1248
+ interface YoloSpendingLevel {
1249
+ minPrice?: number;
1250
+ maxPrice?: number;
1251
+ spendPercent: number;
1252
+ }
1253
+ interface UserYoloInfo {
1254
+ shares: bigint;
1255
+ claimable_second_tokens: bigint;
1256
+ base_token_balance: bigint;
1257
+ base_token_consumed: bigint;
1258
+ base_consumed_last_index: bigint;
1259
+ second_token_last_index: bigint;
1260
+ second_token_balance: bigint;
1261
+ }
1262
+ interface YoloVaultStatus {
1263
+ current_epoch: bigint;
1264
+ total_epochs: bigint;
1265
+ remaining_base: bigint;
1266
+ total_second_tokens: bigint;
1267
+ global_second_token_index: bigint;
1268
+ cumulative_spend_index: bigint;
1269
+ total_shares: bigint;
1270
+ base_token_assets_per_share: bigint;
1271
+ }
1272
+ interface YoloSettings {
1273
+ base_token: bigint;
1274
+ second_token: bigint;
1275
+ total_epochs: bigint;
1276
+ min_time_per_epoch: bigint;
1277
+ max_spend_units_per_epoch: bigint;
1278
+ base_token_assets_per_share: bigint;
1279
+ oracle: bigint;
1280
+ }
1281
+ type YoloErc4626RuntimeConfig = {
1282
+ isBaseERC4626: boolean;
1283
+ isSecondERC4626: boolean;
1284
+ baseUnderlying?: TokenInfo;
1285
+ secondUnderlying?: TokenInfo;
1286
+ };
1287
+ declare class YoLoVault extends BaseStrategy<DualTokenInfo, SingleActionAmount, DualActionAmount> {
1288
+ readonly address: ContractAddr;
1289
+ readonly metadata: IStrategyMetadata<YoloVaultSettings>;
1290
+ readonly pricer: PricerBase;
1291
+ /** Resolves to a `Contract` built from `provider.getClassAt` at the vault address (no checked-in vault ABI). */
1292
+ readonly contract: Promise<Contract>;
1293
+ readonly primaryToken: TokenInfo;
1294
+ readonly secondaryToken: TokenInfo;
1295
+ readonly erc4626: YoloErc4626RuntimeConfig;
1296
+ constructor(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<YoloVaultSettings>);
1297
+ /** Underlying (or base token) used for pricing / swap sell leg when base is ERC-4626. */
1298
+ tokenForPrimaryPricing(): TokenInfo;
1299
+ /** Underlying (or second token) for price ratios when second leg is ERC-4626 (e.g. STRK for xSTRK). */
1300
+ tokenForSecondaryPricing(): TokenInfo;
1301
+ private primaryAmountDecimals;
1302
+ private secondaryAmountDecimals;
1303
+ private convertWrapperSharesToUnderlying;
1304
+ private getNormalizedUserInfo;
1305
+ private resolveWithdrawRequest;
1306
+ getUserTVL(user: ContractAddr, blockIdentifier?: BlockIdentifier): Promise<DualTokenInfo>;
1307
+ getVaultPositions(): Promise<VaultPosition[]>;
1308
+ getTVL(): Promise<DualTokenInfo>;
1309
+ depositCall(amountInfo: SingleActionAmount, receiver: ContractAddr): Promise<Call[]>;
1310
+ getVaultStatus(): Promise<YoloVaultStatus>;
1311
+ matchInputAmounts(amountInfo: DualActionAmount, user: ContractAddr): Promise<DualActionAmount>;
1312
+ withdrawCall(amountInfo: DualActionAmount, receiver: ContractAddr, owner: ContractAddr): Promise<Call[]>;
1313
+ netAPY(): Promise<number | string | NetAPYDetails>;
1314
+ getSwapAmounts(spendUnits: Web3Number): Promise<{
1315
+ grossSpend: Web3Number;
1316
+ netSpend: Web3Number;
1317
+ isReadyForNextSwap: boolean;
1318
+ }>;
1319
+ getSettings: () => Promise<YoloSettings>;
1320
+ getMaxTVL(): Promise<Web3Number>;
1321
+ getUserPositionCards(input: UserPositionCardsInput): Promise<UserPositionCard[]>;
1322
+ }
1323
+ declare const YoloVaultStrategies: IStrategyMetadata<YoloVaultSettings>[];
1324
+
1111
1325
  interface LeveledLogMethod {
1112
1326
  (message: string, ...meta: any[]): void;
1113
1327
  (message: any): void;
@@ -1361,6 +1575,24 @@ declare const VesuPools: {
1361
1575
  Re7xSTRK: ContractAddr;
1362
1576
  Re7xBTC: ContractAddr;
1363
1577
  Prime: ContractAddr;
1578
+ Re7STRK: ContractAddr;
1579
+ };
1580
+ declare const VesuPoolMetadata: {
1581
+ [VesuPools.Genesis.address]: {
1582
+ name: string;
1583
+ };
1584
+ [VesuPools.Re7xSTRK.address]: {
1585
+ name: string;
1586
+ };
1587
+ [VesuPools.Re7xBTC.address]: {
1588
+ name: string;
1589
+ };
1590
+ [VesuPools.Prime.address]: {
1591
+ name: string;
1592
+ };
1593
+ [VesuPools.Re7STRK.address]: {
1594
+ name: string;
1595
+ };
1364
1596
  };
1365
1597
  declare const extensionMap: {
1366
1598
  [key: string]: ContractAddr;
@@ -1403,8 +1635,15 @@ declare class VesuAdapter extends BaseAdapter {
1403
1635
  getModifyPositionCall: (params: VesuModifyPositionCallParams) => ManageCall;
1404
1636
  getMultiplyAdapter: (id: string) => LeafAdapterFn<VesuMultiplyCallParams>;
1405
1637
  getMultiplyCall: (params: VesuMultiplyCallParams) => ManageCall;
1406
- getVesuModifyDelegationAdapter: (id: string) => LeafAdapterFn<VesuModifyDelegationCallParams>;
1407
- getVesuModifyDelegationCall: (params: VesuModifyDelegationCallParams) => ManageCall;
1638
+ getVesuModifyDelegationAdapter: (id: string, delegatee: ContractAddr) => LeafAdapterFn<VesuModifyDelegationCallParams>;
1639
+ getVesuModifyDelegationCall: (delegatee: ContractAddr) => (params: VesuModifyDelegationCallParams) => {
1640
+ sanitizer: ContractAddr;
1641
+ call: {
1642
+ contractAddress: ContractAddr;
1643
+ selector: string;
1644
+ calldata: bigint[];
1645
+ };
1646
+ };
1408
1647
  getDefispringRewardsAdapter: (id: string) => () => AdapterLeafType<VesuDefiSpringRewardsCallParams>;
1409
1648
  getDefiSpringClaimCall: () => GenerateCallFn<VesuDefiSpringRewardsCallParams>;
1410
1649
  formatAmountTypeEnum(amountType: VesuAmountType): CairoCustomEnum;
@@ -1459,6 +1698,11 @@ declare const AVNU_EXCHANGE: ContractAddr;
1459
1698
  declare const VESU_SINGLETON: ContractAddr;
1460
1699
  declare function toBigInt(value: string | number): bigint;
1461
1700
 
1701
+ declare enum LSTPriceType {
1702
+ ENDUR_PRICE = "ENDUR_PRICE",
1703
+ AVNU_PRICE = "AVNU_PRICE"
1704
+ }
1705
+
1462
1706
  interface UniversalManageCall {
1463
1707
  proofs: string[];
1464
1708
  manageCall: ManageCall;
@@ -1543,6 +1787,7 @@ declare class UniversalStrategy<S extends UniversalStrategySettings> extends Bas
1543
1787
  * Returns the APY as a number.
1544
1788
  */
1545
1789
  getUserRealizedAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
1790
+ getUserPositionCards(input: UserPositionCardsInput): Promise<UserPositionCard[]>;
1546
1791
  /**
1547
1792
  * Calculates the total TVL of the strategy.
1548
1793
  * @returns Object containing the total amount in token units and USD value
@@ -1552,10 +1797,11 @@ declare class UniversalStrategy<S extends UniversalStrategySettings> extends Bas
1552
1797
  amount: Web3Number;
1553
1798
  usdValue: number;
1554
1799
  }>;
1800
+ getMaxTVL(): Promise<Web3Number>;
1555
1801
  getUnusedBalance(): Promise<SingleTokenInfo>;
1556
- protected getVesuAUM(adapter: VesuAdapter): Promise<Web3Number>;
1802
+ protected getVesuAUM(adapter: VesuAdapter, _priceType?: LSTPriceType): Promise<Web3Number>;
1557
1803
  getPrevAUM(): Promise<Web3Number>;
1558
- getAUM(): Promise<{
1804
+ getAUM(unrealizedAUM?: boolean): Promise<{
1559
1805
  net: SingleTokenInfo;
1560
1806
  prevAum: Web3Number;
1561
1807
  splits: {
@@ -1634,10 +1880,12 @@ declare function getContractDetails(settings: UniversalStrategySettings): {
1634
1880
  declare const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[];
1635
1881
 
1636
1882
  interface HyperLSTStrategySettings extends UniversalStrategySettings {
1637
- borrowable_assets: TokenInfo[];
1883
+ borrowable_assets: {
1884
+ token: TokenInfo;
1885
+ poolId: ContractAddr;
1886
+ }[];
1638
1887
  underlyingToken: TokenInfo;
1639
1888
  defaultPoolId: ContractAddr;
1640
- altSupportedPoolIds: ContractAddr[];
1641
1889
  }
1642
1890
  declare class UniversalLstMultiplierStrategy extends UniversalStrategy<HyperLSTStrategySettings> {
1643
1891
  private quoteAmountToFetchPrice;
@@ -1672,7 +1920,22 @@ declare class UniversalLstMultiplierStrategy extends UniversalStrategy<HyperLSTS
1672
1920
  shouldRebalance: boolean;
1673
1921
  manageCall: Call | undefined;
1674
1922
  }>;
1675
- protected getVesuAUM(adapter: VesuAdapter): Promise<Web3Number>;
1923
+ protected getVesuAUM(adapter: VesuAdapter, priceType?: LSTPriceType): Promise<Web3Number>;
1924
+ getTVLUnrealized(): Promise<{
1925
+ net: SingleTokenInfo;
1926
+ prevAum: Web3Number;
1927
+ splits: {
1928
+ id: string;
1929
+ aum: Web3Number;
1930
+ }[];
1931
+ }>;
1932
+ getUserUnrealizedGains(user: ContractAddr): Promise<{
1933
+ unrealizedGains: Web3Number;
1934
+ userShare: number;
1935
+ tokenInfo: TokenInfo;
1936
+ }>;
1937
+ getMaxTVL(): Promise<Web3Number>;
1938
+ getUserPositionCards(input: UserPositionCardsInput): Promise<UserPositionCard[]>;
1676
1939
  private _getMinOutputAmountLSTBuy;
1677
1940
  private _getMinOutputAmountLSTSell;
1678
1941
  /**
@@ -1697,6 +1960,7 @@ declare class UniversalLstMultiplierStrategy extends UniversalStrategy<HyperLSTS
1697
1960
  maxBorrowableAmount: Web3Number;
1698
1961
  borrowableAsset: TokenInfo;
1699
1962
  ltv: number;
1963
+ poolId: ContractAddr;
1700
1964
  }[];
1701
1965
  }>;
1702
1966
  getMaxSwappableWithMaxSlippage(fromToken: TokenInfo, toToken: TokenInfo, maxSlippage: number, maxAmount: Web3Number): Promise<Web3Number>;
@@ -1725,6 +1989,7 @@ declare class UniversalLstMultiplierStrategy extends UniversalStrategy<HyperLSTS
1725
1989
  apy: number;
1726
1990
  weight: number;
1727
1991
  }>;
1992
+ getLSTAvnuRate(): Promise<number>;
1728
1993
  getLSTExchangeRate(): Promise<number>;
1729
1994
  /**
1730
1995
  *
@@ -1755,7 +2020,6 @@ interface FilterOption {
1755
2020
  interface StrategyFilterMetadata {
1756
2021
  assets: FilterOption[];
1757
2022
  protocols: FilterOption[];
1758
- categories: FilterOption[];
1759
2023
  quickFilters: FilterOption[];
1760
2024
  }
1761
2025
  /**
@@ -1766,7 +2030,8 @@ declare enum StrategyType {
1766
2030
  UNIVERSAL = "universal",
1767
2031
  HYPER_LST = "hyper-lst",
1768
2032
  VESU_REBALANCE = "vesu-rebalance",
1769
- SENSEI = "sensei"
2033
+ SENSEI = "sensei",
2034
+ YOLO_VAULT = "yolo-vault"
1770
2035
  }
1771
2036
  /**
1772
2037
  * Strategy metadata extracted from IStrategyMetadata
@@ -1777,7 +2042,6 @@ interface StrategyMetadata {
1777
2042
  type: StrategyType;
1778
2043
  assets: string[];
1779
2044
  protocols: string[];
1780
- category: string;
1781
2045
  tags: string[];
1782
2046
  curator?: {
1783
2047
  name: string;
@@ -1818,10 +2082,12 @@ declare enum FactoryStrategyType {
1818
2082
  EKUBO_CL = "EKUBO_CL",
1819
2083
  HYPER_LST = "HYPER_LST",
1820
2084
  VESU_REBALANCE = "VESU_REBALANCE",
1821
- SENSEI = "SENSEI"
2085
+ SENSEI = "SENSEI",
2086
+ YOLO_VAULT = "YOLO_VAULT"
1822
2087
  }
1823
2088
  declare function createUniversalStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<UniversalStrategySettings>): UniversalStrategy<UniversalStrategySettings>;
1824
2089
  declare function createEkuboCLStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<CLVaultStrategySettings>): EkuboCLVault;
2090
+ declare function createYoloVaultStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<YoloVaultSettings>): YoLoVault;
1825
2091
  declare function createHyperLSTStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<HyperLSTStrategySettings>): UniversalLstMultiplierStrategy;
1826
2092
  declare function createVesuRebalanceStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<VesuRebalanceSettings>): VesuRebalance;
1827
2093
  declare function createSenseiStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<SenseiVaultSettings>): SenseiVault;
@@ -1832,7 +2098,7 @@ declare function getStrategyTypeFromMetadata(metadata: IStrategyMetadata<any>):
1832
2098
  /**
1833
2099
  * Generic factory function that creates SDK strategy instances based on type
1834
2100
  */
1835
- declare function createStrategy(type: FactoryStrategyType, config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<any>): VesuRebalance | EkuboCLVault | SenseiVault | UniversalStrategy<UniversalStrategySettings>;
2101
+ declare function createStrategy(type: FactoryStrategyType, config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<any>): VesuRebalance | EkuboCLVault | SenseiVault | YoLoVault | UniversalStrategy<UniversalStrategySettings>;
1836
2102
 
1837
2103
  interface EkuboRouteNode {
1838
2104
  pool_key: {
@@ -1956,6 +2222,16 @@ declare class LSTAPRService {
1956
2222
  static clearCache(): void;
1957
2223
  }
1958
2224
 
2225
+ declare class EkuboPricer extends PricerBase {
2226
+ EKUBO_PRICE_FETCHER_ADDRESS: string;
2227
+ readonly contract: Contract;
2228
+ private readonly USDC_ADDRESS;
2229
+ private readonly USDC_DECIMALS;
2230
+ constructor(config: IConfig, tokens: TokenInfo[]);
2231
+ private div2Power128;
2232
+ getPrice(tokenAddr: string, blockIdentifier?: BlockIdentifier): Promise<PriceInfo>;
2233
+ }
2234
+
1959
2235
  declare class TelegramNotif {
1960
2236
  private subscribers;
1961
2237
  readonly bot: TelegramBot;
@@ -2108,4 +2384,4 @@ declare class PasswordJsonCryptoUtil {
2108
2384
  decrypt(encryptedData: string, password: string): any;
2109
2385
  }
2110
2386
 
2111
- export { APYType, AUMTypes, AVNU_EXCHANGE, AVNU_MIDDLEWARE, type AccessControlInfo, AccessControlType, type AccountInfo, type AdapterLeafType, type AllAccountsStore, type AmountInfo, type AmountsInfo, type ApproveCallParams, AuditStatus, AutoCompounderSTRK, type AvnuSwapCallParams, AvnuWrapper, BaseAdapter, type BaseAdapterConfig, BaseStrategy, type CLVaultStrategySettings, CommonAdapter, type CommonAdapterConfig, ContractAddr, type DecreaseLeverParams, Deployer, type DualActionAmount, type DualTokenInfo, ERC20, type EkuboBounds, EkuboCLVault, EkuboCLVaultStrategies, type EkuboPoolKey, type EkuboQuote, EkuboQuoter, type EkuboRouteNode, type EkuboSplit, type FAQ, FactoryStrategyType, FatalError, type FilterOption, type FlashloanCallParams, FlowChartColors, type GenerateCallFn, Global, HyperLSTStrategies, type HyperLSTStrategySettings, type IConfig, type IInvestmentFlow, ILending, type ILendingMetadata, type ILendingPosition, type IProtocol, type IStrategyMetadata, type IncreaseLeverParams, Initializable, InstantWithdrawalVault, LSTAPRService, type LSTStats, type LeafAdapterFn, type LeafData, type LendingToken, type ManageCall, MarginType, MyNumber, type NetAPYDetails, type NetAPYSplit, Network, PRICE_ROUTER, PasswordJsonCryptoUtil, type PositionAPY, type PositionInfo, Pragma, type PriceInfo, Pricer, PricerFromApi, PricerLST, PricerRedis, Protocols, type RedemptionExpectedTime, type RedemptionInfo, type RequiredFields, type RequiredKeys, type RequiredStoreConfig, type RiskFactor, RiskType, type Route, type RouteNode, SIMPLE_SANITIZER, SIMPLE_SANITIZER_V2, SIMPLE_SANITIZER_VESU_V1_DELEGATIONS, type SecurityMetadata, SenseiStrategies, SenseiVault, type SenseiVaultSettings, type SingleActionAmount, type SingleTokenInfo, type SourceCodeInfo, SourceCodeType, StandardMerkleTree, type StandardMerkleTreeData, Store, type StoreConfig, type StrategyAlert, type StrategyCapabilities, StrategyCategory, type StrategyFilterMetadata, StrategyLiveStatus, type StrategyMetadata, type StrategyRegistryEntry, type StrategySettings, StrategyTag, StrategyType, type SupportedPosition, type Swap, type SwapInfo, TelegramGroupNotif, TelegramNotif, type TokenAmount, type TokenInfo, UNIVERSAL_ADAPTERS, UNIVERSAL_MANAGE_IDS, UniversalLstMultiplierStrategy, type UniversalManageCall, UniversalStrategies, UniversalStrategy, type UniversalStrategySettings, VESU_SINGLETON, VESU_V2_MODIFY_POSITION_SANITIZER, type VaultPosition, VesuAdapter, type VesuAdapterConfig, type VesuAmount, VesuAmountDenomination, VesuAmountType, type VesuDefiSpringRewardsCallParams, type VesuModifyDelegationCallParams, type VesuModifyPositionCallParams, type VesuMultiplyCallParams, VesuPools, VesuRebalance, type VesuRebalanceSettings, VesuRebalanceStrategies, Web3Number, ZkLend, assert, buildStrategyRegistry, createEkuboCLStrategy, createHyperLSTStrategy, createSenseiStrategy, createStrategy, createUniversalStrategy, createVesuRebalanceStrategy, detectCapabilities, extensionMap, getAPIUsingHeadlessBrowser, getAllStrategyMetadata, getContractDetails, getDefaultStoreConfig, getFilterMetadata, getLiveStrategies, getMainnetConfig, getNoRiskTags, getRiskColor, getRiskExplaination, getStrategiesByType, getStrategyTypeFromMetadata, getTrovesEndpoint, getVesuSingletonAddress, highlightTextWithLinks, type i257, isDualTokenStrategy, logger, toAmountsInfo, toBigInt };
2387
+ export { APYType, AUMTypes, AVNU_EXCHANGE, AVNU_MIDDLEWARE, type AccessControlInfo, AccessControlType, type AccountInfo, type AdapterLeafType, type AllAccountsStore, type AmountInfo, type AmountsInfo, type ApproveCallParams, AuditStatus, AutoCompounderSTRK, type AvnuSwapCallParams, AvnuWrapper, BaseAdapter, type BaseAdapterConfig, BaseStrategy, type CLVaultStrategySettings, CommonAdapter, type CommonAdapterConfig, ContractAddr, type DecreaseLeverParams, Deployer, type DualActionAmount, type DualTokenInfo, ERC20, type EkuboBounds, EkuboCLVault, EkuboCLVaultStrategies, type EkuboPoolKey, EkuboPricer, type EkuboQuote, EkuboQuoter, type EkuboRouteNode, type EkuboSplit, type FAQ, FactoryStrategyType, FatalError, type FilterOption, type FlashloanCallParams, FlowChartColors, type GenerateCallFn, Global, HyperLSTStrategies, type HyperLSTStrategySettings, type IConfig, type ICurator, type IInvestmentFlow, ILending, type ILendingMetadata, type ILendingPosition, type IProtocol, type IStrategyMetadata, type IncreaseLeverParams, Initializable, type InputModeFromAction, InstantWithdrawalVault, LSTAPRService, LSTPriceType, type LSTStats, type LeafAdapterFn, type LeafData, type LendingToken, type ManageCall, MarginType, MyNumber, type NetAPYDetails, type NetAPYSplit, Network, PRICE_ROUTER, PasswordJsonCryptoUtil, type PositionAPY, type PositionInfo, Pragma, type PriceInfo, Pricer, PricerFromApi, PricerLST, PricerRedis, Protocols, type RedemptionInfo, type RequiredFields, type RequiredKeys, type RequiredStoreConfig, type RiskFactor, RiskType, type Route, type RouteNode, SIMPLE_SANITIZER, SIMPLE_SANITIZER_V2, SIMPLE_SANITIZER_VESU_V1_DELEGATIONS, type SecurityMetadata, SenseiStrategies, SenseiVault, type SenseiVaultSettings, type SingleActionAmount, type SingleTokenInfo, type SourceCodeInfo, SourceCodeType, StandardMerkleTree, type StandardMerkleTreeData, Store, type StoreConfig, type StrategyAlert, type StrategyApyHistoryUIConfig, type StrategyCapabilities, type StrategyFilterMetadata, type StrategyInputMode, StrategyLiveStatus, type StrategyMetadata, type StrategyRegistryEntry, type StrategySettings, StrategyTag, StrategyType, type SupportedPosition, type Swap, type SwapInfo, TelegramGroupNotif, TelegramNotif, type TokenAmount, type TokenInfo, UNIVERSAL_ADAPTERS, UNIVERSAL_MANAGE_IDS, UniversalLstMultiplierStrategy, type UniversalManageCall, UniversalStrategies, UniversalStrategy, type UniversalStrategySettings, UnwrapLabsCurator, type UserPositionCard, type UserPositionCardSubValueColor, type UserPositionCardsInput, type UserYoloInfo, VESU_SINGLETON, VESU_V2_MODIFY_POSITION_SANITIZER, type VaultPosition, VaultType, VesuAdapter, type VesuAdapterConfig, type VesuAmount, VesuAmountDenomination, VesuAmountType, type VesuDefiSpringRewardsCallParams, type VesuModifyDelegationCallParams, type VesuModifyPositionCallParams, type VesuMultiplyCallParams, VesuPoolMetadata, VesuPools, VesuRebalance, type VesuRebalanceSettings, VesuRebalanceStrategies, Web3Number, YoLoVault, type YoloSettings, type YoloSpendingLevel, type YoloVaultSettings, type YoloVaultStatus, YoloVaultStrategies, ZkLend, assert, buildStrategyRegistry, createEkuboCLStrategy, createHyperLSTStrategy, createSenseiStrategy, createStrategy, createUniversalStrategy, createVesuRebalanceStrategy, createYoloVaultStrategy, detectCapabilities, extensionMap, getAPIUsingHeadlessBrowser, getAllStrategyMetadata, getAllStrategyTags, getContractDetails, getDefaultStoreConfig, getFilterMetadata, getLiveStrategies, getMainnetConfig, getNoRiskTags, getRiskColor, getRiskExplaination, getStrategiesByType, getStrategyTagDesciption, getStrategyTypeFromMetadata, getTrovesEndpoint, getVesuSingletonAddress, highlightTextWithLinks, type i257, isDualTokenStrategy, logger, toAmountsInfo, toBigInt };