@strkfarm/sdk 1.0.62 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +8 -2
- package/dist/cli.mjs +9 -3
- package/dist/index.browser.global.js +37782 -36017
- package/dist/index.browser.mjs +241 -92
- package/dist/index.d.ts +23 -4
- package/dist/index.js +247 -92
- package/dist/index.mjs +252 -97
- package/package.json +2 -2
- package/src/interfaces/common.tsx +2 -2
- package/src/modules/erc20.ts +1 -1
- package/src/modules/harvests.ts +6 -4
- package/src/modules/pragma.ts +1 -1
- package/src/modules/pricer.ts +1 -1
- package/src/node/deployer.ts +2 -2
- package/src/strategies/autoCompounderStrk.ts +1 -1
- package/src/strategies/ekubo-cl-vault.tsx +41 -41
- package/src/strategies/sensei.ts +6 -6
- package/src/strategies/universal-adapters/adapter-utils.ts +3 -1
- package/src/strategies/universal-adapters/common-adapter.ts +57 -1
- package/src/strategies/universal-adapters/vesu-adapter.ts +41 -2
- package/src/strategies/universal-strategy.tsx +93 -20
- package/src/strategies/vesu-rebalance.tsx +15 -15
- package/src/utils/store.ts +9 -2
package/dist/index.js
CHANGED
|
@@ -504,7 +504,7 @@ var Pricer = class extends PricerBase {
|
|
|
504
504
|
}
|
|
505
505
|
async _getPrice(token, defaultMethod = "all") {
|
|
506
506
|
const methodToUse = this.methodToUse[token.symbol] || defaultMethod;
|
|
507
|
-
logger.
|
|
507
|
+
logger.verbose(`Fetching price of ${token.symbol} using ${methodToUse}`);
|
|
508
508
|
switch (methodToUse) {
|
|
509
509
|
case "Coinbase":
|
|
510
510
|
try {
|
|
@@ -669,7 +669,7 @@ var pragma_abi_default = [
|
|
|
669
669
|
var Pragma = class {
|
|
670
670
|
constructor(provider2) {
|
|
671
671
|
this.contractAddr = "0x023fb3afbff2c0e3399f896dcf7400acf1a161941cfb386e34a123f228c62832";
|
|
672
|
-
this.contract = new import_starknet2.Contract(pragma_abi_default, this.contractAddr, provider2);
|
|
672
|
+
this.contract = new import_starknet2.Contract({ abi: pragma_abi_default, address: this.contractAddr, providerOrAccount: provider2 });
|
|
673
673
|
}
|
|
674
674
|
async getPrice(tokenAddr) {
|
|
675
675
|
if (!tokenAddr) {
|
|
@@ -2045,7 +2045,7 @@ var ERC20 = class {
|
|
|
2045
2045
|
}
|
|
2046
2046
|
contract(addr) {
|
|
2047
2047
|
const _addr = typeof addr === "string" ? addr : addr.address;
|
|
2048
|
-
return new import_starknet3.Contract(erc20_abi_default, _addr, this.config.provider);
|
|
2048
|
+
return new import_starknet3.Contract({ abi: erc20_abi_default, address: _addr, providerOrAccount: this.config.provider });
|
|
2049
2049
|
}
|
|
2050
2050
|
async balanceOf(token, address, tokenDecimals) {
|
|
2051
2051
|
const contract = this.contract(token);
|
|
@@ -2234,7 +2234,7 @@ var FlowChartColors = /* @__PURE__ */ ((FlowChartColors2) => {
|
|
|
2234
2234
|
FlowChartColors2["Purple"] = "#6e53dc";
|
|
2235
2235
|
return FlowChartColors2;
|
|
2236
2236
|
})(FlowChartColors || {});
|
|
2237
|
-
function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier =
|
|
2237
|
+
function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = import_starknet6.BlockTag.LATEST) {
|
|
2238
2238
|
return {
|
|
2239
2239
|
provider: new import_starknet6.RpcProvider({
|
|
2240
2240
|
nodeUrl: rpcUrl,
|
|
@@ -2353,7 +2353,7 @@ var AutoCompounderSTRK = class {
|
|
|
2353
2353
|
async init() {
|
|
2354
2354
|
const provider2 = this.config.provider;
|
|
2355
2355
|
const cls = await provider2.getClassAt(this.addr.address);
|
|
2356
|
-
this.contract = new import_starknet7.Contract(cls.abi, this.addr.address, provider2);
|
|
2356
|
+
this.contract = new import_starknet7.Contract({ abi: cls.abi, address: this.addr.address, providerOrAccount: provider2 });
|
|
2357
2357
|
this.initialized = true;
|
|
2358
2358
|
}
|
|
2359
2359
|
async waitForInitilisation() {
|
|
@@ -3934,7 +3934,7 @@ var Harvests = class _Harvests {
|
|
|
3934
3934
|
const unClaimed = [];
|
|
3935
3935
|
const cls = await this.config.provider.getClassAt(rewards[0].rewardsContract.address);
|
|
3936
3936
|
for (let reward of rewards) {
|
|
3937
|
-
const contract = new import_starknet8.Contract(cls.abi, reward.rewardsContract.address, this.config.provider);
|
|
3937
|
+
const contract = new import_starknet8.Contract({ abi: cls.abi, address: reward.rewardsContract.address, providerOrAccount: this.config.provider });
|
|
3938
3938
|
const isClaimed = await contract.call("is_claimed", [reward.claim.id]);
|
|
3939
3939
|
logger.verbose(`${_Harvests.name}: isClaimed: ${isClaimed}`);
|
|
3940
3940
|
if (isClaimed) {
|
|
@@ -3977,13 +3977,14 @@ var EkuboHarvests = class extends Harvests {
|
|
|
3977
3977
|
return rewards.sort((a, b) => b.endDate.getTime() - a.endDate.getTime());
|
|
3978
3978
|
}
|
|
3979
3979
|
};
|
|
3980
|
+
var VESU_REWARDS_CONTRACT = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
|
|
3980
3981
|
var VesuHarvests = class _VesuHarvests extends Harvests {
|
|
3981
3982
|
async getHarvests(addr) {
|
|
3982
3983
|
const result = await fetch(`https://api.vesu.xyz/users/${addr.address}/strk-rewards/calldata`);
|
|
3983
3984
|
const data = await result.json();
|
|
3984
|
-
const rewardsContract =
|
|
3985
|
+
const rewardsContract = VESU_REWARDS_CONTRACT;
|
|
3985
3986
|
const cls = await this.config.provider.getClassAt(rewardsContract.address);
|
|
3986
|
-
const contract = new import_starknet8.Contract(cls.abi, rewardsContract.address, this.config.provider);
|
|
3987
|
+
const contract = new import_starknet8.Contract({ abi: cls.abi, address: rewardsContract.address, providerOrAccount: this.config.provider });
|
|
3987
3988
|
const _claimed_amount = await contract.call("amount_already_claimed", [addr.address]);
|
|
3988
3989
|
const claimed_amount = Web3Number.fromWei(_claimed_amount.toString(), 18);
|
|
3989
3990
|
logger.verbose(`${_VesuHarvests.name}: claimed_amount: ${claimed_amount.toString()}`);
|
|
@@ -9485,11 +9486,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
9485
9486
|
);
|
|
9486
9487
|
this.metadata = metadata;
|
|
9487
9488
|
this.address = metadata.address;
|
|
9488
|
-
this.contract = new import_starknet9.Contract(
|
|
9489
|
-
vesu_rebalance_abi_default,
|
|
9490
|
-
this.address.address,
|
|
9491
|
-
this.config.provider
|
|
9492
|
-
);
|
|
9489
|
+
this.contract = new import_starknet9.Contract({
|
|
9490
|
+
abi: vesu_rebalance_abi_default,
|
|
9491
|
+
address: this.address.address,
|
|
9492
|
+
providerOrAccount: this.config.provider
|
|
9493
|
+
});
|
|
9493
9494
|
}
|
|
9494
9495
|
/**
|
|
9495
9496
|
* Creates a deposit call to the strategy contract.
|
|
@@ -9502,11 +9503,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
9502
9503
|
amountInfo.tokenInfo.address.eq(this.asset().address),
|
|
9503
9504
|
"Deposit token mismatch"
|
|
9504
9505
|
);
|
|
9505
|
-
const assetContract = new import_starknet9.Contract(
|
|
9506
|
-
vesu_rebalance_abi_default,
|
|
9507
|
-
this.asset().address.address,
|
|
9508
|
-
this.config.provider
|
|
9509
|
-
);
|
|
9506
|
+
const assetContract = new import_starknet9.Contract({
|
|
9507
|
+
abi: vesu_rebalance_abi_default,
|
|
9508
|
+
address: this.asset().address.address,
|
|
9509
|
+
providerOrAccount: this.config.provider
|
|
9510
|
+
});
|
|
9510
9511
|
const call1 = assetContract.populate("approve", [
|
|
9511
9512
|
this.address.address,
|
|
9512
9513
|
import_starknet9.uint256.bnToUint256(amountInfo.amount.toWei())
|
|
@@ -9639,11 +9640,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
9639
9640
|
`Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`
|
|
9640
9641
|
);
|
|
9641
9642
|
}
|
|
9642
|
-
let vTokenContract = new import_starknet9.Contract(
|
|
9643
|
-
vesu_rebalance_abi_default,
|
|
9644
|
-
p.v_token.address,
|
|
9645
|
-
this.config.provider
|
|
9646
|
-
);
|
|
9643
|
+
let vTokenContract = new import_starknet9.Contract({
|
|
9644
|
+
abi: vesu_rebalance_abi_default,
|
|
9645
|
+
address: p.v_token.address,
|
|
9646
|
+
providerOrAccount: this.config.provider
|
|
9647
|
+
});
|
|
9647
9648
|
const bal = await vTokenContract.balanceOf(this.address.address);
|
|
9648
9649
|
const assets = await vTokenContract.convert_to_assets(
|
|
9649
9650
|
import_starknet9.uint256.bnToUint256(bal.toString())
|
|
@@ -15224,32 +15225,32 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15224
15225
|
);
|
|
15225
15226
|
this.metadata = metadata;
|
|
15226
15227
|
this.address = metadata.address;
|
|
15227
|
-
this.contract = new import_starknet10.Contract(
|
|
15228
|
-
cl_vault_abi_default,
|
|
15229
|
-
this.address.address,
|
|
15230
|
-
this.config.provider
|
|
15231
|
-
);
|
|
15228
|
+
this.contract = new import_starknet10.Contract({
|
|
15229
|
+
abi: cl_vault_abi_default,
|
|
15230
|
+
address: this.address.address,
|
|
15231
|
+
providerOrAccount: this.config.provider
|
|
15232
|
+
});
|
|
15232
15233
|
if (this.metadata.additionalInfo.lstContract) {
|
|
15233
|
-
this.lstContract = new import_starknet10.Contract(
|
|
15234
|
-
erc4626_abi_default,
|
|
15235
|
-
this.metadata.additionalInfo.lstContract.address,
|
|
15236
|
-
this.config.provider
|
|
15237
|
-
);
|
|
15234
|
+
this.lstContract = new import_starknet10.Contract({
|
|
15235
|
+
abi: erc4626_abi_default,
|
|
15236
|
+
address: this.metadata.additionalInfo.lstContract.address,
|
|
15237
|
+
providerOrAccount: this.config.provider
|
|
15238
|
+
});
|
|
15238
15239
|
} else {
|
|
15239
15240
|
this.lstContract = null;
|
|
15240
15241
|
}
|
|
15241
15242
|
const EKUBO_POSITION = "0x02e0af29598b407c8716b17f6d2795eca1b471413fa03fb145a5e33722184067";
|
|
15242
|
-
this.ekuboPositionsContract = new import_starknet10.Contract(
|
|
15243
|
-
ekubo_positions_abi_default,
|
|
15244
|
-
EKUBO_POSITION,
|
|
15245
|
-
this.config.provider
|
|
15246
|
-
);
|
|
15243
|
+
this.ekuboPositionsContract = new import_starknet10.Contract({
|
|
15244
|
+
abi: ekubo_positions_abi_default,
|
|
15245
|
+
address: EKUBO_POSITION,
|
|
15246
|
+
providerOrAccount: this.config.provider
|
|
15247
|
+
});
|
|
15247
15248
|
const EKUBO_MATH = "0x04a72e9e166f6c0e9d800af4dc40f6b6fb4404b735d3f528d9250808b2481995";
|
|
15248
|
-
this.ekuboMathContract = new import_starknet10.Contract(
|
|
15249
|
-
ekubo_math_abi_default,
|
|
15250
|
-
EKUBO_MATH,
|
|
15251
|
-
this.config.provider
|
|
15252
|
-
);
|
|
15249
|
+
this.ekuboMathContract = new import_starknet10.Contract({
|
|
15250
|
+
abi: ekubo_math_abi_default,
|
|
15251
|
+
address: EKUBO_MATH,
|
|
15252
|
+
providerOrAccount: this.config.provider
|
|
15253
|
+
});
|
|
15253
15254
|
this.avnu = new AvnuWrapper();
|
|
15254
15255
|
}
|
|
15255
15256
|
async matchInputAmounts(amountInfo) {
|
|
@@ -15297,16 +15298,16 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15297
15298
|
}
|
|
15298
15299
|
async depositCall(amountInfo, receiver) {
|
|
15299
15300
|
const updateAmountInfo = await this.getMinDepositAmounts(amountInfo);
|
|
15300
|
-
const token0Contract = new import_starknet10.Contract(
|
|
15301
|
-
erc4626_abi_default,
|
|
15302
|
-
amountInfo.token0.tokenInfo.address.address,
|
|
15303
|
-
this.config.provider
|
|
15304
|
-
);
|
|
15305
|
-
const token1Contract = new import_starknet10.Contract(
|
|
15306
|
-
erc4626_abi_default,
|
|
15307
|
-
amountInfo.token1.tokenInfo.address.address,
|
|
15308
|
-
this.config.provider
|
|
15309
|
-
);
|
|
15301
|
+
const token0Contract = new import_starknet10.Contract({
|
|
15302
|
+
abi: erc4626_abi_default,
|
|
15303
|
+
address: amountInfo.token0.tokenInfo.address.address,
|
|
15304
|
+
providerOrAccount: this.config.provider
|
|
15305
|
+
});
|
|
15306
|
+
const token1Contract = new import_starknet10.Contract({
|
|
15307
|
+
abi: erc4626_abi_default,
|
|
15308
|
+
address: amountInfo.token1.tokenInfo.address.address,
|
|
15309
|
+
providerOrAccount: this.config.provider
|
|
15310
|
+
});
|
|
15310
15311
|
const call1 = token0Contract.populate("approve", [
|
|
15311
15312
|
this.address.address,
|
|
15312
15313
|
import_starknet10.uint256.bnToUint256(updateAmountInfo.token0.amount.toWei())
|
|
@@ -15365,7 +15366,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15365
15366
|
* Calculates assets before and now in a given token of TVL per share to observe growth
|
|
15366
15367
|
* @returns {Promise<number>} The weighted average APY across all pools
|
|
15367
15368
|
*/
|
|
15368
|
-
async netAPY(blockIdentifier = "
|
|
15369
|
+
async netAPY(blockIdentifier = "pre_confirmed", sinceBlocks = 2e4) {
|
|
15369
15370
|
const tvlNow = await this._getTVL(blockIdentifier);
|
|
15370
15371
|
const supplyNow = await this.totalSupply(blockIdentifier);
|
|
15371
15372
|
const priceNow = await this.getCurrentPrice(blockIdentifier);
|
|
@@ -15424,13 +15425,13 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15424
15425
|
}
|
|
15425
15426
|
return shares;
|
|
15426
15427
|
}
|
|
15427
|
-
async balanceOf(user, blockIdentifier = "
|
|
15428
|
+
async balanceOf(user, blockIdentifier = "pre_confirmed") {
|
|
15428
15429
|
let bal = await this.contract.call("balance_of", [user.address], {
|
|
15429
15430
|
blockIdentifier
|
|
15430
15431
|
});
|
|
15431
15432
|
return Web3Number.fromWei(bal.toString(), 18);
|
|
15432
15433
|
}
|
|
15433
|
-
async getUserTVL(user, blockIdentifier = "
|
|
15434
|
+
async getUserTVL(user, blockIdentifier = "pre_confirmed") {
|
|
15434
15435
|
let bal = await this.balanceOf(user, blockIdentifier);
|
|
15435
15436
|
const assets = await this.contract.call(
|
|
15436
15437
|
"convert_to_assets",
|
|
@@ -15469,7 +15470,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15469
15470
|
}
|
|
15470
15471
|
};
|
|
15471
15472
|
}
|
|
15472
|
-
async _getTVL(blockIdentifier = "
|
|
15473
|
+
async _getTVL(blockIdentifier = "pre_confirmed") {
|
|
15473
15474
|
const result = await this.contract.call("total_liquidity", [], {
|
|
15474
15475
|
blockIdentifier
|
|
15475
15476
|
});
|
|
@@ -15481,7 +15482,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15481
15482
|
);
|
|
15482
15483
|
return { amount0, amount1 };
|
|
15483
15484
|
}
|
|
15484
|
-
async totalSupply(blockIdentifier = "
|
|
15485
|
+
async totalSupply(blockIdentifier = "pre_confirmed") {
|
|
15485
15486
|
const res = await this.contract.call("total_supply", [], {
|
|
15486
15487
|
blockIdentifier
|
|
15487
15488
|
});
|
|
@@ -15497,7 +15498,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15497
15498
|
"Expected token1 in depositTokens[1]"
|
|
15498
15499
|
);
|
|
15499
15500
|
}
|
|
15500
|
-
async getTVL(blockIdentifier = "
|
|
15501
|
+
async getTVL(blockIdentifier = "pre_confirmed") {
|
|
15501
15502
|
const { amount0, amount1 } = await this._getTVL(blockIdentifier);
|
|
15502
15503
|
const poolKey = await this.getPoolKey(blockIdentifier);
|
|
15503
15504
|
this.assertValidDepositTokens(poolKey);
|
|
@@ -15586,11 +15587,11 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15586
15587
|
}
|
|
15587
15588
|
throw new Error("No true price available");
|
|
15588
15589
|
}
|
|
15589
|
-
async getCurrentPrice(blockIdentifier = "
|
|
15590
|
+
async getCurrentPrice(blockIdentifier = "pre_confirmed") {
|
|
15590
15591
|
const poolKey = await this.getPoolKey(blockIdentifier);
|
|
15591
15592
|
return this._getCurrentPrice(poolKey, blockIdentifier);
|
|
15592
15593
|
}
|
|
15593
|
-
async _getCurrentPrice(poolKey, blockIdentifier = "
|
|
15594
|
+
async _getCurrentPrice(poolKey, blockIdentifier = "pre_confirmed") {
|
|
15594
15595
|
const priceInfo = await this.ekuboPositionsContract.call(
|
|
15595
15596
|
"get_pool_price",
|
|
15596
15597
|
[
|
|
@@ -15625,7 +15626,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15625
15626
|
sqrtRatio: priceInfo.sqrt_ratio.toString()
|
|
15626
15627
|
};
|
|
15627
15628
|
}
|
|
15628
|
-
async getCurrentBounds(blockIdentifier = "
|
|
15629
|
+
async getCurrentBounds(blockIdentifier = "pre_confirmed") {
|
|
15629
15630
|
const result = await this.contract.call("get_position_key", [], {
|
|
15630
15631
|
blockIdentifier
|
|
15631
15632
|
});
|
|
@@ -15642,7 +15643,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15642
15643
|
const tick = Math.floor(value / tickSpacing) * tickSpacing;
|
|
15643
15644
|
return this.tickToi129(tick);
|
|
15644
15645
|
}
|
|
15645
|
-
async getPoolKey(blockIdentifier = "
|
|
15646
|
+
async getPoolKey(blockIdentifier = "pre_confirmed") {
|
|
15646
15647
|
if (this.poolKey) {
|
|
15647
15648
|
return this.poolKey;
|
|
15648
15649
|
}
|
|
@@ -16140,7 +16141,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
16140
16141
|
static tickToPrice(tick) {
|
|
16141
16142
|
return Math.pow(1.000001, Number(tick));
|
|
16142
16143
|
}
|
|
16143
|
-
async getLiquidityToAmounts(liquidity, bounds, blockIdentifier = "
|
|
16144
|
+
async getLiquidityToAmounts(liquidity, bounds, blockIdentifier = "pre_confirmed", _poolKey = null, _currentPrice = null) {
|
|
16144
16145
|
const currentPrice = _currentPrice || await this.getCurrentPrice(blockIdentifier);
|
|
16145
16146
|
const lowerPrice = _EkuboCLVault.tickToPrice(bounds.lowerTick);
|
|
16146
16147
|
const upperPrice = _EkuboCLVault.tickToPrice(bounds.upperTick);
|
|
@@ -18302,7 +18303,7 @@ var SenseiVault = class extends BaseStrategy {
|
|
|
18302
18303
|
this.address = metadata.address;
|
|
18303
18304
|
this.pricer = pricer;
|
|
18304
18305
|
this.metadata = metadata;
|
|
18305
|
-
this.contract = new import_starknet11.Contract(sensei_abi_default, this.address.address, this.config.provider);
|
|
18306
|
+
this.contract = new import_starknet11.Contract({ abi: sensei_abi_default, address: this.address.address, providerOrAccount: this.config.provider });
|
|
18306
18307
|
if (metadata.depositTokens.length === 0) {
|
|
18307
18308
|
throw new Error("Deposit tokens are not defined in metadata");
|
|
18308
18309
|
}
|
|
@@ -18354,11 +18355,11 @@ var SenseiVault = class extends BaseStrategy {
|
|
|
18354
18355
|
}
|
|
18355
18356
|
}
|
|
18356
18357
|
async depositCall(amountInfo, receiver) {
|
|
18357
|
-
const mainTokenContract = new import_starknet11.Contract(
|
|
18358
|
-
erc20_abi_default,
|
|
18359
|
-
this.metadata.depositTokens[0].address.address,
|
|
18360
|
-
this.config.provider
|
|
18361
|
-
);
|
|
18358
|
+
const mainTokenContract = new import_starknet11.Contract({
|
|
18359
|
+
abi: erc20_abi_default,
|
|
18360
|
+
address: this.metadata.depositTokens[0].address.address,
|
|
18361
|
+
providerOrAccount: this.config.provider
|
|
18362
|
+
});
|
|
18362
18363
|
const call1 = mainTokenContract.populate("approve", [
|
|
18363
18364
|
this.address.address,
|
|
18364
18365
|
import_starknet11.uint256.bnToUint256(amountInfo.amount.toWei())
|
|
@@ -18569,7 +18570,9 @@ var SenseiStrategies = [
|
|
|
18569
18570
|
var import_starknet12 = require("starknet");
|
|
18570
18571
|
|
|
18571
18572
|
// src/strategies/universal-adapters/adapter-utils.ts
|
|
18572
|
-
var SIMPLE_SANITIZER = ContractAddr.from("
|
|
18573
|
+
var SIMPLE_SANITIZER = ContractAddr.from("0x5a2e3ceb3da368b983a8717898427ab7b6daf04014b70f321e777f9aad940b4");
|
|
18574
|
+
var PRICE_ROUTER = ContractAddr.from("0x05e83Fa38D791d2dba8E6f487758A9687FfEe191A6Cf8a6c5761ab0a110DB837");
|
|
18575
|
+
var AVNU_MIDDLEWARE = ContractAddr.from("0x4a7972ed3f5d1e74a6d6c4a8f467666953d081c8f2270390cc169d50d17cb0d");
|
|
18573
18576
|
function toBigInt(value) {
|
|
18574
18577
|
if (typeof value === "string") {
|
|
18575
18578
|
return BigInt(value);
|
|
@@ -18713,6 +18716,66 @@ var CommonAdapter = class extends BaseAdapter {
|
|
|
18713
18716
|
};
|
|
18714
18717
|
};
|
|
18715
18718
|
}
|
|
18719
|
+
getAvnuAdapter(fromToken, toToken, id) {
|
|
18720
|
+
return () => ({
|
|
18721
|
+
leaf: this.constructSimpleLeafData({
|
|
18722
|
+
id,
|
|
18723
|
+
target: AVNU_MIDDLEWARE,
|
|
18724
|
+
method: "multi_route_swap",
|
|
18725
|
+
packedArguments: [
|
|
18726
|
+
fromToken.toBigInt(),
|
|
18727
|
+
toToken.toBigInt(),
|
|
18728
|
+
this.config.vaultAllocator.toBigInt()
|
|
18729
|
+
]
|
|
18730
|
+
}),
|
|
18731
|
+
callConstructor: this.getAvnuCall(fromToken, toToken).bind(this)
|
|
18732
|
+
});
|
|
18733
|
+
}
|
|
18734
|
+
getAvnuCall(fromToken, toToken) {
|
|
18735
|
+
return (params) => {
|
|
18736
|
+
return {
|
|
18737
|
+
sanitizer: SIMPLE_SANITIZER,
|
|
18738
|
+
call: {
|
|
18739
|
+
contractAddress: AVNU_MIDDLEWARE,
|
|
18740
|
+
selector: import_starknet13.hash.getSelectorFromName("multi_route_swap"),
|
|
18741
|
+
calldata: [
|
|
18742
|
+
fromToken.toBigInt(),
|
|
18743
|
+
// sell_token_address
|
|
18744
|
+
toBigInt(params.props.token_from_amount.low.toString()),
|
|
18745
|
+
// sell_token_amount low
|
|
18746
|
+
toBigInt(params.props.token_from_amount.high.toString()),
|
|
18747
|
+
// sell_token_amount high
|
|
18748
|
+
toToken.toBigInt(),
|
|
18749
|
+
// buy_token_address
|
|
18750
|
+
toBigInt(params.props.token_to_amount.low.toString()),
|
|
18751
|
+
// buy_token_amount low
|
|
18752
|
+
toBigInt(params.props.token_to_amount.high.toString()),
|
|
18753
|
+
// buy_token_amount high
|
|
18754
|
+
toBigInt(params.props.token_to_min_amount.low.toString()),
|
|
18755
|
+
// buy_token_min_amount low
|
|
18756
|
+
toBigInt(params.props.token_to_min_amount.high.toString()),
|
|
18757
|
+
// buy_token_min_amount high
|
|
18758
|
+
this.config.vaultAllocator.toBigInt(),
|
|
18759
|
+
// beneficiary
|
|
18760
|
+
toBigInt(0),
|
|
18761
|
+
// integrator_fee_amount_bps
|
|
18762
|
+
this.config.vaultAllocator.toBigInt(),
|
|
18763
|
+
// integrator_fee_recipient
|
|
18764
|
+
// unpack routes
|
|
18765
|
+
BigInt(params.props.routes.length),
|
|
18766
|
+
...params.props.routes.map((r) => [
|
|
18767
|
+
BigInt(import_starknet13.num.hexToDecimalString(r.token_from)),
|
|
18768
|
+
BigInt(import_starknet13.num.hexToDecimalString(r.token_to)),
|
|
18769
|
+
BigInt(import_starknet13.num.hexToDecimalString(r.exchange_address)),
|
|
18770
|
+
BigInt(r.percent),
|
|
18771
|
+
BigInt(r.additional_swap_params.length),
|
|
18772
|
+
...r.additional_swap_params.map((p) => BigInt(import_starknet13.num.hexToDecimalString(p)))
|
|
18773
|
+
]).flat()
|
|
18774
|
+
]
|
|
18775
|
+
}
|
|
18776
|
+
};
|
|
18777
|
+
};
|
|
18778
|
+
}
|
|
18716
18779
|
};
|
|
18717
18780
|
|
|
18718
18781
|
// src/strategies/universal-adapters/vesu-adapter.ts
|
|
@@ -21026,7 +21089,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
|
|
|
21026
21089
|
}
|
|
21027
21090
|
};
|
|
21028
21091
|
logger.verbose(`VesuAdapter::ConstructingModify::Debt::${JSON.stringify(_debt)}`);
|
|
21029
|
-
const singletonContract = new import_starknet14.Contract(vesu_singleton_abi_default, this.VESU_SINGLETON.toString(), new import_starknet14.RpcProvider({ nodeUrl: "" }));
|
|
21092
|
+
const singletonContract = new import_starknet14.Contract({ abi: vesu_singleton_abi_default, address: this.VESU_SINGLETON.toString(), providerOrAccount: new import_starknet14.RpcProvider({ nodeUrl: "" }) });
|
|
21030
21093
|
const call = singletonContract.populate("modify_position", {
|
|
21031
21094
|
params: {
|
|
21032
21095
|
pool_id: this.config.poolId.toBigInt(),
|
|
@@ -21049,6 +21112,40 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
|
|
|
21049
21112
|
}
|
|
21050
21113
|
};
|
|
21051
21114
|
};
|
|
21115
|
+
this.getDefispringRewardsAdapter = (id) => {
|
|
21116
|
+
return () => {
|
|
21117
|
+
const packedArguments = [];
|
|
21118
|
+
const output = {
|
|
21119
|
+
id: BigInt(import_starknet14.num.getDecimalString(import_starknet14.shortString.encodeShortString(id))),
|
|
21120
|
+
readableId: id,
|
|
21121
|
+
data: [
|
|
21122
|
+
SIMPLE_SANITIZER.toBigInt(),
|
|
21123
|
+
// sanitizer address
|
|
21124
|
+
VESU_REWARDS_CONTRACT.toBigInt(),
|
|
21125
|
+
// contract
|
|
21126
|
+
toBigInt(import_starknet14.hash.getSelectorFromName("claim")),
|
|
21127
|
+
// method name
|
|
21128
|
+
BigInt(packedArguments.length),
|
|
21129
|
+
...packedArguments
|
|
21130
|
+
]
|
|
21131
|
+
};
|
|
21132
|
+
return { leaf: output, callConstructor: this.getDefiSpringClaimCall().bind(this) };
|
|
21133
|
+
};
|
|
21134
|
+
};
|
|
21135
|
+
this.getDefiSpringClaimCall = () => {
|
|
21136
|
+
return (params) => ({
|
|
21137
|
+
sanitizer: SIMPLE_SANITIZER,
|
|
21138
|
+
call: {
|
|
21139
|
+
contractAddress: VESU_REWARDS_CONTRACT,
|
|
21140
|
+
selector: import_starknet14.hash.getSelectorFromName("claim"),
|
|
21141
|
+
calldata: [
|
|
21142
|
+
BigInt(params.amount.toWei()),
|
|
21143
|
+
BigInt(params.proofs.length),
|
|
21144
|
+
...params.proofs.map((proof) => BigInt(import_starknet14.num.hexToDecimalString(proof)))
|
|
21145
|
+
]
|
|
21146
|
+
}
|
|
21147
|
+
});
|
|
21148
|
+
};
|
|
21052
21149
|
this.config = config;
|
|
21053
21150
|
}
|
|
21054
21151
|
static getDefaultModifyPositionCallParams(params) {
|
|
@@ -21090,7 +21187,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
|
|
|
21090
21187
|
throw new Error(`Unknown VesuAmountDenomination: ${denomination}`);
|
|
21091
21188
|
}
|
|
21092
21189
|
getVesuSingletonContract(config) {
|
|
21093
|
-
return new import_starknet14.Contract(vesu_singleton_abi_default, this.VESU_SINGLETON.address, config.provider);
|
|
21190
|
+
return new import_starknet14.Contract({ abi: vesu_singleton_abi_default, address: this.VESU_SINGLETON.address, providerOrAccount: config.provider });
|
|
21094
21191
|
}
|
|
21095
21192
|
async getLTVConfig(config) {
|
|
21096
21193
|
const CACHE_KEY = "ltv_config";
|
|
@@ -23453,16 +23550,16 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
|
|
|
23453
23550
|
);
|
|
23454
23551
|
this.metadata = metadata;
|
|
23455
23552
|
this.address = metadata.address;
|
|
23456
|
-
this.contract = new import_starknet15.Contract(
|
|
23457
|
-
universal_vault_abi_default,
|
|
23458
|
-
this.address.address,
|
|
23459
|
-
this.config.provider
|
|
23460
|
-
);
|
|
23461
|
-
this.managerContract = new import_starknet15.Contract(
|
|
23462
|
-
vault_manager_abi_default,
|
|
23463
|
-
this.metadata.additionalInfo.manager.address,
|
|
23464
|
-
this.config.provider
|
|
23465
|
-
);
|
|
23553
|
+
this.contract = new import_starknet15.Contract({
|
|
23554
|
+
abi: universal_vault_abi_default,
|
|
23555
|
+
address: this.address.address,
|
|
23556
|
+
providerOrAccount: this.config.provider
|
|
23557
|
+
});
|
|
23558
|
+
this.managerContract = new import_starknet15.Contract({
|
|
23559
|
+
abi: vault_manager_abi_default,
|
|
23560
|
+
address: this.metadata.additionalInfo.manager.address,
|
|
23561
|
+
providerOrAccount: this.config.provider
|
|
23562
|
+
});
|
|
23466
23563
|
}
|
|
23467
23564
|
getMerkleTree() {
|
|
23468
23565
|
if (this.merkleTree) return this.merkleTree;
|
|
@@ -23512,11 +23609,11 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
|
|
|
23512
23609
|
amountInfo.tokenInfo.address.eq(this.asset().address),
|
|
23513
23610
|
"Deposit token mismatch"
|
|
23514
23611
|
);
|
|
23515
|
-
const assetContract = new import_starknet15.Contract(
|
|
23516
|
-
universal_vault_abi_default,
|
|
23517
|
-
this.asset().address.address,
|
|
23518
|
-
this.config.provider
|
|
23519
|
-
);
|
|
23612
|
+
const assetContract = new import_starknet15.Contract({
|
|
23613
|
+
abi: universal_vault_abi_default,
|
|
23614
|
+
address: this.asset().address.address,
|
|
23615
|
+
providerOrAccount: this.config.provider
|
|
23616
|
+
});
|
|
23520
23617
|
const call1 = assetContract.populate("approve", [
|
|
23521
23618
|
this.address.address,
|
|
23522
23619
|
import_starknet15.uint256.bnToUint256(amountInfo.amount.toWei())
|
|
@@ -23678,7 +23775,7 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
|
|
|
23678
23775
|
const aumToken = vesuAum.plus(balance.amount);
|
|
23679
23776
|
logger.verbose(`${this.getTag()} Actual AUM: ${aumToken}`);
|
|
23680
23777
|
const netAPY = await this.netAPY();
|
|
23681
|
-
const defispringAPY = netAPY.splits.find((s) => s.id === "defispring")?.apy || 0;
|
|
23778
|
+
const defispringAPY = (netAPY.splits.find((s) => s.id === "defispring")?.apy || 0) * 0.8;
|
|
23682
23779
|
if (!defispringAPY) throw new Error("DefiSpring APY not found");
|
|
23683
23780
|
const timeDiff = Math.round(Date.now() / 1e3) - Number(lastReportTime);
|
|
23684
23781
|
const growthRate = timeDiff * defispringAPY / (365 * 24 * 60 * 60);
|
|
@@ -23921,6 +24018,51 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
|
|
|
23921
24018
|
const manageCall = this.getManageCall(["approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */, "bring_liquidity" /* BRING_LIQUIDITY */], [manageCall1, manageCall2]);
|
|
23922
24019
|
return manageCall;
|
|
23923
24020
|
}
|
|
24021
|
+
async getHarvestCall() {
|
|
24022
|
+
const vesuHarvest = new VesuHarvests(this.config);
|
|
24023
|
+
const harvestInfo = await vesuHarvest.getUnHarvestedRewards(this.metadata.additionalInfo.vaultAllocator);
|
|
24024
|
+
if (harvestInfo.length != 1) {
|
|
24025
|
+
throw new Error(`Expected 1 harvest info, got ${harvestInfo.length}`);
|
|
24026
|
+
}
|
|
24027
|
+
const amount = harvestInfo[0].claim.amount;
|
|
24028
|
+
const actualReward = harvestInfo[0].actualReward;
|
|
24029
|
+
const proofs = harvestInfo[0].proof;
|
|
24030
|
+
if (actualReward.isZero()) {
|
|
24031
|
+
throw new Error(`Expected non-zero actual reward, got ${harvestInfo[0].actualReward}`);
|
|
24032
|
+
}
|
|
24033
|
+
const manage1Info = this.getProofs("defispring_rewards" /* DEFISPRING_REWARDS */);
|
|
24034
|
+
const manageCall1 = manage1Info.callConstructor({
|
|
24035
|
+
amount,
|
|
24036
|
+
proofs
|
|
24037
|
+
});
|
|
24038
|
+
const proofIds = ["defispring_rewards" /* DEFISPRING_REWARDS */];
|
|
24039
|
+
const manageCalls = [manageCall1];
|
|
24040
|
+
const STRK2 = Global.getDefaultTokens().find((t) => t.symbol === "STRK");
|
|
24041
|
+
if (this.asset().symbol != "STRK") {
|
|
24042
|
+
const manage2Info = this.getProofs("approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */);
|
|
24043
|
+
const manageCall2 = manage2Info.callConstructor({
|
|
24044
|
+
amount: actualReward
|
|
24045
|
+
});
|
|
24046
|
+
const avnuModule = new AvnuWrapper();
|
|
24047
|
+
const quote = await avnuModule.getQuotes(
|
|
24048
|
+
STRK2.address.address,
|
|
24049
|
+
this.asset().address.address,
|
|
24050
|
+
actualReward.toWei(),
|
|
24051
|
+
this.address.address
|
|
24052
|
+
);
|
|
24053
|
+
const swapInfo = await avnuModule.getSwapInfo(quote, this.address.address, 0, this.address.address);
|
|
24054
|
+
const manage3Info = this.getProofs("avnu_swap_rewards" /* AVNU_SWAP_REWARDS */);
|
|
24055
|
+
const manageCall3 = manage3Info.callConstructor({
|
|
24056
|
+
props: swapInfo
|
|
24057
|
+
});
|
|
24058
|
+
proofIds.push("approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */);
|
|
24059
|
+
proofIds.push("avnu_swap_rewards" /* AVNU_SWAP_REWARDS */);
|
|
24060
|
+
manageCalls.push(manageCall2);
|
|
24061
|
+
manageCalls.push(manageCall3);
|
|
24062
|
+
}
|
|
24063
|
+
const manageCall = this.getManageCall(proofIds, manageCalls);
|
|
24064
|
+
return { call: manageCall, reward: actualReward, tokenInfo: STRK2 };
|
|
24065
|
+
}
|
|
23924
24066
|
async getRebalanceCall(params) {
|
|
23925
24067
|
let callSet1 = this.getVesuModifyPositionCalls({
|
|
23926
24068
|
isLeg1: true,
|
|
@@ -23957,6 +24099,9 @@ var UNIVERSAL_MANAGE_IDS = /* @__PURE__ */ ((UNIVERSAL_MANAGE_IDS2) => {
|
|
|
23957
24099
|
UNIVERSAL_MANAGE_IDS2["APPROVE_TOKEN2"] = "approve_token2";
|
|
23958
24100
|
UNIVERSAL_MANAGE_IDS2["APPROVE_BRING_LIQUIDITY"] = "approve_bring_liquidity";
|
|
23959
24101
|
UNIVERSAL_MANAGE_IDS2["BRING_LIQUIDITY"] = "bring_liquidity";
|
|
24102
|
+
UNIVERSAL_MANAGE_IDS2["DEFISPRING_REWARDS"] = "defispring_rewards";
|
|
24103
|
+
UNIVERSAL_MANAGE_IDS2["APPROVE_SWAP_TOKEN1"] = "approve_swap_token1";
|
|
24104
|
+
UNIVERSAL_MANAGE_IDS2["AVNU_SWAP_REWARDS"] = "avnu_swap_rewards";
|
|
23960
24105
|
return UNIVERSAL_MANAGE_IDS2;
|
|
23961
24106
|
})(UNIVERSAL_MANAGE_IDS || {});
|
|
23962
24107
|
var UNIVERSAL_ADAPTERS = /* @__PURE__ */ ((UNIVERSAL_ADAPTERS2) => {
|
|
@@ -24006,6 +24151,10 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
|
|
|
24006
24151
|
vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(ETHToken.address, vesuAdapterETHUSDC.VESU_SINGLETON, "approve_token2" /* APPROVE_TOKEN2 */).bind(commonAdapter));
|
|
24007
24152
|
vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(USDCToken.address, vaultSettings.vaultAddress, "approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */).bind(commonAdapter));
|
|
24008
24153
|
vaultSettings.leafAdapters.push(commonAdapter.getBringLiquidityAdapter("bring_liquidity" /* BRING_LIQUIDITY */).bind(commonAdapter));
|
|
24154
|
+
vaultSettings.leafAdapters.push(vesuAdapterUSDCETH.getDefispringRewardsAdapter("defispring_rewards" /* DEFISPRING_REWARDS */).bind(vesuAdapterUSDCETH));
|
|
24155
|
+
const STRKToken = Global.getDefaultTokens().find((token) => token.symbol === "STRK");
|
|
24156
|
+
vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(STRKToken.address, AVNU_MIDDLEWARE, "approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */).bind(commonAdapter));
|
|
24157
|
+
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
24009
24158
|
return vaultSettings;
|
|
24010
24159
|
}
|
|
24011
24160
|
var _riskFactor4 = [
|
|
@@ -24493,7 +24642,7 @@ var Store = class _Store {
|
|
|
24493
24642
|
logger.warn(`This not stored anywhere, please you backup this password for future use`);
|
|
24494
24643
|
logger.warn(`\u26A0\uFE0F=========================================\u26A0\uFE0F`);
|
|
24495
24644
|
}
|
|
24496
|
-
getAccount(accountKey, txVersion
|
|
24645
|
+
getAccount(accountKey, txVersion) {
|
|
24497
24646
|
const accounts = this.loadAccounts();
|
|
24498
24647
|
logger.verbose(`nAccounts loaded for network: ${Object.keys(accounts).length}`);
|
|
24499
24648
|
const data = accounts[accountKey];
|
|
@@ -24502,7 +24651,13 @@ var Store = class _Store {
|
|
|
24502
24651
|
}
|
|
24503
24652
|
logger.verbose(`Account loaded: ${accountKey} from network: ${this.config.network}`);
|
|
24504
24653
|
logger.verbose(`Address: ${data.address}`);
|
|
24505
|
-
const acc = new import_starknet16.Account(
|
|
24654
|
+
const acc = new import_starknet16.Account({
|
|
24655
|
+
provider: this.config.provider,
|
|
24656
|
+
address: data.address,
|
|
24657
|
+
signer: data.pk,
|
|
24658
|
+
cairoVersion: void 0,
|
|
24659
|
+
transactionVersion: txVersion
|
|
24660
|
+
});
|
|
24506
24661
|
return acc;
|
|
24507
24662
|
}
|
|
24508
24663
|
addAccount(accountKey, address, pk) {
|
|
@@ -24661,7 +24816,7 @@ async function prepareMultiDeployContracts(contracts, config, acc) {
|
|
|
24661
24816
|
for (const { contract_name, package_name, constructorData } of contracts) {
|
|
24662
24817
|
const declaredInfo = await myDeclare(contract_name, package_name, config, acc);
|
|
24663
24818
|
const classHash = declaredInfo.class_hash;
|
|
24664
|
-
const { calls, addresses } = import_starknet17.
|
|
24819
|
+
const { calls, addresses } = new import_starknet17.Deployer().buildDeployerCall({
|
|
24665
24820
|
classHash,
|
|
24666
24821
|
constructorCalldata: constructorData
|
|
24667
24822
|
}, acc.address);
|