@strkfarm/sdk 2.0.0-dev.35 → 2.0.0-dev.36
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 +2 -2
- package/dist/cli.mjs +2 -2
- package/dist/index.browser.global.js +19244 -28574
- package/dist/index.browser.mjs +8439 -17951
- package/dist/index.d.ts +578 -2746
- package/dist/index.js +8528 -18078
- package/dist/index.mjs +8456 -17968
- package/package.json +3 -3
- package/src/data/universal-vault.abi.json +8 -7
- package/src/dataTypes/bignumber.browser.ts +5 -1
- package/src/dataTypes/bignumber.node.ts +5 -0
- package/src/global.ts +21 -1
- package/src/interfaces/common.tsx +39 -4
- package/src/modules/avnu.ts +19 -10
- package/src/modules/index.ts +1 -1
- package/src/strategies/base-strategy.ts +92 -8
- package/src/strategies/constants.ts +8 -3
- package/src/strategies/ekubo-cl-vault.tsx +150 -16
- package/src/strategies/factory.ts +21 -1
- package/src/strategies/index.ts +2 -7
- package/src/strategies/registry.ts +28 -5
- package/src/strategies/sensei.ts +29 -13
- package/src/strategies/svk-strategy.ts +26 -2
- package/src/strategies/token-boosted-xstrk-carry-strategy.tsx +1057 -0
- package/src/strategies/universal-adapters/avnu-adapter.ts +16 -8
- package/src/strategies/universal-adapters/index.ts +1 -2
- package/src/strategies/universal-adapters/svk-troves-adapter.ts +19 -6
- package/src/strategies/universal-adapters/vesu-modify-position-adapter.ts +22 -3
- package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +75 -52
- package/src/strategies/universal-adapters/vesu-position-common.ts +38 -31
- package/src/strategies/universal-lst-muliplier-strategy.tsx +222 -269
- package/src/strategies/universal-strategy.tsx +166 -105
- package/src/strategies/vesu-rebalance.tsx +3 -6
- package/src/strategies/yoloVault.ts +1084 -0
- package/src/utils/health-factor-math.ts +29 -0
- package/src/modules/ExtendedWrapperSDk/index.ts +0 -62
- package/src/modules/ExtendedWrapperSDk/types.ts +0 -334
- package/src/modules/ExtendedWrapperSDk/wrapper.ts +0 -611
- package/src/strategies/universal-adapters/extended-adapter.ts +0 -860
- package/src/strategies/universal-adapters/usdc<>usdce-adapter.ts +0 -200
- package/src/strategies/usdc-boosted-strategy.tsx +0 -693
- package/src/strategies/vesu-extended-strategy/services/executionService.ts +0 -2234
- package/src/strategies/vesu-extended-strategy/services/extended-vesu-state-manager.ts +0 -4254
- package/src/strategies/vesu-extended-strategy/services/ltv-imbalance-rebalance-math.ts +0 -783
- package/src/strategies/vesu-extended-strategy/services/operationService.ts +0 -56
- package/src/strategies/vesu-extended-strategy/types/transaction-metadata.ts +0 -88
- package/src/strategies/vesu-extended-strategy/utils/config.runtime.ts +0 -78
- package/src/strategies/vesu-extended-strategy/utils/constants.ts +0 -48
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +0 -528
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +0 -1014
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BaseAdapter,
|
|
3
|
-
DepositParams,
|
|
4
|
-
WithdrawParams,
|
|
5
|
-
BaseAdapterConfig,
|
|
6
|
-
} from "./baseAdapter";
|
|
7
|
-
import { toBigInt } from "./adapter-utils";
|
|
8
|
-
import { Protocols } from "@/interfaces";
|
|
9
|
-
import { SupportedPosition } from "./baseAdapter";
|
|
10
|
-
import { PositionAPY, APYType, PositionAmount } from "./baseAdapter";
|
|
11
|
-
import { Web3Number } from "@/dataTypes";
|
|
12
|
-
import { PositionInfo } from "./baseAdapter";
|
|
13
|
-
import { ManageCall } from "./baseAdapter";
|
|
14
|
-
import { ContractAddr } from "@/dataTypes";
|
|
15
|
-
import { AVNU_EXCHANGE } from "./adapter-utils";
|
|
16
|
-
import { hash, uint256 } from "starknet";
|
|
17
|
-
import { AVNU_EXCHANGE_FOR_LEGACY_USDC } from "./adapter-utils";
|
|
18
|
-
import { AVNU_LEGACY_SANITIZER } from "./adapter-utils";
|
|
19
|
-
import { assert, logger } from "@/utils";
|
|
20
|
-
import { ERC20 } from "@/modules";
|
|
21
|
-
|
|
22
|
-
export class UsdcToUsdceAdapter extends BaseAdapter<
|
|
23
|
-
DepositParams,
|
|
24
|
-
WithdrawParams
|
|
25
|
-
> {
|
|
26
|
-
readonly config: BaseAdapterConfig;
|
|
27
|
-
|
|
28
|
-
private _approveProofReadableId(usdcToUsdce: boolean): string {
|
|
29
|
-
const method = usdcToUsdce ? "swap_to_legacy" : "swap_to_new";
|
|
30
|
-
return `approve_${method}`;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private _swapProofReadableId(usdcToUsdce: boolean): string {
|
|
34
|
-
const method = usdcToUsdce ? "swap_to_legacy" : "swap_to_new";
|
|
35
|
-
const target = usdcToUsdce
|
|
36
|
-
? this.config.supportedPositions[0].asset
|
|
37
|
-
: this.config.supportedPositions[1].asset;
|
|
38
|
-
return `${method}_${target.symbol}`;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
private buildSwapLeafConfigs(usdcToUsdce: boolean): {
|
|
42
|
-
target: ContractAddr;
|
|
43
|
-
method: string;
|
|
44
|
-
packedArguments: bigint[];
|
|
45
|
-
sanitizer: ContractAddr;
|
|
46
|
-
id: string;
|
|
47
|
-
}[] {
|
|
48
|
-
const method = usdcToUsdce ? "swap_to_legacy" : "swap_to_new";
|
|
49
|
-
const target = usdcToUsdce
|
|
50
|
-
? this.config.supportedPositions[0].asset
|
|
51
|
-
: this.config.supportedPositions[1].asset;
|
|
52
|
-
return [
|
|
53
|
-
{
|
|
54
|
-
target: target.address,
|
|
55
|
-
method: "approve",
|
|
56
|
-
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
57
|
-
id: this._approveProofReadableId(usdcToUsdce),
|
|
58
|
-
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
target: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
62
|
-
method: method,
|
|
63
|
-
packedArguments: [],
|
|
64
|
-
id: this._swapProofReadableId(usdcToUsdce),
|
|
65
|
-
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
66
|
-
},
|
|
67
|
-
];
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
private async buildSwapCalls(
|
|
71
|
-
params: DepositParams | WithdrawParams,
|
|
72
|
-
usdcToUsdce: boolean,
|
|
73
|
-
): Promise<ManageCall[]> {
|
|
74
|
-
const approveAmount = uint256.bnToUint256(params.amount.toWei());
|
|
75
|
-
const target = usdcToUsdce
|
|
76
|
-
? this.config.supportedPositions[0].asset
|
|
77
|
-
: this.config.supportedPositions[1].asset;
|
|
78
|
-
const method = usdcToUsdce ? "swap_to_legacy" : "swap_to_new";
|
|
79
|
-
return [
|
|
80
|
-
{
|
|
81
|
-
proofReadableId: this._approveProofReadableId(usdcToUsdce),
|
|
82
|
-
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
83
|
-
call: {
|
|
84
|
-
contractAddress: target.address,
|
|
85
|
-
selector: hash.getSelectorFromName("approve"),
|
|
86
|
-
calldata: [
|
|
87
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt(),
|
|
88
|
-
toBigInt(approveAmount.low.toString()),
|
|
89
|
-
toBigInt(approveAmount.high.toString()),
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
proofReadableId: this._swapProofReadableId(usdcToUsdce),
|
|
95
|
-
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
96
|
-
call: {
|
|
97
|
-
contractAddress: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
98
|
-
selector: hash.getSelectorFromName(method),
|
|
99
|
-
calldata: [
|
|
100
|
-
toBigInt(approveAmount.low.toString()), // amount low
|
|
101
|
-
toBigInt(approveAmount.high.toString()), // amount high
|
|
102
|
-
],
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
];
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
constructor(config: BaseAdapterConfig) {
|
|
109
|
-
super(config, UsdcToUsdceAdapter.name, Protocols.AVNU);
|
|
110
|
-
this.config = config as BaseAdapterConfig;
|
|
111
|
-
assert(this.config.supportedPositions.length === 2, "UsdcToUsdceAdapter must have 2 supported positions");
|
|
112
|
-
assert(this.config.supportedPositions[0].asset.symbol === "USDC", "UsdcToUsdceAdapter must have USDC as the first supported position");
|
|
113
|
-
assert(this.config.supportedPositions[1].asset.symbol === "USDC.e", "UsdcToUsdceAdapter must have USDCE as the second supported position");
|
|
114
|
-
}
|
|
115
|
-
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
116
|
-
protected async getAPY(
|
|
117
|
-
supportedPosition: SupportedPosition,
|
|
118
|
-
): Promise<PositionAPY> {
|
|
119
|
-
return Promise.resolve({ apy: 0, type: APYType.BASE });
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
protected async getPosition(
|
|
123
|
-
supportedPosition: SupportedPosition,
|
|
124
|
-
): Promise<PositionAmount | null> {
|
|
125
|
-
const toToken = this.config.supportedPositions[1].asset;
|
|
126
|
-
if (supportedPosition.asset.symbol != toToken.symbol) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
// only measure balance of toToken, bcz from token usually gets trakced in unused balance or a previous avnu adapter
|
|
131
|
-
const balance = await new ERC20(this.config.networkConfig).balanceOf(
|
|
132
|
-
toToken.address,
|
|
133
|
-
this.config.vaultAllocator.address,
|
|
134
|
-
toToken.decimals,
|
|
135
|
-
);
|
|
136
|
-
return { amount: balance, remarks: `USDC.e unused balance (VA)` };
|
|
137
|
-
} catch (_e) {
|
|
138
|
-
logger.error(`${UsdcToUsdceAdapter.name}::getPosition: failed for ${toToken.symbol}`);
|
|
139
|
-
throw new Error(`${UsdcToUsdceAdapter.name}: failed to get balance for ${toToken.symbol}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
async maxDeposit(amount?: Web3Number): Promise<PositionInfo> {
|
|
144
|
-
return Promise.resolve({
|
|
145
|
-
tokenInfo: this.config.baseToken,
|
|
146
|
-
amount: new Web3Number(0, 0),
|
|
147
|
-
usdValue: 0,
|
|
148
|
-
apy: { apy: 0, type: APYType.BASE },
|
|
149
|
-
protocol: Protocols.AVNU,
|
|
150
|
-
remarks: "",
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
async maxWithdraw(): Promise<PositionInfo> {
|
|
155
|
-
return Promise.resolve({
|
|
156
|
-
tokenInfo: this.config.baseToken,
|
|
157
|
-
amount: new Web3Number(0, 0),
|
|
158
|
-
usdValue: 0,
|
|
159
|
-
apy: { apy: 0, type: APYType.BASE },
|
|
160
|
-
protocol: Protocols.AVNU,
|
|
161
|
-
remarks: "",
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
protected _getDepositLeaf(): {
|
|
166
|
-
// considering deposit is converting usdc to usdce
|
|
167
|
-
target: ContractAddr;
|
|
168
|
-
method: string;
|
|
169
|
-
packedArguments: bigint[];
|
|
170
|
-
sanitizer: ContractAddr;
|
|
171
|
-
id: string;
|
|
172
|
-
}[] {
|
|
173
|
-
return this.buildSwapLeafConfigs(true);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
protected _getWithdrawLeaf(): {
|
|
177
|
-
target: ContractAddr;
|
|
178
|
-
method: string;
|
|
179
|
-
packedArguments: bigint[];
|
|
180
|
-
sanitizer: ContractAddr;
|
|
181
|
-
id: string;
|
|
182
|
-
}[] {
|
|
183
|
-
return this.buildSwapLeafConfigs(false);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
async getDepositCall(params: DepositParams): Promise<ManageCall[]> {
|
|
187
|
-
const calls = await this.buildSwapCalls(params, true);
|
|
188
|
-
return calls;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
//Swap wbtc to usdc
|
|
192
|
-
async getWithdrawCall(params: WithdrawParams): Promise<ManageCall[]> {
|
|
193
|
-
const calls = await this.buildSwapCalls(params, false);
|
|
194
|
-
return calls;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
async getHealthFactor(): Promise<number> {
|
|
198
|
-
return Promise.resolve(1);
|
|
199
|
-
}
|
|
200
|
-
}
|