defi-dash-sdk 0.1.3 → 0.1.4
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/LICENSE +7 -0
- package/README.md +199 -97
- package/dist/__tests__/deleverageEstimate.unit.test.d.ts +10 -0
- package/dist/__tests__/deleverageEstimate.unit.test.d.ts.map +1 -0
- package/dist/__tests__/deleverageEstimate.unit.test.js +116 -0
- package/dist/__tests__/deleverageEstimate.unit.test.js.map +1 -0
- package/dist/__tests__/findBestLeverageRoute.test.d.ts +12 -0
- package/dist/__tests__/findBestLeverageRoute.test.d.ts.map +1 -0
- package/dist/__tests__/findBestLeverageRoute.test.js +177 -0
- package/dist/__tests__/findBestLeverageRoute.test.js.map +1 -0
- package/dist/__tests__/getAssetApy.test.d.ts +2 -0
- package/dist/__tests__/getAssetApy.test.d.ts.map +1 -0
- package/dist/__tests__/getAssetApy.test.js +133 -0
- package/dist/__tests__/getAssetApy.test.js.map +1 -0
- package/dist/__tests__/getAssetRiskParams.test.d.ts +11 -0
- package/dist/__tests__/getAssetRiskParams.test.d.ts.map +1 -0
- package/dist/__tests__/getAssetRiskParams.test.js +183 -0
- package/dist/__tests__/getAssetRiskParams.test.js.map +1 -0
- package/dist/__tests__/internal.getAssetApy.test.d.ts +2 -0
- package/dist/__tests__/internal.getAssetApy.test.d.ts.map +1 -0
- package/dist/__tests__/internal.getAssetApy.test.js +140 -0
- package/dist/__tests__/internal.getAssetApy.test.js.map +1 -0
- package/dist/__tests__/internal.getAssetRiskParams.test.d.ts +22 -0
- package/dist/__tests__/internal.getAssetRiskParams.test.d.ts.map +1 -0
- package/dist/__tests__/internal.getAssetRiskParams.test.js +194 -0
- package/dist/__tests__/internal.getAssetRiskParams.test.js.map +1 -0
- package/dist/__tests__/internal.getPosition.test.d.ts +22 -0
- package/dist/__tests__/internal.getPosition.test.d.ts.map +1 -0
- package/dist/__tests__/internal.getPosition.test.js +153 -0
- package/dist/__tests__/internal.getPosition.test.js.map +1 -0
- package/dist/__tests__/leveragePreview.unit.test.d.ts +10 -0
- package/dist/__tests__/leveragePreview.unit.test.d.ts.map +1 -0
- package/dist/__tests__/leveragePreview.unit.test.js +168 -0
- package/dist/__tests__/leveragePreview.unit.test.js.map +1 -0
- package/dist/__tests__/leverageRoute.unit.test.d.ts +10 -0
- package/dist/__tests__/leverageRoute.unit.test.d.ts.map +1 -0
- package/dist/__tests__/leverageRoute.unit.test.js +159 -0
- package/dist/__tests__/leverageRoute.unit.test.js.map +1 -0
- package/dist/__tests__/previewLeverage.test.d.ts +13 -0
- package/dist/__tests__/previewLeverage.test.d.ts.map +1 -0
- package/dist/__tests__/previewLeverage.test.js +217 -0
- package/dist/__tests__/previewLeverage.test.js.map +1 -0
- package/dist/__tests__/sdk.bestRoute.test.d.ts +22 -0
- package/dist/__tests__/sdk.bestRoute.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.bestRoute.test.js +186 -0
- package/dist/__tests__/sdk.bestRoute.test.js.map +1 -0
- package/dist/__tests__/sdk.bestRoute.unit.test.d.ts +16 -0
- package/dist/__tests__/sdk.bestRoute.unit.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.bestRoute.unit.test.js +165 -0
- package/dist/__tests__/sdk.bestRoute.unit.test.js.map +1 -0
- package/dist/__tests__/sdk.deleverage.test.d.ts +21 -0
- package/dist/__tests__/sdk.deleverage.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.deleverage.test.js +130 -0
- package/dist/__tests__/sdk.deleverage.test.js.map +1 -0
- package/dist/__tests__/sdk.deleverage.unit.test.d.ts +21 -0
- package/dist/__tests__/sdk.deleverage.unit.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.deleverage.unit.test.js +141 -0
- package/dist/__tests__/sdk.deleverage.unit.test.js.map +1 -0
- package/dist/__tests__/sdk.leverage.test.d.ts +19 -0
- package/dist/__tests__/sdk.leverage.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.leverage.test.js +188 -0
- package/dist/__tests__/sdk.leverage.test.js.map +1 -0
- package/dist/__tests__/sdk.portfolio.test.d.ts +17 -0
- package/dist/__tests__/sdk.portfolio.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.portfolio.test.js +162 -0
- package/dist/__tests__/sdk.portfolio.test.js.map +1 -0
- package/dist/__tests__/sdk.position.test.d.ts +16 -0
- package/dist/__tests__/sdk.position.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.position.test.js +193 -0
- package/dist/__tests__/sdk.position.test.js.map +1 -0
- package/dist/__tests__/sdk.preview.test.d.ts +23 -0
- package/dist/__tests__/sdk.preview.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.preview.test.js +226 -0
- package/dist/__tests__/sdk.preview.test.js.map +1 -0
- package/dist/__tests__/sdk.preview.unit.test.d.ts +18 -0
- package/dist/__tests__/sdk.preview.unit.test.d.ts.map +1 -0
- package/dist/__tests__/sdk.preview.unit.test.js +175 -0
- package/dist/__tests__/sdk.preview.unit.test.js.map +1 -0
- package/dist/__tests__/utils.normalizeCoinType.test.d.ts +7 -0
- package/dist/__tests__/utils.normalizeCoinType.test.d.ts.map +1 -0
- package/dist/__tests__/utils.normalizeCoinType.test.js +42 -0
- package/dist/__tests__/utils.normalizeCoinType.test.js.map +1 -0
- package/dist/index.d.ts +19 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -40
- package/dist/index.js.map +1 -1
- package/dist/protocols/base-adapter.d.ts +42 -75
- package/dist/protocols/base-adapter.d.ts.map +1 -1
- package/dist/protocols/base-adapter.js +34 -77
- package/dist/protocols/base-adapter.js.map +1 -1
- package/dist/protocols/navi/adapter.d.ts +22 -2
- package/dist/protocols/navi/adapter.d.ts.map +1 -1
- package/dist/protocols/navi/adapter.js +145 -11
- package/dist/protocols/navi/adapter.js.map +1 -1
- package/dist/protocols/scallop/adapter.d.ts +26 -6
- package/dist/protocols/scallop/adapter.d.ts.map +1 -1
- package/dist/protocols/scallop/adapter.js +206 -43
- package/dist/protocols/scallop/adapter.js.map +1 -1
- package/dist/protocols/scallop/flash-loan.d.ts +18 -3
- package/dist/protocols/scallop/flash-loan.d.ts.map +1 -1
- package/dist/protocols/scallop/flash-loan.js +79 -20
- package/dist/protocols/scallop/flash-loan.js.map +1 -1
- package/dist/protocols/scallop/types.d.ts.map +1 -1
- package/dist/protocols/scallop/types.js +4 -1
- package/dist/protocols/scallop/types.js.map +1 -1
- package/dist/protocols/suilend/adapter.d.ts +19 -1
- package/dist/protocols/suilend/adapter.d.ts.map +1 -1
- package/dist/protocols/suilend/adapter.js +196 -51
- package/dist/protocols/suilend/adapter.js.map +1 -1
- package/dist/sdk.d.ts +107 -148
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +171 -523
- package/dist/sdk.js.map +1 -1
- package/dist/strategies/common.d.ts +42 -0
- package/dist/strategies/common.d.ts.map +1 -0
- package/dist/strategies/common.js +81 -0
- package/dist/strategies/common.js.map +1 -0
- package/dist/strategies/deleverage.d.ts.map +1 -1
- package/dist/strategies/deleverage.js +44 -62
- package/dist/strategies/deleverage.js.map +1 -1
- package/dist/strategies/index.d.ts +9 -1
- package/dist/strategies/index.d.ts.map +1 -1
- package/dist/strategies/index.js +11 -2
- package/dist/strategies/index.js.map +1 -1
- package/dist/strategies/leverage-preview.d.ts +27 -0
- package/dist/strategies/leverage-preview.d.ts.map +1 -0
- package/dist/strategies/leverage-preview.js +120 -0
- package/dist/strategies/leverage-preview.js.map +1 -0
- package/dist/strategies/leverage-route.d.ts +29 -0
- package/dist/strategies/leverage-route.d.ts.map +1 -0
- package/dist/strategies/leverage-route.js +112 -0
- package/dist/strategies/leverage-route.js.map +1 -0
- package/dist/strategies/leverage.d.ts +4 -44
- package/dist/strategies/leverage.d.ts.map +1 -1
- package/dist/strategies/leverage.js +43 -112
- package/dist/strategies/leverage.js.map +1 -1
- package/dist/strategies/scallop-leverage.d.ts +34 -0
- package/dist/strategies/scallop-leverage.d.ts.map +1 -0
- package/dist/strategies/scallop-leverage.js +143 -0
- package/dist/strategies/scallop-leverage.js.map +1 -0
- package/dist/types/config.d.ts +0 -7
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/constants.d.ts +8 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/constants.js +9 -1
- package/dist/types/constants.js.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/position.d.ts +7 -3
- package/dist/types/position.d.ts.map +1 -1
- package/dist/types/protocol.d.ts +101 -0
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/strategy.d.ts +82 -38
- package/dist/types/strategy.d.ts.map +1 -1
- package/dist/utils/calculations.d.ts +10 -137
- package/dist/utils/calculations.d.ts.map +1 -1
- package/dist/utils/calculations.js +11 -162
- package/dist/utils/calculations.js.map +1 -1
- package/dist/utils/coin.d.ts +16 -7
- package/dist/utils/coin.d.ts.map +1 -1
- package/dist/utils/coin.js +32 -25
- package/dist/utils/coin.js.map +1 -1
- package/dist/utils/errors.d.ts +0 -18
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +2 -40
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/execution.d.ts +38 -0
- package/dist/utils/execution.d.ts.map +1 -0
- package/dist/utils/execution.js +110 -0
- package/dist/utils/execution.js.map +1 -0
- package/dist/utils/gas.d.ts +0 -37
- package/dist/utils/gas.d.ts.map +1 -1
- package/dist/utils/gas.js +2 -60
- package/dist/utils/gas.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +15 -45
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scallop-leverage.d.ts","sourceRoot":"","sources":["../../src/strategies/scallop-leverage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAiB,MAAM,oBAAoB,CAAC;AAc3D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,mGAAmG;IACnG,EAAE,EAAE,GAAG,CAAC;IACR,+DAA+D;IAC/D,OAAO,EAAE,GAAG,CAAC;CACd;AAID;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,0BAA0B,EAClC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,0BAA0B,CAAC,CAoKrC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DeFi Dash SDK - Scallop Leverage Transaction Builder
|
|
4
|
+
*
|
|
5
|
+
* Builds leverage transactions using the native Scallop SDK builder,
|
|
6
|
+
* which handles oracle price updates via updateAssetPricesQuick.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.buildScallopLeverageTransaction = buildScallopLeverageTransaction;
|
|
10
|
+
const sdk_ts_1 = require("@7kprotocol/sdk-ts");
|
|
11
|
+
const sui_scallop_sdk_1 = require("@scallop-io/sui-scallop-sdk");
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
const utils_1 = require("../utils");
|
|
14
|
+
const flash_loan_1 = require("../protocols/scallop/flash-loan");
|
|
15
|
+
const common_1 = require("./common");
|
|
16
|
+
// ── Main function ────────────────────────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Build a Scallop leverage transaction using the native Scallop SDK builder.
|
|
19
|
+
*
|
|
20
|
+
* Returns the built txBlock and builder so the caller can handle
|
|
21
|
+
* dry-run / execution logic.
|
|
22
|
+
*/
|
|
23
|
+
async function buildScallopLeverageTransaction(params, deps) {
|
|
24
|
+
const { coinType, multiplier, userAddress, secretKey } = params;
|
|
25
|
+
const { suiClient, swapClient } = deps;
|
|
26
|
+
const decimals = (0, utils_1.getDecimals)(coinType, 9);
|
|
27
|
+
const symbol = coinType.split("::").pop()?.toUpperCase() || "SUI";
|
|
28
|
+
const isSui = coinType.endsWith("::sui::SUI");
|
|
29
|
+
const coinName = (0, common_1.getScallopCoinName)(coinType);
|
|
30
|
+
// ── Deposit amount ─────────────────────────────────────────────────────────
|
|
31
|
+
let depositAmountStr;
|
|
32
|
+
if (params.depositValueUsd) {
|
|
33
|
+
const price = await (0, sdk_ts_1.getTokenPrice)(coinType);
|
|
34
|
+
depositAmountStr = (params.depositValueUsd / price).toFixed(decimals);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
depositAmountStr = params.depositAmount;
|
|
38
|
+
}
|
|
39
|
+
const depositAmountRaw = (0, utils_1.parseUnits)(depositAmountStr, decimals);
|
|
40
|
+
const depositAmountHuman = parseFloat(depositAmountStr);
|
|
41
|
+
// ── Leverage amounts ───────────────────────────────────────────────────────
|
|
42
|
+
const depositPrice = await (0, sdk_ts_1.getTokenPrice)(coinType);
|
|
43
|
+
const initialEquityUsd = depositAmountHuman * depositPrice;
|
|
44
|
+
const { flashLoanUsdc, borrowAmount } = (0, common_1.computeLeverageAmounts)(initialEquityUsd, multiplier, flash_loan_1.ScallopFlashLoanClient.calculateFee, common_1.BORROW_FEE_BUFFER);
|
|
45
|
+
// ── Initialize Scallop SDK ─────────────────────────────────────────────────
|
|
46
|
+
const scallop = new sui_scallop_sdk_1.Scallop({
|
|
47
|
+
secretKey,
|
|
48
|
+
networkType: "mainnet",
|
|
49
|
+
});
|
|
50
|
+
await scallop.init();
|
|
51
|
+
const builder = await scallop.createScallopBuilder();
|
|
52
|
+
const client = await scallop.createScallopClient();
|
|
53
|
+
const tx = builder.createTxBlock();
|
|
54
|
+
tx.setSender(userAddress);
|
|
55
|
+
// ── Check existing obligation ──────────────────────────────────────────────
|
|
56
|
+
const existingObligations = await client.getObligations();
|
|
57
|
+
const hasExistingObligation = existingObligations.length > 0;
|
|
58
|
+
let existingObligationId = null;
|
|
59
|
+
let existingObligationKeyId = null;
|
|
60
|
+
let isCurrentlyLocked = false;
|
|
61
|
+
if (hasExistingObligation) {
|
|
62
|
+
existingObligationId = existingObligations[0].id;
|
|
63
|
+
existingObligationKeyId = existingObligations[0].keyId;
|
|
64
|
+
isCurrentlyLocked = existingObligations[0].locked;
|
|
65
|
+
}
|
|
66
|
+
// ── Swap quote ─────────────────────────────────────────────────────────────
|
|
67
|
+
const { quote: bestQuote } = await (0, common_1.findBestSwapQuote)(swapClient, flashLoanUsdc.toString(), types_1.COIN_TYPES.USDC, coinType, `USDC \u2192 ${symbol}`);
|
|
68
|
+
// ── Build PTB ──────────────────────────────────────────────────────────────
|
|
69
|
+
// Step 1: Flash loan USDC
|
|
70
|
+
const [loanCoin, receipt] = await tx.borrowFlashLoan(Number(flashLoanUsdc), "usdc");
|
|
71
|
+
// Step 2: Swap USDC → deposit asset
|
|
72
|
+
const swappedAsset = await swapClient.swap({
|
|
73
|
+
quote: bestQuote,
|
|
74
|
+
signer: userAddress,
|
|
75
|
+
coinIn: loanCoin,
|
|
76
|
+
tx: tx.txBlock,
|
|
77
|
+
}, 100);
|
|
78
|
+
// Step 3: Prepare deposit coin
|
|
79
|
+
let depositCoin;
|
|
80
|
+
if (isSui) {
|
|
81
|
+
const [userDeposit] = tx.splitSUIFromGas([Number(depositAmountRaw)]);
|
|
82
|
+
tx.mergeCoins(userDeposit, [swappedAsset]);
|
|
83
|
+
depositCoin = userDeposit;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const userCoins = await suiClient.getCoins({
|
|
87
|
+
owner: userAddress,
|
|
88
|
+
coinType,
|
|
89
|
+
});
|
|
90
|
+
if (userCoins.data.length === 0) {
|
|
91
|
+
throw new Error(`No ${symbol} coins in wallet`);
|
|
92
|
+
}
|
|
93
|
+
const primaryCoin = tx.txBlock.object(userCoins.data[0].coinObjectId);
|
|
94
|
+
if (userCoins.data.length > 1) {
|
|
95
|
+
const otherCoins = userCoins.data
|
|
96
|
+
.slice(1)
|
|
97
|
+
.map((c) => tx.txBlock.object(c.coinObjectId));
|
|
98
|
+
tx.mergeCoins(primaryCoin, otherCoins);
|
|
99
|
+
}
|
|
100
|
+
const [userContribution] = tx.splitCoins(primaryCoin, [
|
|
101
|
+
Number(depositAmountRaw),
|
|
102
|
+
]);
|
|
103
|
+
tx.mergeCoins(userContribution, [swappedAsset]);
|
|
104
|
+
depositCoin = userContribution;
|
|
105
|
+
}
|
|
106
|
+
// Step 4: Handle obligation
|
|
107
|
+
let obligation;
|
|
108
|
+
let obligationKey;
|
|
109
|
+
let obligationHotPotato;
|
|
110
|
+
let isNewObligation = false;
|
|
111
|
+
if (hasExistingObligation &&
|
|
112
|
+
existingObligationId &&
|
|
113
|
+
existingObligationKeyId) {
|
|
114
|
+
obligation = tx.txBlock.object(existingObligationId);
|
|
115
|
+
obligationKey = tx.txBlock.object(existingObligationKeyId);
|
|
116
|
+
if (isCurrentlyLocked) {
|
|
117
|
+
tx.unstakeObligation(obligation, obligationKey);
|
|
118
|
+
}
|
|
119
|
+
tx.addCollateral(obligation, depositCoin, coinName);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
[obligation, obligationKey, obligationHotPotato] = tx.openObligation();
|
|
123
|
+
tx.addCollateral(obligation, depositCoin, coinName);
|
|
124
|
+
isNewObligation = true;
|
|
125
|
+
}
|
|
126
|
+
// Step 5: Update oracles (critical for Scallop!)
|
|
127
|
+
await tx.updateAssetPricesQuick([coinName, "usdc"]);
|
|
128
|
+
// Step 6: Borrow USDC
|
|
129
|
+
const borrowedUsdc = tx.borrow(obligation, obligationKey, Number(borrowAmount), "usdc");
|
|
130
|
+
// Step 7: Repay flash loan
|
|
131
|
+
await tx.repayFlashLoan(borrowedUsdc, receipt, "usdc");
|
|
132
|
+
// Step 8: Finalize
|
|
133
|
+
if (isNewObligation) {
|
|
134
|
+
tx.returnObligation(obligation, obligationHotPotato);
|
|
135
|
+
tx.stakeObligation(obligation, obligationKey);
|
|
136
|
+
tx.transferObjects([obligationKey], userAddress);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
tx.stakeObligation(obligation, obligationKey);
|
|
140
|
+
}
|
|
141
|
+
return { tx, builder };
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=scallop-leverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scallop-leverage.js","sourceRoot":"","sources":["../../src/strategies/scallop-leverage.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -12,13 +12,6 @@ export interface SDKOptions {
|
|
|
12
12
|
network?: "mainnet" | "testnet";
|
|
13
13
|
/** 7k Protocol partner address (optional) */
|
|
14
14
|
swapPartner?: string;
|
|
15
|
-
/**
|
|
16
|
-
* Secret key for Scallop SDK (optional)
|
|
17
|
-
*
|
|
18
|
-
* Required for Scallop leverage/deleverage operations.
|
|
19
|
-
* Can be in bech32 format (suiprivkey...) or base64.
|
|
20
|
-
*/
|
|
21
|
-
secretKey?: string;
|
|
22
15
|
}
|
|
23
16
|
/**
|
|
24
17
|
* Browser-compatible Leverage Parameters (no dryRun - handled externally)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAEhC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAEhC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,eAAe,CAAC;CAC3B"}
|
|
@@ -95,4 +95,12 @@ export declare const SUI_COIN_TYPE: "0x00000000000000000000000000000000000000000
|
|
|
95
95
|
* Used for DEX aggregation swaps. Partners earn referral fees.
|
|
96
96
|
*/
|
|
97
97
|
export declare const DEFAULT_7K_PARTNER = "0x0cffa6f207ef1f08ff2b55d3a0ec79ec2baec55ce0eb3cfc56a48a452ba65427";
|
|
98
|
+
/**
|
|
99
|
+
* Safety buffer subtracted from the minimum maxMultiplier across protocols
|
|
100
|
+
* when calculating the "safe" comparison multiplier for APY ranking.
|
|
101
|
+
*
|
|
102
|
+
* Example: if min maxMultiplier across protocols is 2.5x,
|
|
103
|
+
* the safe multiplier used for APY comparison = 2.5 - 0.5 = 2.0x
|
|
104
|
+
*/
|
|
105
|
+
export declare const LEVERAGE_MULTIPLIER_BUFFER = 0.5;
|
|
98
106
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;;;;;;;;;CAgBb,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAShD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAI1C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAIxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,kFAAkB,CAAC;AAC9C,eAAO,MAAM,aAAa,gFAAiB,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,uEACuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;;;;;;;;;CAgBb,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAShD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAI1C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAIxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,kFAAkB,CAAC;AAC9C,eAAO,MAAM,aAAa,gFAAiB,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,uEACuC,CAAC;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC"}
|
package/dist/types/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_7K_PARTNER = exports.SUI_COIN_TYPE = exports.USDC_COIN_TYPE = exports.SUPPORTED_COIN_TYPES = exports.UNSUPPORTED_COIN_TYPES = exports.COIN_DECIMALS = exports.COIN_TYPES = void 0;
|
|
3
|
+
exports.LEVERAGE_MULTIPLIER_BUFFER = exports.DEFAULT_7K_PARTNER = exports.SUI_COIN_TYPE = exports.USDC_COIN_TYPE = exports.SUPPORTED_COIN_TYPES = exports.UNSUPPORTED_COIN_TYPES = exports.COIN_DECIMALS = exports.COIN_TYPES = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Popular coin types for quick reference
|
|
6
6
|
*
|
|
@@ -120,4 +120,12 @@ exports.SUI_COIN_TYPE = exports.COIN_TYPES.SUI;
|
|
|
120
120
|
* Used for DEX aggregation swaps. Partners earn referral fees.
|
|
121
121
|
*/
|
|
122
122
|
exports.DEFAULT_7K_PARTNER = '0x0cffa6f207ef1f08ff2b55d3a0ec79ec2baec55ce0eb3cfc56a48a452ba65427';
|
|
123
|
+
/**
|
|
124
|
+
* Safety buffer subtracted from the minimum maxMultiplier across protocols
|
|
125
|
+
* when calculating the "safe" comparison multiplier for APY ranking.
|
|
126
|
+
*
|
|
127
|
+
* Example: if min maxMultiplier across protocols is 2.5x,
|
|
128
|
+
* the safe multiplier used for APY comparison = 2.5 - 0.5 = 2.0x
|
|
129
|
+
*/
|
|
130
|
+
exports.LEVERAGE_MULTIPLIER_BUFFER = 0.5;
|
|
123
131
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM;IACN,GAAG,EAAE,8EAA8E;IACnF,eAAe;IACf,IAAI,EAAE,gFAAgF;IACtF,IAAI,EAAE,gFAAgF;IACtF,WAAW;IACX,GAAG,EAAE,8EAA8E;IACnF,MAAM;IACN,IAAI,EAAE,gFAAgF;IACtF,IAAI,EAAE,gFAAgF;IACtF,OAAO;IACP,KAAK,EACH,gFAAgF;IAClF,KAAK,EACH,gFAAgF;CAC1E,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACU,QAAA,aAAa,GAA2B;IACnD,CAAC,kBAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACnB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACnB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IACrB,CAAC,kBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACU,QAAA,sBAAsB,GAAa;IAC9C,kBAAU,CAAC,IAAI;IACf,kBAAU,CAAC,KAAK;IAChB,6EAA6E;CAC9E,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,oBAAoB,GAAa;IAC5C,kBAAU,CAAC,GAAG;IACd,kBAAU,CAAC,IAAI;IACf,kBAAU,CAAC,IAAI;CAChB,CAAC;AAEF;;;;GAIG;AACU,QAAA,cAAc,GAAG,kBAAU,CAAC,IAAI,CAAC;AACjC,QAAA,aAAa,GAAG,kBAAU,CAAC,GAAG,CAAC;AAE5C;;;;GAIG;AACU,QAAA,kBAAkB,GAC7B,oEAAoE,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM;IACN,GAAG,EAAE,8EAA8E;IACnF,eAAe;IACf,IAAI,EAAE,gFAAgF;IACtF,IAAI,EAAE,gFAAgF;IACtF,WAAW;IACX,GAAG,EAAE,8EAA8E;IACnF,MAAM;IACN,IAAI,EAAE,gFAAgF;IACtF,IAAI,EAAE,gFAAgF;IACtF,OAAO;IACP,KAAK,EACH,gFAAgF;IAClF,KAAK,EACH,gFAAgF;CAC1E,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACU,QAAA,aAAa,GAA2B;IACnD,CAAC,kBAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACnB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACnB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,kBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IACrB,CAAC,kBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACU,QAAA,sBAAsB,GAAa;IAC9C,kBAAU,CAAC,IAAI;IACf,kBAAU,CAAC,KAAK;IAChB,6EAA6E;CAC9E,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,oBAAoB,GAAa;IAC5C,kBAAU,CAAC,GAAG;IACd,kBAAU,CAAC,IAAI;IACf,kBAAU,CAAC,IAAI;CAChB,CAAC;AAEF;;;;GAIG;AACU,QAAA,cAAc,GAAG,kBAAU,CAAC,IAAI,CAAC;AACjC,QAAA,aAAa,GAAG,kBAAU,CAAC,GAAG,CAAC;AAE5C;;;;GAIG;AACU,QAAA,kBAAkB,GAC7B,oEAAoE,CAAC;AAEvE;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,GAAG,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { LendingProtocol, type PositionSide } from "./common";
|
|
7
7
|
export type { AssetPosition, PositionInfo, Position, AccountPortfolio, MarketAsset, } from "./position";
|
|
8
|
-
export type {
|
|
8
|
+
export type { StrategyResult, LeveragePreview, FindBestRouteParams, LeverageRoute, LeverageRouteResult, } from "./strategy";
|
|
9
9
|
export type { SDKOptions, BrowserLeverageParams, BrowserDeleverageParams, } from "./config";
|
|
10
|
-
export { USDC_COIN_TYPE, SUI_COIN_TYPE, DEFAULT_7K_PARTNER, COIN_TYPES, COIN_DECIMALS, UNSUPPORTED_COIN_TYPES, SUPPORTED_COIN_TYPES, } from "./constants";
|
|
11
|
-
export type { ILendingProtocol, MarketReserve } from "./protocol";
|
|
10
|
+
export { USDC_COIN_TYPE, SUI_COIN_TYPE, DEFAULT_7K_PARTNER, COIN_TYPES, COIN_DECIMALS, UNSUPPORTED_COIN_TYPES, SUPPORTED_COIN_TYPES, LEVERAGE_MULTIPLIER_BUFFER, } from "./constants";
|
|
11
|
+
export type { ILendingProtocol, IScallopProtocol, MarketReserve, AssetRiskParams, AssetApy, } from "./protocol";
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAG9D,YAAY,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAG9D,YAAY,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,UAAU,EACV,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,QAAQ,GACT,MAAM,YAAY,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Central export for all types, interfaces, enums, and constants
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.SUPPORTED_COIN_TYPES = exports.UNSUPPORTED_COIN_TYPES = exports.COIN_DECIMALS = exports.COIN_TYPES = exports.DEFAULT_7K_PARTNER = exports.SUI_COIN_TYPE = exports.USDC_COIN_TYPE = exports.LendingProtocol = void 0;
|
|
8
|
+
exports.LEVERAGE_MULTIPLIER_BUFFER = exports.SUPPORTED_COIN_TYPES = exports.UNSUPPORTED_COIN_TYPES = exports.COIN_DECIMALS = exports.COIN_TYPES = exports.DEFAULT_7K_PARTNER = exports.SUI_COIN_TYPE = exports.USDC_COIN_TYPE = exports.LendingProtocol = void 0;
|
|
9
9
|
// Enums and common types
|
|
10
10
|
var common_1 = require("./common");
|
|
11
11
|
Object.defineProperty(exports, "LendingProtocol", { enumerable: true, get: function () { return common_1.LendingProtocol; } });
|
|
@@ -18,4 +18,5 @@ Object.defineProperty(exports, "COIN_TYPES", { enumerable: true, get: function (
|
|
|
18
18
|
Object.defineProperty(exports, "COIN_DECIMALS", { enumerable: true, get: function () { return constants_1.COIN_DECIMALS; } });
|
|
19
19
|
Object.defineProperty(exports, "UNSUPPORTED_COIN_TYPES", { enumerable: true, get: function () { return constants_1.UNSUPPORTED_COIN_TYPES; } });
|
|
20
20
|
Object.defineProperty(exports, "SUPPORTED_COIN_TYPES", { enumerable: true, get: function () { return constants_1.SUPPORTED_COIN_TYPES; } });
|
|
21
|
+
Object.defineProperty(exports, "LEVERAGE_MULTIPLIER_BUFFER", { enumerable: true, get: function () { return constants_1.LEVERAGE_MULTIPLIER_BUFFER; } });
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yBAAyB;AACzB,mCAA8D;AAArD,yGAAA,eAAe,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yBAAyB;AACzB,mCAA8D;AAArD,yGAAA,eAAe,OAAA;AA2BxB,YAAY;AACZ,yCASqB;AARnB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,+GAAA,kBAAkB,OAAA;AAClB,uGAAA,UAAU,OAAA;AACV,0GAAA,aAAa,OAAA;AACb,mHAAA,sBAAsB,OAAA;AACtB,iHAAA,oBAAoB,OAAA;AACpB,uHAAA,0BAA0B,OAAA"}
|
package/dist/types/position.d.ts
CHANGED
|
@@ -21,11 +21,15 @@ export interface AssetPosition {
|
|
|
21
21
|
* Current lending position information
|
|
22
22
|
*/
|
|
23
23
|
export interface PositionInfo {
|
|
24
|
-
/**
|
|
24
|
+
/** Primary collateral — largest supply by USD value */
|
|
25
25
|
collateral: AssetPosition;
|
|
26
|
-
/**
|
|
26
|
+
/** Primary debt — largest borrow by USD value */
|
|
27
27
|
debt: AssetPosition;
|
|
28
|
-
/**
|
|
28
|
+
/** All supply positions (includes dust) */
|
|
29
|
+
supplies: AssetPosition[];
|
|
30
|
+
/** All borrow positions */
|
|
31
|
+
borrows: AssetPosition[];
|
|
32
|
+
/** Net value in USD (total supplies - total borrows) */
|
|
29
33
|
netValueUsd: number;
|
|
30
34
|
/** Health factor (> 1 is safe, < 1 is liquidatable) */
|
|
31
35
|
healthFactor?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/types/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IAEjB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/types/position.ts"],"names":[],"mappings":"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"}
|
package/dist/types/protocol.d.ts
CHANGED
|
@@ -13,6 +13,43 @@ export interface MarketReserve {
|
|
|
13
13
|
decimals: number;
|
|
14
14
|
symbol: string;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Asset risk parameters for leverage calculations
|
|
18
|
+
*
|
|
19
|
+
* Used to determine maximum multiplier and liquidation thresholds.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const riskParams = await protocol.getAssetRiskParams(coinType);
|
|
24
|
+
* // LTV 65% → maxMultiplier = 1 / (1 - 0.65) = 2.857
|
|
25
|
+
* const maxMultiplier = 1 / (1 - riskParams.ltv);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface AssetRiskParams {
|
|
29
|
+
/** Loan-to-Value ratio (0-1). e.g., 0.65 = 65% */
|
|
30
|
+
ltv: number;
|
|
31
|
+
/** Liquidation threshold (0-1). Position liquidated when LTV exceeds this */
|
|
32
|
+
liquidationThreshold: number;
|
|
33
|
+
/** Liquidation bonus/penalty (0-1). e.g., 0.05 = 5% bonus for liquidators */
|
|
34
|
+
liquidationBonus: number;
|
|
35
|
+
/** Maximum multiplier based on LTV: 1 / (1 - ltv) */
|
|
36
|
+
maxMultiplier: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Asset APY information
|
|
40
|
+
*/
|
|
41
|
+
export interface AssetApy {
|
|
42
|
+
/** Base supply APR (0-1). e.g., 0.05 = 5% */
|
|
43
|
+
supplyApy: number;
|
|
44
|
+
/** Reward supply APR (0-1). e.g., 0.02 = 2%, from reward token incentives */
|
|
45
|
+
rewardApy: number;
|
|
46
|
+
/** Total supply APR (base + reward) */
|
|
47
|
+
totalSupplyApy: number;
|
|
48
|
+
/** NET borrow cost (gross APR − borrow incentive rebates, 0-1). What borrowers actually pay. */
|
|
49
|
+
borrowApy: number;
|
|
50
|
+
/** Borrow incentive rebate APR (0-1). Reduces gross borrow cost. e.g., 0.02 = 2% */
|
|
51
|
+
borrowRewardApy: number;
|
|
52
|
+
}
|
|
16
53
|
/**
|
|
17
54
|
* Common interface for all lending protocol adapters
|
|
18
55
|
*/
|
|
@@ -90,5 +127,69 @@ export interface ILendingProtocol {
|
|
|
90
127
|
* (e.g., Scallop tracks unstaked obligations)
|
|
91
128
|
*/
|
|
92
129
|
clearPendingState?(): void;
|
|
130
|
+
/**
|
|
131
|
+
* Get asset risk parameters for leverage calculations
|
|
132
|
+
*
|
|
133
|
+
* Returns LTV, liquidation threshold, and calculated max multiplier
|
|
134
|
+
* for a given asset on this protocol.
|
|
135
|
+
*
|
|
136
|
+
* @param coinType - Full coin type string (normalized)
|
|
137
|
+
* @returns Asset risk parameters including LTV and max multiplier
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const params = await protocol.getAssetRiskParams(COIN_TYPES.SUI);
|
|
142
|
+
* console.log(`LTV: ${params.ltv * 100}%`);
|
|
143
|
+
* console.log(`Max Multiplier: ${params.maxMultiplier.toFixed(2)}x`);
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
getAssetRiskParams(coinType: string): Promise<AssetRiskParams>;
|
|
147
|
+
/**
|
|
148
|
+
* Get current APY for an asset
|
|
149
|
+
*
|
|
150
|
+
* Returns supply and borrow APY including rewards (if applicable).
|
|
151
|
+
*
|
|
152
|
+
* @param coinType - Full coin type string (normalized)
|
|
153
|
+
* @returns Asset APY information
|
|
154
|
+
*/
|
|
155
|
+
getAssetApy(coinType: string): Promise<AssetApy>;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Extended protocol interface for Scallop-specific operations.
|
|
159
|
+
*
|
|
160
|
+
* Used in deleverage flows that require direct moveCall access
|
|
161
|
+
* to Scallop's on-chain modules (obligation management, staking).
|
|
162
|
+
*/
|
|
163
|
+
export interface IScallopProtocol extends ILendingProtocol {
|
|
164
|
+
/** Get Scallop on-chain addresses (core, borrowIncentive, vesca) */
|
|
165
|
+
getAddresses(): {
|
|
166
|
+
core: {
|
|
167
|
+
protocolPkg: string;
|
|
168
|
+
version: string;
|
|
169
|
+
market: string;
|
|
170
|
+
coinDecimalsRegistry: string;
|
|
171
|
+
xOracle: string;
|
|
172
|
+
};
|
|
173
|
+
borrowIncentive: {
|
|
174
|
+
pkg: string;
|
|
175
|
+
config: string;
|
|
176
|
+
incentivePools: string;
|
|
177
|
+
incentiveAccounts: string;
|
|
178
|
+
};
|
|
179
|
+
vesca: {
|
|
180
|
+
subsTable: string;
|
|
181
|
+
subsWhitelist: string;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
/** Get user's Scallop obligations */
|
|
185
|
+
getObligations(userAddress: string): Promise<Array<{
|
|
186
|
+
id: string;
|
|
187
|
+
keyId: string;
|
|
188
|
+
locked: boolean;
|
|
189
|
+
}>>;
|
|
190
|
+
/** Clear pending state (e.g., unstaked obligations) */
|
|
191
|
+
clearPendingState(): void;
|
|
192
|
+
/** Unstake an obligation in a transaction */
|
|
193
|
+
unstakeObligation(tx: Transaction, obligationId: string, obligationKeyId: string): void;
|
|
93
194
|
}
|
|
94
195
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAExC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAE/D;;;;;;OAMG;IACH,OAAO,CACL,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,QAAQ,CACN,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhB;;;;;;;;OAQG;IACH,MAAM,CACJ,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhB;;;;;;OAMG;IACH,KAAK,CACH,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;OAMG;IACH,cAAc,CACZ,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEhE;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/types/strategy.d.ts
CHANGED
|
@@ -3,39 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { LendingProtocol } from "./common";
|
|
5
5
|
import { PositionInfo } from "./position";
|
|
6
|
-
/**
|
|
7
|
-
* Parameters for leverage strategy
|
|
8
|
-
*/
|
|
9
|
-
export interface LeverageParams {
|
|
10
|
-
/** Target lending protocol */
|
|
11
|
-
protocol: LendingProtocol;
|
|
12
|
-
/** Asset to deposit as collateral (symbol like 'LBTC' or full coin type) */
|
|
13
|
-
depositAsset: string;
|
|
14
|
-
/**
|
|
15
|
-
* Amount to deposit (human-readable, e.g., "0.001")
|
|
16
|
-
* Either depositAmount OR depositValueUsd must be provided, not both.
|
|
17
|
-
*/
|
|
18
|
-
depositAmount?: string;
|
|
19
|
-
/**
|
|
20
|
-
* USD value to deposit (e.g., 1.0 for $1 worth of the asset)
|
|
21
|
-
* Either depositAmount OR depositValueUsd must be provided, not both.
|
|
22
|
-
* The SDK will automatically convert this to the appropriate amount based on current price.
|
|
23
|
-
*/
|
|
24
|
-
depositValueUsd?: number;
|
|
25
|
-
/** Leverage multiplier (e.g., 1.5, 2.0, 3.0) */
|
|
26
|
-
multiplier: number;
|
|
27
|
-
/** If true, only simulate the transaction */
|
|
28
|
-
dryRun?: boolean;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Parameters for deleverage strategy
|
|
32
|
-
*/
|
|
33
|
-
export interface DeleverageParams {
|
|
34
|
-
/** Target lending protocol to close position on */
|
|
35
|
-
protocol: LendingProtocol;
|
|
36
|
-
/** If true, only simulate the transaction */
|
|
37
|
-
dryRun?: boolean;
|
|
38
|
-
}
|
|
39
6
|
/**
|
|
40
7
|
* Result of strategy execution
|
|
41
8
|
*/
|
|
@@ -57,19 +24,96 @@ export interface StrategyResult {
|
|
|
57
24
|
export interface LeveragePreview {
|
|
58
25
|
/** Initial deposit value in USD */
|
|
59
26
|
initialEquityUsd: number;
|
|
60
|
-
/** Flash loan amount in USDC */
|
|
27
|
+
/** Flash loan amount in USDC (raw, 6 decimals) */
|
|
61
28
|
flashLoanUsdc: bigint;
|
|
62
|
-
/**
|
|
29
|
+
/** Flash loan fee in USD (Scallop: ~0.2-0.3% of flash loan) */
|
|
30
|
+
flashLoanFeeUsd: number;
|
|
31
|
+
/** Total position value after leverage (collateral USD) */
|
|
63
32
|
totalPositionUsd: number;
|
|
64
|
-
/** Total debt in USD */
|
|
33
|
+
/** Total debt in USD (flash loan repayment) */
|
|
65
34
|
debtUsd: number;
|
|
66
35
|
/** Effective multiplier achieved */
|
|
67
36
|
effectiveMultiplier: number;
|
|
37
|
+
/** Maximum allowed multiplier based on protocol LTV */
|
|
38
|
+
maxMultiplier: number;
|
|
39
|
+
/** Protocol LTV for this asset (0-1) */
|
|
40
|
+
assetLtv: number;
|
|
68
41
|
/** Position LTV percentage */
|
|
69
42
|
ltvPercent: number;
|
|
70
|
-
/**
|
|
43
|
+
/** Liquidation threshold from protocol (0-1) */
|
|
44
|
+
liquidationThreshold: number;
|
|
45
|
+
/** Estimated liquidation price (USD per token) */
|
|
71
46
|
liquidationPrice: number;
|
|
72
|
-
/** Price drop buffer before liquidation */
|
|
47
|
+
/** Price drop buffer before liquidation (%) */
|
|
73
48
|
priceDropBuffer: number;
|
|
49
|
+
/** Supply APY breakdown for deposit asset */
|
|
50
|
+
supplyApyBreakdown: {
|
|
51
|
+
base: number;
|
|
52
|
+
reward: number;
|
|
53
|
+
total: number;
|
|
54
|
+
};
|
|
55
|
+
/** Borrow APY breakdown for borrow asset (USDC) */
|
|
56
|
+
borrowApyBreakdown: {
|
|
57
|
+
gross: number;
|
|
58
|
+
rebate: number;
|
|
59
|
+
net: number;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Net position APY = (totalPosition × supplyApy - debt × borrowApy) / initialEquity
|
|
63
|
+
* Represents annualized return on the initial equity.
|
|
64
|
+
*/
|
|
65
|
+
netApy: number;
|
|
66
|
+
/** Estimated annual net earnings in USD */
|
|
67
|
+
annualNetEarningsUsd: number;
|
|
68
|
+
/** Estimated swap slippage % (from 7k quote or default estimate) */
|
|
69
|
+
swapSlippagePct: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Input parameters for findBestLeverageRoute.
|
|
73
|
+
* No protocol or multiplier needed — the method discovers the best ones.
|
|
74
|
+
*/
|
|
75
|
+
export interface FindBestRouteParams {
|
|
76
|
+
/** Asset to deposit as collateral (symbol like 'SUI' or full coin type) */
|
|
77
|
+
depositAsset: string;
|
|
78
|
+
/** Amount to deposit (human-readable). Either this OR depositValueUsd must be provided. */
|
|
79
|
+
depositAmount?: string;
|
|
80
|
+
/** USD value to deposit. Either this OR depositAmount must be provided. */
|
|
81
|
+
depositValueUsd?: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A single recommended route with its protocol and full preview data
|
|
85
|
+
*/
|
|
86
|
+
export interface LeverageRoute {
|
|
87
|
+
/** Which protocol this route uses */
|
|
88
|
+
protocol: LendingProtocol;
|
|
89
|
+
/** The multiplier used for this preview */
|
|
90
|
+
multiplier: number;
|
|
91
|
+
/** Full preview data from previewLeverage */
|
|
92
|
+
preview: LeveragePreview;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Result of findBestLeverageRoute.
|
|
96
|
+
*
|
|
97
|
+
* Contains two recommended routes:
|
|
98
|
+
* - bestMaxMultiplier: the protocol offering the highest possible leverage
|
|
99
|
+
* - bestApy: the protocol with the highest net APY at a safe multiplier
|
|
100
|
+
*/
|
|
101
|
+
export interface LeverageRouteResult {
|
|
102
|
+
/** Route with the highest maxMultiplier for this asset */
|
|
103
|
+
bestMaxMultiplier: LeverageRoute;
|
|
104
|
+
/** Route with the best netApy at the safe comparison multiplier */
|
|
105
|
+
bestApy: LeverageRoute;
|
|
106
|
+
/** The safe multiplier used for APY comparison (min maxMultiplier - buffer) */
|
|
107
|
+
safeMultiplier: number;
|
|
108
|
+
/** All successful previews at the safe multiplier (for display / comparison) */
|
|
109
|
+
allPreviews: Array<{
|
|
110
|
+
protocol: LendingProtocol;
|
|
111
|
+
preview: LeveragePreview;
|
|
112
|
+
}>;
|
|
113
|
+
/** Protocols that failed (for debugging) */
|
|
114
|
+
failedProtocols: Array<{
|
|
115
|
+
protocol: LendingProtocol;
|
|
116
|
+
error: string;
|
|
117
|
+
}>;
|
|
74
118
|
}
|
|
75
119
|
//# sourceMappingURL=strategy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/types/strategy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/types/strategy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IAEjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IAEzB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IAEtB,+DAA+D;IAC/D,eAAe,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAGhB,oCAAoC;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAE5B,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IAEtB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAE7B,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAC;IAGxB,6CAA6C;IAC7C,kBAAkB,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,mDAAmD;IACnD,kBAAkB,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IAEF;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,CAAC;IAG7B,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IAErB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,QAAQ,EAAE,eAAe,CAAC;IAE1B,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,iBAAiB,EAAE,aAAa,CAAC;IAEjC,mEAAmE;IACnE,OAAO,EAAE,aAAa,CAAC;IAEvB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IAEvB,gFAAgF;IAChF,WAAW,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAE5E,4CAA4C;IAC5C,eAAe,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE"}
|