@strkfarm/sdk 2.0.0-dev.19 → 2.0.0-dev.20
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.browser.global.js +222 -198
- package/dist/index.browser.mjs +59 -45
- package/dist/index.d.ts +8 -4
- package/dist/index.js +59 -45
- package/dist/index.mjs +59 -45
- package/package.json +1 -1
- package/src/modules/ExtendedWrapperSDk/wrapper.ts +7 -3
- package/src/strategies/universal-adapters/extended-adapter.ts +63 -49
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +9 -9
package/dist/index.browser.mjs
CHANGED
|
@@ -4744,11 +4744,13 @@ var ExtendedWrapper = class {
|
|
|
4744
4744
|
* @param marketName - The name of the market to get funding rates for
|
|
4745
4745
|
* @returns The funding rates for the specified market
|
|
4746
4746
|
*/
|
|
4747
|
-
async getFundingRates(marketName, side) {
|
|
4747
|
+
async getFundingRates(marketName, side, startTime, endTime) {
|
|
4748
|
+
const endTimeParam = endTime !== void 0 ? `&end_time=${endTime}` : "";
|
|
4749
|
+
const startTimeParam = startTime !== void 0 ? `&start_time=${startTime}` : "";
|
|
4748
4750
|
return this.makeRequest(
|
|
4749
4751
|
`/api/v1/markets/funding-rates?market_name=${encodeURIComponent(
|
|
4750
4752
|
marketName
|
|
4751
|
-
)}&side=${encodeURIComponent(side)}`
|
|
4753
|
+
)}&side=${encodeURIComponent(side)}${startTimeParam}${endTimeParam}`
|
|
4752
4754
|
);
|
|
4753
4755
|
}
|
|
4754
4756
|
};
|
|
@@ -29637,8 +29639,8 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29637
29639
|
super(config, _ExtendedAdapter.name, Protocols.EXTENDED);
|
|
29638
29640
|
this.config = config;
|
|
29639
29641
|
const client = new wrapper_default({
|
|
29640
|
-
baseUrl: this.config.
|
|
29641
|
-
apiKey:
|
|
29642
|
+
baseUrl: this.config.extendedBackendWriteUrl,
|
|
29643
|
+
apiKey: "",
|
|
29642
29644
|
timeout: this.config.extendedTimeout,
|
|
29643
29645
|
retries: this.config.extendedRetries
|
|
29644
29646
|
});
|
|
@@ -29649,11 +29651,8 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29649
29651
|
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
29650
29652
|
async getAPY(supportedPosition) {
|
|
29651
29653
|
const side = supportedPosition.isDebt ? "LONG" : "SHORT";
|
|
29652
|
-
const fundingRates = await this.
|
|
29653
|
-
|
|
29654
|
-
side
|
|
29655
|
-
);
|
|
29656
|
-
if (fundingRates.status !== "OK") {
|
|
29654
|
+
const fundingRates = await this.getFundingRates(side);
|
|
29655
|
+
if (!fundingRates.success) {
|
|
29657
29656
|
logger.error("error getting funding rates", fundingRates);
|
|
29658
29657
|
return { apy: 0, type: "base" /* BASE */ };
|
|
29659
29658
|
}
|
|
@@ -29661,10 +29660,26 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29661
29660
|
const apy = Number(fundingRate.f) * 365 * 24;
|
|
29662
29661
|
return { apy, type: "base" /* BASE */ };
|
|
29663
29662
|
}
|
|
29664
|
-
async
|
|
29665
|
-
|
|
29666
|
-
|
|
29663
|
+
async getFundingRates(side, startTime, endTime) {
|
|
29664
|
+
try {
|
|
29665
|
+
const response = await axios9.get(`${this.config.extendedBackendReadUrl}/fundingRates/${this.config.extendedMarketName}/${side}`, {
|
|
29666
|
+
params: {
|
|
29667
|
+
startTime: startTime ? startTime.toString() : void 0,
|
|
29668
|
+
endTime: endTime ? endTime.toString() : void 0
|
|
29669
|
+
}
|
|
29670
|
+
});
|
|
29671
|
+
if (!response.data.success) {
|
|
29672
|
+
logger.error("error getting funding rates", response.data);
|
|
29673
|
+
return { success: false, data: [] };
|
|
29674
|
+
}
|
|
29675
|
+
logger.info("success getting funding rates", response.data.data);
|
|
29676
|
+
return { success: true, data: response.data.data };
|
|
29677
|
+
} catch (err) {
|
|
29678
|
+
logger.error("error getting funding rates", err);
|
|
29679
|
+
return { success: false, data: [] };
|
|
29667
29680
|
}
|
|
29681
|
+
}
|
|
29682
|
+
async getPosition(supportedPosition) {
|
|
29668
29683
|
const holdings = await this.getExtendedDepositAmount();
|
|
29669
29684
|
if (!holdings) {
|
|
29670
29685
|
throw new Error("No position found");
|
|
@@ -30034,22 +30049,18 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30034
30049
|
}
|
|
30035
30050
|
async getExtendedDepositAmount() {
|
|
30036
30051
|
try {
|
|
30037
|
-
|
|
30038
|
-
|
|
30039
|
-
return void 0;
|
|
30040
|
-
}
|
|
30041
|
-
const result = await this.client.getHoldings();
|
|
30042
|
-
if (!result) {
|
|
30052
|
+
const result = await axios9.get(`${this.config.extendedBackendReadUrl}/holdings`);
|
|
30053
|
+
if (!result.data) {
|
|
30043
30054
|
logger.error("error getting holdings - API returned null/undefined");
|
|
30044
30055
|
return void 0;
|
|
30045
30056
|
}
|
|
30046
|
-
if (result.
|
|
30057
|
+
if (!result.data.success) {
|
|
30047
30058
|
logger.error(
|
|
30048
30059
|
`error getting holdings - API returned status: ${result.status}`
|
|
30049
30060
|
);
|
|
30050
30061
|
return void 0;
|
|
30051
30062
|
}
|
|
30052
|
-
const holdings = result.data;
|
|
30063
|
+
const holdings = result.data.data;
|
|
30053
30064
|
if (!holdings) {
|
|
30054
30065
|
logger.warn(
|
|
30055
30066
|
"holdings data is null/undefined - treating as zero balance"
|
|
@@ -30087,29 +30098,32 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30087
30098
|
return false;
|
|
30088
30099
|
}
|
|
30089
30100
|
async getAllOpenPositions() {
|
|
30090
|
-
|
|
30091
|
-
|
|
30092
|
-
|
|
30093
|
-
|
|
30094
|
-
|
|
30095
|
-
|
|
30096
|
-
|
|
30097
|
-
|
|
30098
|
-
if (response.data.length === 0) {
|
|
30099
|
-
return [];
|
|
30100
|
-
} else {
|
|
30101
|
-
return response.data;
|
|
30101
|
+
try {
|
|
30102
|
+
const response = await axios9.get(`${this.config.extendedBackendReadUrl}/positions`);
|
|
30103
|
+
if (response.data.success) {
|
|
30104
|
+
if (response.data.data.length === 0) {
|
|
30105
|
+
return [];
|
|
30106
|
+
} else {
|
|
30107
|
+
return response.data.data;
|
|
30108
|
+
}
|
|
30102
30109
|
}
|
|
30110
|
+
return null;
|
|
30111
|
+
} catch (err) {
|
|
30112
|
+
logger.error("error getting all open positions", err);
|
|
30113
|
+
return null;
|
|
30103
30114
|
}
|
|
30104
|
-
return null;
|
|
30105
30115
|
}
|
|
30106
30116
|
async getOrderHistory(marketName) {
|
|
30107
|
-
|
|
30108
|
-
|
|
30117
|
+
try {
|
|
30118
|
+
const result = await axios9.get(`${this.config.extendedBackendReadUrl}/marketOrders/${marketName}`);
|
|
30119
|
+
if (!result.data.success) {
|
|
30120
|
+
return null;
|
|
30121
|
+
}
|
|
30122
|
+
return result.data.data;
|
|
30123
|
+
} catch (err) {
|
|
30124
|
+
logger.error("error getting order history", err);
|
|
30109
30125
|
return null;
|
|
30110
30126
|
}
|
|
30111
|
-
const result = await this.client.getOrderHistory(marketName);
|
|
30112
|
-
return result.data;
|
|
30113
30127
|
}
|
|
30114
30128
|
async getOrderStatus(orderId, marketName) {
|
|
30115
30129
|
try {
|
|
@@ -34378,7 +34392,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34378
34392
|
WALLET_ADDRESS,
|
|
34379
34393
|
usdceToken.decimals
|
|
34380
34394
|
);
|
|
34381
|
-
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator walletBalance: ${walletBalance
|
|
34395
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator walletBalance: ${walletBalance}`);
|
|
34382
34396
|
const amountToBeTransferred = amount.minimum(walletBalance);
|
|
34383
34397
|
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator amountToBeTransferred: ${amountToBeTransferred.toNumber()}`);
|
|
34384
34398
|
if (amountToBeTransferred.lessThan(0)) {
|
|
@@ -35398,7 +35412,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35398
35412
|
];
|
|
35399
35413
|
}
|
|
35400
35414
|
};
|
|
35401
|
-
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1,
|
|
35415
|
+
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
|
|
35402
35416
|
vaultSettings.leafAdapters = [];
|
|
35403
35417
|
const wbtcToken = Global.getDefaultTokens().find(
|
|
35404
35418
|
(token) => token.symbol === lstSymbol
|
|
@@ -35433,8 +35447,8 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
35433
35447
|
],
|
|
35434
35448
|
vaultIdExtended,
|
|
35435
35449
|
extendedContract: EXTENDED_CONTRACT,
|
|
35436
|
-
|
|
35437
|
-
|
|
35450
|
+
extendedBackendWriteUrl,
|
|
35451
|
+
extendedBackendReadUrl,
|
|
35438
35452
|
extendedTimeout: 3e4,
|
|
35439
35453
|
extendedRetries: 3,
|
|
35440
35454
|
extendedBaseUrl: "https://api.starknet.extended.exchange",
|
|
@@ -35574,12 +35588,12 @@ var re7UsdcPrimeDevansh = {
|
|
|
35574
35588
|
minimumWBTCDifferenceForAvnuSwap: MINIMUM_WBTC_DIFFERENCE_FOR_AVNU_SWAP,
|
|
35575
35589
|
walletAddress: WALLET_ADDRESS
|
|
35576
35590
|
};
|
|
35577
|
-
var VesuExtendedTestStrategies = (
|
|
35591
|
+
var VesuExtendedTestStrategies = (extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) => {
|
|
35578
35592
|
return [
|
|
35579
|
-
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false,
|
|
35593
|
+
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing)
|
|
35580
35594
|
];
|
|
35581
35595
|
};
|
|
35582
|
-
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST,
|
|
35596
|
+
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
|
|
35583
35597
|
return {
|
|
35584
35598
|
name: `Extended Test ${underlyingSymbol}`,
|
|
35585
35599
|
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
@@ -35587,7 +35601,7 @@ function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses,
|
|
|
35587
35601
|
launchBlock: 0,
|
|
35588
35602
|
type: "Other",
|
|
35589
35603
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === underlyingSymbol)],
|
|
35590
|
-
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime,
|
|
35604
|
+
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing),
|
|
35591
35605
|
risk: {
|
|
35592
35606
|
riskFactor: _riskFactor3,
|
|
35593
35607
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
package/dist/index.d.ts
CHANGED
|
@@ -1393,7 +1393,7 @@ declare class ExtendedWrapper {
|
|
|
1393
1393
|
* @param marketName - The name of the market to get funding rates for
|
|
1394
1394
|
* @returns The funding rates for the specified market
|
|
1395
1395
|
*/
|
|
1396
|
-
getFundingRates(marketName: string, side: string): Promise<ExtendedApiResponse<FundingRate[]>>;
|
|
1396
|
+
getFundingRates(marketName: string, side: string, startTime: number, endTime?: number): Promise<ExtendedApiResponse<FundingRate[]>>;
|
|
1397
1397
|
}
|
|
1398
1398
|
|
|
1399
1399
|
interface Route {
|
|
@@ -1470,8 +1470,8 @@ declare class AvnuAdapter extends BaseAdapter<DepositParams, WithdrawParams> {
|
|
|
1470
1470
|
interface ExtendedAdapterConfig extends BaseAdapterConfig {
|
|
1471
1471
|
vaultIdExtended: number;
|
|
1472
1472
|
extendedContract: ContractAddr;
|
|
1473
|
-
|
|
1474
|
-
|
|
1473
|
+
extendedBackendReadUrl: string;
|
|
1474
|
+
extendedBackendWriteUrl: string;
|
|
1475
1475
|
extendedTimeout: number;
|
|
1476
1476
|
extendedRetries: number;
|
|
1477
1477
|
extendedBaseUrl: string;
|
|
@@ -1488,6 +1488,10 @@ declare class ExtendedAdapter extends BaseAdapter<DepositParams, WithdrawParams>
|
|
|
1488
1488
|
readonly minimumExtendedMovementAmount: number;
|
|
1489
1489
|
constructor(config: ExtendedAdapterConfig);
|
|
1490
1490
|
protected getAPY(supportedPosition: SupportedPosition): Promise<PositionAPY>;
|
|
1491
|
+
getFundingRates(side: string, startTime?: number, endTime?: number): Promise<{
|
|
1492
|
+
success: boolean;
|
|
1493
|
+
data: FundingRate[];
|
|
1494
|
+
}>;
|
|
1491
1495
|
protected getPosition(supportedPosition: SupportedPosition): Promise<PositionAmount>;
|
|
1492
1496
|
maxDeposit(amount?: Web3Number): Promise<PositionInfo>;
|
|
1493
1497
|
maxWithdraw(): Promise<PositionInfo>;
|
|
@@ -2330,7 +2334,7 @@ declare class VesuExtendedMultiplierStrategy<S extends VesuExtendedStrategySetti
|
|
|
2330
2334
|
usdValue: number;
|
|
2331
2335
|
}[]>;
|
|
2332
2336
|
}
|
|
2333
|
-
declare const VesuExtendedTestStrategies: (
|
|
2337
|
+
declare const VesuExtendedTestStrategies: (extendedBackendReadUrl: string, extendedBackendWriteUrl: string, vaultIdExtended: number, minimumExtendedMovementAmount: number, minimumVesuMovementAmount: number, minimumExtendedRetriesDelayForOrderStatus: number, minimumExtendedPriceDifferenceForSwapOpen: number, maximumExtendedPriceDifferenceForSwapClosing: number) => IStrategyMetadata<VesuExtendedStrategySettings>[];
|
|
2334
2338
|
|
|
2335
2339
|
declare const AddressesConfig: {
|
|
2336
2340
|
readonly tokens: {
|
package/dist/index.js
CHANGED
|
@@ -29777,11 +29777,13 @@ var ExtendedWrapper = class {
|
|
|
29777
29777
|
* @param marketName - The name of the market to get funding rates for
|
|
29778
29778
|
* @returns The funding rates for the specified market
|
|
29779
29779
|
*/
|
|
29780
|
-
async getFundingRates(marketName, side) {
|
|
29780
|
+
async getFundingRates(marketName, side, startTime, endTime) {
|
|
29781
|
+
const endTimeParam = endTime !== void 0 ? `&end_time=${endTime}` : "";
|
|
29782
|
+
const startTimeParam = startTime !== void 0 ? `&start_time=${startTime}` : "";
|
|
29781
29783
|
return this.makeRequest(
|
|
29782
29784
|
`/api/v1/markets/funding-rates?market_name=${encodeURIComponent(
|
|
29783
29785
|
marketName
|
|
29784
|
-
)}&side=${encodeURIComponent(side)}`
|
|
29786
|
+
)}&side=${encodeURIComponent(side)}${startTimeParam}${endTimeParam}`
|
|
29785
29787
|
);
|
|
29786
29788
|
}
|
|
29787
29789
|
};
|
|
@@ -29794,8 +29796,8 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29794
29796
|
super(config, _ExtendedAdapter.name, Protocols.EXTENDED);
|
|
29795
29797
|
this.config = config;
|
|
29796
29798
|
const client = new wrapper_default({
|
|
29797
|
-
baseUrl: this.config.
|
|
29798
|
-
apiKey:
|
|
29799
|
+
baseUrl: this.config.extendedBackendWriteUrl,
|
|
29800
|
+
apiKey: "",
|
|
29799
29801
|
timeout: this.config.extendedTimeout,
|
|
29800
29802
|
retries: this.config.extendedRetries
|
|
29801
29803
|
});
|
|
@@ -29806,11 +29808,8 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29806
29808
|
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
29807
29809
|
async getAPY(supportedPosition) {
|
|
29808
29810
|
const side = supportedPosition.isDebt ? "LONG" : "SHORT";
|
|
29809
|
-
const fundingRates = await this.
|
|
29810
|
-
|
|
29811
|
-
side
|
|
29812
|
-
);
|
|
29813
|
-
if (fundingRates.status !== "OK") {
|
|
29811
|
+
const fundingRates = await this.getFundingRates(side);
|
|
29812
|
+
if (!fundingRates.success) {
|
|
29814
29813
|
logger.error("error getting funding rates", fundingRates);
|
|
29815
29814
|
return { apy: 0, type: "base" /* BASE */ };
|
|
29816
29815
|
}
|
|
@@ -29818,10 +29817,26 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29818
29817
|
const apy = Number(fundingRate.f) * 365 * 24;
|
|
29819
29818
|
return { apy, type: "base" /* BASE */ };
|
|
29820
29819
|
}
|
|
29821
|
-
async
|
|
29822
|
-
|
|
29823
|
-
|
|
29820
|
+
async getFundingRates(side, startTime, endTime) {
|
|
29821
|
+
try {
|
|
29822
|
+
const response = await import_axios8.default.get(`${this.config.extendedBackendReadUrl}/fundingRates/${this.config.extendedMarketName}/${side}`, {
|
|
29823
|
+
params: {
|
|
29824
|
+
startTime: startTime ? startTime.toString() : void 0,
|
|
29825
|
+
endTime: endTime ? endTime.toString() : void 0
|
|
29826
|
+
}
|
|
29827
|
+
});
|
|
29828
|
+
if (!response.data.success) {
|
|
29829
|
+
logger.error("error getting funding rates", response.data);
|
|
29830
|
+
return { success: false, data: [] };
|
|
29831
|
+
}
|
|
29832
|
+
logger.info("success getting funding rates", response.data.data);
|
|
29833
|
+
return { success: true, data: response.data.data };
|
|
29834
|
+
} catch (err) {
|
|
29835
|
+
logger.error("error getting funding rates", err);
|
|
29836
|
+
return { success: false, data: [] };
|
|
29824
29837
|
}
|
|
29838
|
+
}
|
|
29839
|
+
async getPosition(supportedPosition) {
|
|
29825
29840
|
const holdings = await this.getExtendedDepositAmount();
|
|
29826
29841
|
if (!holdings) {
|
|
29827
29842
|
throw new Error("No position found");
|
|
@@ -30191,22 +30206,18 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30191
30206
|
}
|
|
30192
30207
|
async getExtendedDepositAmount() {
|
|
30193
30208
|
try {
|
|
30194
|
-
|
|
30195
|
-
|
|
30196
|
-
return void 0;
|
|
30197
|
-
}
|
|
30198
|
-
const result = await this.client.getHoldings();
|
|
30199
|
-
if (!result) {
|
|
30209
|
+
const result = await import_axios8.default.get(`${this.config.extendedBackendReadUrl}/holdings`);
|
|
30210
|
+
if (!result.data) {
|
|
30200
30211
|
logger.error("error getting holdings - API returned null/undefined");
|
|
30201
30212
|
return void 0;
|
|
30202
30213
|
}
|
|
30203
|
-
if (result.
|
|
30214
|
+
if (!result.data.success) {
|
|
30204
30215
|
logger.error(
|
|
30205
30216
|
`error getting holdings - API returned status: ${result.status}`
|
|
30206
30217
|
);
|
|
30207
30218
|
return void 0;
|
|
30208
30219
|
}
|
|
30209
|
-
const holdings = result.data;
|
|
30220
|
+
const holdings = result.data.data;
|
|
30210
30221
|
if (!holdings) {
|
|
30211
30222
|
logger.warn(
|
|
30212
30223
|
"holdings data is null/undefined - treating as zero balance"
|
|
@@ -30244,29 +30255,32 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30244
30255
|
return false;
|
|
30245
30256
|
}
|
|
30246
30257
|
async getAllOpenPositions() {
|
|
30247
|
-
|
|
30248
|
-
|
|
30249
|
-
|
|
30250
|
-
|
|
30251
|
-
|
|
30252
|
-
|
|
30253
|
-
|
|
30254
|
-
|
|
30255
|
-
if (response.data.length === 0) {
|
|
30256
|
-
return [];
|
|
30257
|
-
} else {
|
|
30258
|
-
return response.data;
|
|
30258
|
+
try {
|
|
30259
|
+
const response = await import_axios8.default.get(`${this.config.extendedBackendReadUrl}/positions`);
|
|
30260
|
+
if (response.data.success) {
|
|
30261
|
+
if (response.data.data.length === 0) {
|
|
30262
|
+
return [];
|
|
30263
|
+
} else {
|
|
30264
|
+
return response.data.data;
|
|
30265
|
+
}
|
|
30259
30266
|
}
|
|
30267
|
+
return null;
|
|
30268
|
+
} catch (err) {
|
|
30269
|
+
logger.error("error getting all open positions", err);
|
|
30270
|
+
return null;
|
|
30260
30271
|
}
|
|
30261
|
-
return null;
|
|
30262
30272
|
}
|
|
30263
30273
|
async getOrderHistory(marketName) {
|
|
30264
|
-
|
|
30265
|
-
|
|
30274
|
+
try {
|
|
30275
|
+
const result = await import_axios8.default.get(`${this.config.extendedBackendReadUrl}/marketOrders/${marketName}`);
|
|
30276
|
+
if (!result.data.success) {
|
|
30277
|
+
return null;
|
|
30278
|
+
}
|
|
30279
|
+
return result.data.data;
|
|
30280
|
+
} catch (err) {
|
|
30281
|
+
logger.error("error getting order history", err);
|
|
30266
30282
|
return null;
|
|
30267
30283
|
}
|
|
30268
|
-
const result = await this.client.getOrderHistory(marketName);
|
|
30269
|
-
return result.data;
|
|
30270
30284
|
}
|
|
30271
30285
|
async getOrderStatus(orderId, marketName) {
|
|
30272
30286
|
try {
|
|
@@ -34535,7 +34549,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34535
34549
|
WALLET_ADDRESS,
|
|
34536
34550
|
usdceToken.decimals
|
|
34537
34551
|
);
|
|
34538
|
-
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator walletBalance: ${walletBalance
|
|
34552
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator walletBalance: ${walletBalance}`);
|
|
34539
34553
|
const amountToBeTransferred = amount.minimum(walletBalance);
|
|
34540
34554
|
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator amountToBeTransferred: ${amountToBeTransferred.toNumber()}`);
|
|
34541
34555
|
if (amountToBeTransferred.lessThan(0)) {
|
|
@@ -35555,7 +35569,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35555
35569
|
];
|
|
35556
35570
|
}
|
|
35557
35571
|
};
|
|
35558
|
-
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1,
|
|
35572
|
+
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
|
|
35559
35573
|
vaultSettings.leafAdapters = [];
|
|
35560
35574
|
const wbtcToken = Global.getDefaultTokens().find(
|
|
35561
35575
|
(token) => token.symbol === lstSymbol
|
|
@@ -35590,8 +35604,8 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
35590
35604
|
],
|
|
35591
35605
|
vaultIdExtended,
|
|
35592
35606
|
extendedContract: EXTENDED_CONTRACT,
|
|
35593
|
-
|
|
35594
|
-
|
|
35607
|
+
extendedBackendWriteUrl,
|
|
35608
|
+
extendedBackendReadUrl,
|
|
35595
35609
|
extendedTimeout: 3e4,
|
|
35596
35610
|
extendedRetries: 3,
|
|
35597
35611
|
extendedBaseUrl: "https://api.starknet.extended.exchange",
|
|
@@ -35731,12 +35745,12 @@ var re7UsdcPrimeDevansh = {
|
|
|
35731
35745
|
minimumWBTCDifferenceForAvnuSwap: MINIMUM_WBTC_DIFFERENCE_FOR_AVNU_SWAP,
|
|
35732
35746
|
walletAddress: WALLET_ADDRESS
|
|
35733
35747
|
};
|
|
35734
|
-
var VesuExtendedTestStrategies = (
|
|
35748
|
+
var VesuExtendedTestStrategies = (extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) => {
|
|
35735
35749
|
return [
|
|
35736
|
-
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false,
|
|
35750
|
+
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing)
|
|
35737
35751
|
];
|
|
35738
35752
|
};
|
|
35739
|
-
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST,
|
|
35753
|
+
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
|
|
35740
35754
|
return {
|
|
35741
35755
|
name: `Extended Test ${underlyingSymbol}`,
|
|
35742
35756
|
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
@@ -35744,7 +35758,7 @@ function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses,
|
|
|
35744
35758
|
launchBlock: 0,
|
|
35745
35759
|
type: "Other",
|
|
35746
35760
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === underlyingSymbol)],
|
|
35747
|
-
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime,
|
|
35761
|
+
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing),
|
|
35748
35762
|
risk: {
|
|
35749
35763
|
riskFactor: _riskFactor3,
|
|
35750
35764
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
package/dist/index.mjs
CHANGED
|
@@ -29631,11 +29631,13 @@ var ExtendedWrapper = class {
|
|
|
29631
29631
|
* @param marketName - The name of the market to get funding rates for
|
|
29632
29632
|
* @returns The funding rates for the specified market
|
|
29633
29633
|
*/
|
|
29634
|
-
async getFundingRates(marketName, side) {
|
|
29634
|
+
async getFundingRates(marketName, side, startTime, endTime) {
|
|
29635
|
+
const endTimeParam = endTime !== void 0 ? `&end_time=${endTime}` : "";
|
|
29636
|
+
const startTimeParam = startTime !== void 0 ? `&start_time=${startTime}` : "";
|
|
29635
29637
|
return this.makeRequest(
|
|
29636
29638
|
`/api/v1/markets/funding-rates?market_name=${encodeURIComponent(
|
|
29637
29639
|
marketName
|
|
29638
|
-
)}&side=${encodeURIComponent(side)}`
|
|
29640
|
+
)}&side=${encodeURIComponent(side)}${startTimeParam}${endTimeParam}`
|
|
29639
29641
|
);
|
|
29640
29642
|
}
|
|
29641
29643
|
};
|
|
@@ -29648,8 +29650,8 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29648
29650
|
super(config, _ExtendedAdapter.name, Protocols.EXTENDED);
|
|
29649
29651
|
this.config = config;
|
|
29650
29652
|
const client = new wrapper_default({
|
|
29651
|
-
baseUrl: this.config.
|
|
29652
|
-
apiKey:
|
|
29653
|
+
baseUrl: this.config.extendedBackendWriteUrl,
|
|
29654
|
+
apiKey: "",
|
|
29653
29655
|
timeout: this.config.extendedTimeout,
|
|
29654
29656
|
retries: this.config.extendedRetries
|
|
29655
29657
|
});
|
|
@@ -29660,11 +29662,8 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29660
29662
|
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
29661
29663
|
async getAPY(supportedPosition) {
|
|
29662
29664
|
const side = supportedPosition.isDebt ? "LONG" : "SHORT";
|
|
29663
|
-
const fundingRates = await this.
|
|
29664
|
-
|
|
29665
|
-
side
|
|
29666
|
-
);
|
|
29667
|
-
if (fundingRates.status !== "OK") {
|
|
29665
|
+
const fundingRates = await this.getFundingRates(side);
|
|
29666
|
+
if (!fundingRates.success) {
|
|
29668
29667
|
logger.error("error getting funding rates", fundingRates);
|
|
29669
29668
|
return { apy: 0, type: "base" /* BASE */ };
|
|
29670
29669
|
}
|
|
@@ -29672,10 +29671,26 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29672
29671
|
const apy = Number(fundingRate.f) * 365 * 24;
|
|
29673
29672
|
return { apy, type: "base" /* BASE */ };
|
|
29674
29673
|
}
|
|
29675
|
-
async
|
|
29676
|
-
|
|
29677
|
-
|
|
29674
|
+
async getFundingRates(side, startTime, endTime) {
|
|
29675
|
+
try {
|
|
29676
|
+
const response = await axios8.get(`${this.config.extendedBackendReadUrl}/fundingRates/${this.config.extendedMarketName}/${side}`, {
|
|
29677
|
+
params: {
|
|
29678
|
+
startTime: startTime ? startTime.toString() : void 0,
|
|
29679
|
+
endTime: endTime ? endTime.toString() : void 0
|
|
29680
|
+
}
|
|
29681
|
+
});
|
|
29682
|
+
if (!response.data.success) {
|
|
29683
|
+
logger.error("error getting funding rates", response.data);
|
|
29684
|
+
return { success: false, data: [] };
|
|
29685
|
+
}
|
|
29686
|
+
logger.info("success getting funding rates", response.data.data);
|
|
29687
|
+
return { success: true, data: response.data.data };
|
|
29688
|
+
} catch (err) {
|
|
29689
|
+
logger.error("error getting funding rates", err);
|
|
29690
|
+
return { success: false, data: [] };
|
|
29678
29691
|
}
|
|
29692
|
+
}
|
|
29693
|
+
async getPosition(supportedPosition) {
|
|
29679
29694
|
const holdings = await this.getExtendedDepositAmount();
|
|
29680
29695
|
if (!holdings) {
|
|
29681
29696
|
throw new Error("No position found");
|
|
@@ -30045,22 +30060,18 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30045
30060
|
}
|
|
30046
30061
|
async getExtendedDepositAmount() {
|
|
30047
30062
|
try {
|
|
30048
|
-
|
|
30049
|
-
|
|
30050
|
-
return void 0;
|
|
30051
|
-
}
|
|
30052
|
-
const result = await this.client.getHoldings();
|
|
30053
|
-
if (!result) {
|
|
30063
|
+
const result = await axios8.get(`${this.config.extendedBackendReadUrl}/holdings`);
|
|
30064
|
+
if (!result.data) {
|
|
30054
30065
|
logger.error("error getting holdings - API returned null/undefined");
|
|
30055
30066
|
return void 0;
|
|
30056
30067
|
}
|
|
30057
|
-
if (result.
|
|
30068
|
+
if (!result.data.success) {
|
|
30058
30069
|
logger.error(
|
|
30059
30070
|
`error getting holdings - API returned status: ${result.status}`
|
|
30060
30071
|
);
|
|
30061
30072
|
return void 0;
|
|
30062
30073
|
}
|
|
30063
|
-
const holdings = result.data;
|
|
30074
|
+
const holdings = result.data.data;
|
|
30064
30075
|
if (!holdings) {
|
|
30065
30076
|
logger.warn(
|
|
30066
30077
|
"holdings data is null/undefined - treating as zero balance"
|
|
@@ -30098,29 +30109,32 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30098
30109
|
return false;
|
|
30099
30110
|
}
|
|
30100
30111
|
async getAllOpenPositions() {
|
|
30101
|
-
|
|
30102
|
-
|
|
30103
|
-
|
|
30104
|
-
|
|
30105
|
-
|
|
30106
|
-
|
|
30107
|
-
|
|
30108
|
-
|
|
30109
|
-
if (response.data.length === 0) {
|
|
30110
|
-
return [];
|
|
30111
|
-
} else {
|
|
30112
|
-
return response.data;
|
|
30112
|
+
try {
|
|
30113
|
+
const response = await axios8.get(`${this.config.extendedBackendReadUrl}/positions`);
|
|
30114
|
+
if (response.data.success) {
|
|
30115
|
+
if (response.data.data.length === 0) {
|
|
30116
|
+
return [];
|
|
30117
|
+
} else {
|
|
30118
|
+
return response.data.data;
|
|
30119
|
+
}
|
|
30113
30120
|
}
|
|
30121
|
+
return null;
|
|
30122
|
+
} catch (err) {
|
|
30123
|
+
logger.error("error getting all open positions", err);
|
|
30124
|
+
return null;
|
|
30114
30125
|
}
|
|
30115
|
-
return null;
|
|
30116
30126
|
}
|
|
30117
30127
|
async getOrderHistory(marketName) {
|
|
30118
|
-
|
|
30119
|
-
|
|
30128
|
+
try {
|
|
30129
|
+
const result = await axios8.get(`${this.config.extendedBackendReadUrl}/marketOrders/${marketName}`);
|
|
30130
|
+
if (!result.data.success) {
|
|
30131
|
+
return null;
|
|
30132
|
+
}
|
|
30133
|
+
return result.data.data;
|
|
30134
|
+
} catch (err) {
|
|
30135
|
+
logger.error("error getting order history", err);
|
|
30120
30136
|
return null;
|
|
30121
30137
|
}
|
|
30122
|
-
const result = await this.client.getOrderHistory(marketName);
|
|
30123
|
-
return result.data;
|
|
30124
30138
|
}
|
|
30125
30139
|
async getOrderStatus(orderId, marketName) {
|
|
30126
30140
|
try {
|
|
@@ -34389,7 +34403,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34389
34403
|
WALLET_ADDRESS,
|
|
34390
34404
|
usdceToken.decimals
|
|
34391
34405
|
);
|
|
34392
|
-
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator walletBalance: ${walletBalance
|
|
34406
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator walletBalance: ${walletBalance}`);
|
|
34393
34407
|
const amountToBeTransferred = amount.minimum(walletBalance);
|
|
34394
34408
|
logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssetsToVaultAllocator amountToBeTransferred: ${amountToBeTransferred.toNumber()}`);
|
|
34395
34409
|
if (amountToBeTransferred.lessThan(0)) {
|
|
@@ -35409,7 +35423,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35409
35423
|
];
|
|
35410
35424
|
}
|
|
35411
35425
|
};
|
|
35412
|
-
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1,
|
|
35426
|
+
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
|
|
35413
35427
|
vaultSettings.leafAdapters = [];
|
|
35414
35428
|
const wbtcToken = Global.getDefaultTokens().find(
|
|
35415
35429
|
(token) => token.symbol === lstSymbol
|
|
@@ -35444,8 +35458,8 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
35444
35458
|
],
|
|
35445
35459
|
vaultIdExtended,
|
|
35446
35460
|
extendedContract: EXTENDED_CONTRACT,
|
|
35447
|
-
|
|
35448
|
-
|
|
35461
|
+
extendedBackendWriteUrl,
|
|
35462
|
+
extendedBackendReadUrl,
|
|
35449
35463
|
extendedTimeout: 3e4,
|
|
35450
35464
|
extendedRetries: 3,
|
|
35451
35465
|
extendedBaseUrl: "https://api.starknet.extended.exchange",
|
|
@@ -35585,12 +35599,12 @@ var re7UsdcPrimeDevansh = {
|
|
|
35585
35599
|
minimumWBTCDifferenceForAvnuSwap: MINIMUM_WBTC_DIFFERENCE_FOR_AVNU_SWAP,
|
|
35586
35600
|
walletAddress: WALLET_ADDRESS
|
|
35587
35601
|
};
|
|
35588
|
-
var VesuExtendedTestStrategies = (
|
|
35602
|
+
var VesuExtendedTestStrategies = (extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) => {
|
|
35589
35603
|
return [
|
|
35590
|
-
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false,
|
|
35604
|
+
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing)
|
|
35591
35605
|
];
|
|
35592
35606
|
};
|
|
35593
|
-
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST,
|
|
35607
|
+
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
|
|
35594
35608
|
return {
|
|
35595
35609
|
name: `Extended Test ${underlyingSymbol}`,
|
|
35596
35610
|
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
@@ -35598,7 +35612,7 @@ function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses,
|
|
|
35598
35612
|
launchBlock: 0,
|
|
35599
35613
|
type: "Other",
|
|
35600
35614
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === underlyingSymbol)],
|
|
35601
|
-
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime,
|
|
35615
|
+
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendReadUrl, extendedBackendWriteUrl, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing),
|
|
35602
35616
|
risk: {
|
|
35603
35617
|
riskFactor: _riskFactor3,
|
|
35604
35618
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|