defi-dash-sdk 0.1.0 → 0.1.1

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.
Files changed (50) hide show
  1. package/README.md +172 -138
  2. package/dist/index.d.ts +25 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +45 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/utils/index.d.ts +1 -0
  7. package/dist/lib/utils/index.d.ts.map +1 -1
  8. package/dist/lib/utils/index.js +1 -0
  9. package/dist/lib/utils/index.js.map +1 -1
  10. package/dist/lib/utils/logger.d.ts +30 -0
  11. package/dist/lib/utils/logger.d.ts.map +1 -0
  12. package/dist/lib/utils/logger.js +142 -0
  13. package/dist/lib/utils/logger.js.map +1 -0
  14. package/dist/protocols/index.d.ts +7 -0
  15. package/dist/protocols/index.d.ts.map +1 -0
  16. package/dist/protocols/index.js +11 -0
  17. package/dist/protocols/index.js.map +1 -0
  18. package/dist/protocols/interface.d.ts +102 -0
  19. package/dist/protocols/interface.d.ts.map +1 -0
  20. package/dist/protocols/interface.js +8 -0
  21. package/dist/protocols/interface.js.map +1 -0
  22. package/dist/protocols/navi.d.ts +36 -0
  23. package/dist/protocols/navi.d.ts.map +1 -0
  24. package/dist/protocols/navi.js +187 -0
  25. package/dist/protocols/navi.js.map +1 -0
  26. package/dist/protocols/suilend.d.ts +38 -0
  27. package/dist/protocols/suilend.d.ts.map +1 -0
  28. package/dist/protocols/suilend.js +188 -0
  29. package/dist/protocols/suilend.js.map +1 -0
  30. package/dist/sdk.d.ts +101 -0
  31. package/dist/sdk.d.ts.map +1 -0
  32. package/dist/sdk.js +297 -0
  33. package/dist/sdk.js.map +1 -0
  34. package/dist/strategies/deleverage.d.ts +46 -0
  35. package/dist/strategies/deleverage.d.ts.map +1 -0
  36. package/dist/strategies/deleverage.js +115 -0
  37. package/dist/strategies/deleverage.js.map +1 -0
  38. package/dist/strategies/index.d.ts +6 -0
  39. package/dist/strategies/index.d.ts.map +1 -0
  40. package/dist/strategies/index.js +13 -0
  41. package/dist/strategies/index.js.map +1 -0
  42. package/dist/strategies/leverage.d.ts +43 -0
  43. package/dist/strategies/leverage.d.ts.map +1 -0
  44. package/dist/strategies/leverage.js +133 -0
  45. package/dist/strategies/leverage.js.map +1 -0
  46. package/dist/types.d.ts +117 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +24 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +27 -24
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /**
3
+ * DeFi Dash SDK - Logging Utilities
4
+ *
5
+ * Common logging functions for test scripts
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.formatAmount = formatAmount;
9
+ exports.formatUsd = formatUsd;
10
+ exports.formatGas = formatGas;
11
+ exports.logHeader = logHeader;
12
+ exports.logSection = logSection;
13
+ exports.logDivider = logDivider;
14
+ exports.logFooter = logFooter;
15
+ exports.logPosition = logPosition;
16
+ exports.logLeverageParams = logLeverageParams;
17
+ exports.logLeveragePreview = logLeveragePreview;
18
+ exports.logStrategyResult = logStrategyResult;
19
+ exports.logWallet = logWallet;
20
+ exports.logBalances = logBalances;
21
+ exports.logSDKInit = logSDKInit;
22
+ const DIVIDER = "─".repeat(55);
23
+ // ============================================================================
24
+ // Basic Formatters
25
+ // ============================================================================
26
+ function formatAmount(amount, decimals) {
27
+ const num = Number(amount) / Math.pow(10, decimals);
28
+ return num.toFixed(Math.min(decimals, 6));
29
+ }
30
+ function formatUsd(value) {
31
+ return `$${value.toFixed(2)}`;
32
+ }
33
+ function formatGas(gasUsed) {
34
+ return `${(Number(gasUsed) / 1e9).toFixed(6)} SUI`;
35
+ }
36
+ // ============================================================================
37
+ // Section Loggers
38
+ // ============================================================================
39
+ function logHeader(title) {
40
+ console.log(DIVIDER);
41
+ console.log(` ${title}`);
42
+ console.log(DIVIDER);
43
+ }
44
+ function logSection(title) {
45
+ console.log(`\n${title}`);
46
+ console.log(DIVIDER);
47
+ }
48
+ function logDivider() {
49
+ console.log(DIVIDER);
50
+ }
51
+ function logFooter(message = "✨ Done!") {
52
+ console.log("\n" + DIVIDER);
53
+ console.log(` ${message}`);
54
+ console.log(DIVIDER);
55
+ }
56
+ // ============================================================================
57
+ // Position Logging
58
+ // ============================================================================
59
+ function logPosition(position, protocol) {
60
+ console.log(`\n📊 Checking current position on ${protocol}...`);
61
+ if (!position) {
62
+ console.log(" ⚠️ No position found");
63
+ return;
64
+ }
65
+ const { collateral, debt, netValueUsd } = position;
66
+ console.log(`\n📋 Current Position:`);
67
+ console.log(DIVIDER);
68
+ console.log(` Collateral: ${formatAmount(collateral.amount, collateral.decimals)} ${collateral.symbol}`);
69
+ console.log(` Value: ${formatUsd(collateral.valueUsd)}`);
70
+ console.log(` Debt: ${formatAmount(debt.amount, debt.decimals)} ${debt.symbol}`);
71
+ console.log(` Value: ${formatUsd(debt.valueUsd)}`);
72
+ console.log(` Net Value: ${formatUsd(netValueUsd)}`);
73
+ console.log(DIVIDER);
74
+ }
75
+ // ============================================================================
76
+ // Leverage Preview Logging
77
+ // ============================================================================
78
+ function logLeverageParams(params) {
79
+ console.log("\n📈 Leverage Preview:");
80
+ console.log(DIVIDER);
81
+ console.log(` Protocol: ${params.protocol}`);
82
+ console.log(` Deposit Asset: ${params.depositAsset}`);
83
+ console.log(` Deposit Amount: ${params.depositAmount}`);
84
+ console.log(` Multiplier: ${params.multiplier}x`);
85
+ }
86
+ function logLeveragePreview(preview) {
87
+ console.log(DIVIDER);
88
+ console.log(` Initial Equity: ${formatUsd(preview.initialEquityUsd)}`);
89
+ console.log(` Flash Loan: ${(Number(preview.flashLoanUsdc) / 1e6).toFixed(2)} USDC`);
90
+ console.log(` Total Position: ${formatUsd(preview.totalPositionUsd)}`);
91
+ console.log(` Total Debt: ${formatUsd(preview.debtUsd)}`);
92
+ console.log(` Position LTV: ${preview.ltvPercent.toFixed(1)}%`);
93
+ console.log(` Liquidation Price: $${preview.liquidationPrice.toLocaleString()}`);
94
+ console.log(` Price Drop Buffer: ${preview.priceDropBuffer.toFixed(1)}%`);
95
+ console.log(DIVIDER);
96
+ }
97
+ // ============================================================================
98
+ // Strategy Result Logging
99
+ // ============================================================================
100
+ function logStrategyResult(result, strategyName, isDryRun = true) {
101
+ const mode = isDryRun ? "DRY RUN" : "EXECUTION";
102
+ console.log(`\n🔧 Executing ${strategyName} strategy (${mode})...`);
103
+ if (result.success) {
104
+ console.log(" ✅ " + (isDryRun ? "Dry run successful!" : "Execution successful!"));
105
+ if (result.txDigest) {
106
+ console.log(` 📝 TX: ${result.txDigest}`);
107
+ }
108
+ if (result.gasUsed) {
109
+ console.log(` ⛽ Gas: ${formatGas(result.gasUsed)}`);
110
+ }
111
+ if (isDryRun) {
112
+ console.log("\n 💡 To execute for real, set dryRun: false");
113
+ }
114
+ }
115
+ else {
116
+ console.error(` ❌ ${mode} failed: ${result.error}`);
117
+ }
118
+ }
119
+ // ============================================================================
120
+ // Wallet Logging
121
+ // ============================================================================
122
+ function logWallet(address) {
123
+ console.log(`\n👤 Wallet: ${address}`);
124
+ }
125
+ function logBalances(balances) {
126
+ console.log("\n💰 Wallet Balances:");
127
+ for (const b of balances) {
128
+ const decimals = b.decimals || 9;
129
+ const formatted = formatAmount(BigInt(b.balance), decimals);
130
+ console.log(` ${b.symbol}: ${formatted}`);
131
+ }
132
+ }
133
+ // ============================================================================
134
+ // SDK Status
135
+ // ============================================================================
136
+ function logSDKInit(success = true) {
137
+ console.log("\n📦 Initializing DefiDash SDK...");
138
+ if (success) {
139
+ console.log(" ✅ SDK initialized");
140
+ }
141
+ }
142
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/lib/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * DeFi Dash SDK - Protocol Exports
3
+ */
4
+ export { ILendingProtocol, ReserveInfo } from "./interface";
5
+ export { SuilendAdapter } from "./suilend";
6
+ export { NaviAdapter } from "./navi";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/protocols/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * DeFi Dash SDK - Protocol Exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NaviAdapter = exports.SuilendAdapter = void 0;
7
+ var suilend_1 = require("./suilend");
8
+ Object.defineProperty(exports, "SuilendAdapter", { enumerable: true, get: function () { return suilend_1.SuilendAdapter; } });
9
+ var navi_1 = require("./navi");
10
+ Object.defineProperty(exports, "NaviAdapter", { enumerable: true, get: function () { return navi_1.NaviAdapter; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocols/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,+BAAqC;AAA5B,mGAAA,WAAW,OAAA"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * DeFi Dash SDK - Lending Protocol Interface
3
+ *
4
+ * Abstract interface for lending protocols (Suilend, Navi, etc.)
5
+ */
6
+ import { Transaction } from "@mysten/sui/transactions";
7
+ import { SuiClient } from "@mysten/sui/client";
8
+ import { PositionInfo } from "../types";
9
+ /**
10
+ * Common interface for all lending protocol adapters
11
+ */
12
+ export interface ILendingProtocol {
13
+ /** Protocol name identifier */
14
+ readonly name: string;
15
+ /**
16
+ * Initialize the protocol client
17
+ * Must be called before using other methods
18
+ */
19
+ initialize(suiClient: SuiClient): Promise<void>;
20
+ /**
21
+ * Get current lending position for a user
22
+ * @param userAddress - Sui address of the user
23
+ * @returns Position info or null if no position exists
24
+ */
25
+ getPosition(userAddress: string): Promise<PositionInfo | null>;
26
+ /**
27
+ * Check if user has an existing obligation/position
28
+ * @param userAddress - Sui address of the user
29
+ */
30
+ hasPosition(userAddress: string): Promise<boolean>;
31
+ /**
32
+ * Deposit collateral into the lending protocol
33
+ * @param tx - Transaction to add deposit command to
34
+ * @param coin - Coin object to deposit
35
+ * @param coinType - Full coin type string
36
+ * @param userAddress - User's address (for obligation lookup)
37
+ */
38
+ deposit(tx: Transaction, coin: any, coinType: string, userAddress: string): Promise<void>;
39
+ /**
40
+ * Withdraw collateral from the lending protocol
41
+ * @param tx - Transaction to add withdraw command to
42
+ * @param coinType - Full coin type string
43
+ * @param amount - Amount to withdraw (raw units as string)
44
+ * @param userAddress - User's address
45
+ * @returns Withdrawn coin object
46
+ */
47
+ withdraw(tx: Transaction, coinType: string, amount: string, userAddress: string): Promise<any>;
48
+ /**
49
+ * Borrow from the lending protocol
50
+ * @param tx - Transaction to add borrow command to
51
+ * @param coinType - Full coin type string (e.g., USDC)
52
+ * @param amount - Amount to borrow (raw units as string)
53
+ * @param userAddress - User's address
54
+ * @param skipOracle - Skip oracle refresh (if already done)
55
+ * @returns Borrowed coin object
56
+ */
57
+ borrow(tx: Transaction, coinType: string, amount: string, userAddress: string, skipOracle?: boolean): Promise<any>;
58
+ /**
59
+ * Repay debt to the lending protocol
60
+ * @param tx - Transaction to add repay command to
61
+ * @param coinType - Full coin type string
62
+ * @param coin - Coin object to use for repayment
63
+ * @param userAddress - User's address
64
+ */
65
+ repay(tx: Transaction, coinType: string, coin: any, userAddress: string): Promise<void>;
66
+ /**
67
+ * Refresh oracle prices (protocol-specific)
68
+ * Must be called before deposit/borrow operations
69
+ * @param tx - Transaction to add refresh commands to
70
+ * @param coinTypes - Coin types to refresh oracles for
71
+ * @param userAddress - User's address (for obligation lookup)
72
+ */
73
+ refreshOracles(tx: Transaction, coinTypes: string[], userAddress: string): Promise<void>;
74
+ /**
75
+ * Get reserve/pool info for a coin type
76
+ * @param coinType - Full coin type string
77
+ * @returns Reserve info or undefined
78
+ */
79
+ getReserveInfo(coinType: string): Promise<ReserveInfo | undefined>;
80
+ }
81
+ /**
82
+ * Reserve/Pool information
83
+ */
84
+ export interface ReserveInfo {
85
+ /** Coin type */
86
+ coinType: string;
87
+ /** Token symbol */
88
+ symbol: string;
89
+ /** Token decimals */
90
+ decimals: number;
91
+ /** Reserve/Pool ID */
92
+ id?: string;
93
+ /** Open LTV (loan-to-value) percentage */
94
+ openLtvPct?: number;
95
+ /** Close LTV (liquidation threshold) percentage */
96
+ closeLtvPct?: number;
97
+ /** Current deposit APY */
98
+ depositApy?: number;
99
+ /** Current borrow APY */
100
+ borrowApy?: number;
101
+ }
102
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/protocols/interface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;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;;;OAGG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD;;;;;;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;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * DeFi Dash SDK - Lending Protocol Interface
4
+ *
5
+ * Abstract interface for lending protocols (Suilend, Navi, etc.)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/protocols/interface.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * DeFi Dash SDK - Navi Protocol Adapter
3
+ *
4
+ * Implements ILendingProtocol for Navi
5
+ */
6
+ import { Transaction } from "@mysten/sui/transactions";
7
+ import { SuiClient } from "@mysten/sui/client";
8
+ import { ILendingProtocol, ReserveInfo } from "./interface";
9
+ import { PositionInfo } from "../types";
10
+ /**
11
+ * Navi lending protocol adapter
12
+ */
13
+ export declare class NaviAdapter implements ILendingProtocol {
14
+ readonly name = "navi";
15
+ private suiClient;
16
+ private pools;
17
+ private priceFeeds;
18
+ private initialized;
19
+ initialize(suiClient: SuiClient): Promise<void>;
20
+ private ensureInitialized;
21
+ private getPool;
22
+ private getPriceFeed;
23
+ getPosition(userAddress: string): Promise<PositionInfo | null>;
24
+ hasPosition(userAddress: string): Promise<boolean>;
25
+ deposit(tx: Transaction, coin: any, coinType: string, userAddress: string): Promise<void>;
26
+ withdraw(tx: Transaction, coinType: string, amount: string, userAddress: string): Promise<any>;
27
+ borrow(tx: Transaction, coinType: string, amount: string, userAddress: string, skipOracle?: boolean): Promise<any>;
28
+ repay(tx: Transaction, coinType: string, coin: any, userAddress: string): Promise<void>;
29
+ refreshOracles(tx: Transaction, coinTypes: string[], userAddress: string): Promise<void>;
30
+ getReserveInfo(coinType: string): Promise<ReserveInfo | undefined>;
31
+ /**
32
+ * Get all available pools
33
+ */
34
+ getPools(): any[];
35
+ }
36
+ //# sourceMappingURL=navi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navi.d.ts","sourceRoot":"","sources":["../../src/protocols/navi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAY/C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAiC,MAAM,UAAU,CAAC;AAQvE;;GAEG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAClD,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAS;IAEtB,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,YAAY;IAOd,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAoE9D,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,OAAO,CACX,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAcV,QAAQ,CACZ,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;IAkBT,MAAM,CACV,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,UAAQ,GACjB,OAAO,CAAC,GAAG,CAAC;IAeT,KAAK,CACT,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAaV,cAAc,CAClB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAeV,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAexE;;OAEG;IACH,QAAQ;CAIT"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /**
3
+ * DeFi Dash SDK - Navi Protocol Adapter
4
+ *
5
+ * Implements ILendingProtocol for Navi
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.NaviAdapter = void 0;
9
+ const lending_1 = require("@naviprotocol/lending");
10
+ const types_1 = require("../types");
11
+ const utils_1 = require("../lib/utils");
12
+ const const_1 = require("../lib/suilend/const");
13
+ const sdk_ts_1 = require("@7kprotocol/sdk-ts");
14
+ // Navi SDK returns balances with 9 decimal precision internally
15
+ const NAVI_BALANCE_DECIMALS = 9;
16
+ /**
17
+ * Navi lending protocol adapter
18
+ */
19
+ class NaviAdapter {
20
+ constructor() {
21
+ this.name = "navi";
22
+ this.pools = [];
23
+ this.priceFeeds = [];
24
+ this.initialized = false;
25
+ }
26
+ async initialize(suiClient) {
27
+ this.suiClient = suiClient;
28
+ // Fetch pools
29
+ const poolsResult = await (0, lending_1.getPools)({ env: "prod" });
30
+ this.pools = Array.isArray(poolsResult)
31
+ ? poolsResult
32
+ : Object.values(poolsResult);
33
+ // Fetch price feeds
34
+ this.priceFeeds = await (0, lending_1.getPriceFeeds)({ env: "prod" });
35
+ this.initialized = true;
36
+ }
37
+ ensureInitialized() {
38
+ if (!this.initialized) {
39
+ throw new Error("NaviAdapter not initialized. Call initialize() first.");
40
+ }
41
+ }
42
+ getPool(coinType) {
43
+ const normalized = (0, utils_1.normalizeCoinType)(coinType);
44
+ return this.pools.find((p) => {
45
+ const poolCoinType = (0, utils_1.normalizeCoinType)(p.coinType ?? p.suiCoinType ?? "");
46
+ return poolCoinType === normalized;
47
+ });
48
+ }
49
+ getPriceFeed(coinType) {
50
+ const normalized = (0, utils_1.normalizeCoinType)(coinType);
51
+ return this.priceFeeds.find((f) => (0, utils_1.normalizeCoinType)(f.coinType) === normalized);
52
+ }
53
+ async getPosition(userAddress) {
54
+ this.ensureInitialized();
55
+ const lendingState = await (0, lending_1.getLendingState)(userAddress, { env: "prod" });
56
+ if (lendingState.length === 0)
57
+ return null;
58
+ const activePositions = lendingState.filter((p) => BigInt(p.supplyBalance) > 0 || BigInt(p.borrowBalance) > 0);
59
+ if (activePositions.length === 0)
60
+ return null;
61
+ // Find supply position
62
+ let collateral = null;
63
+ let debt = null;
64
+ for (const pos of activePositions) {
65
+ const poolCoinType = (0, utils_1.normalizeCoinType)(pos.pool.coinType);
66
+ const reserve = (0, const_1.getReserveByCoinType)(poolCoinType);
67
+ const decimals = reserve?.decimals || 9;
68
+ const symbol = reserve?.symbol || poolCoinType.split("::").pop() || "???";
69
+ if (BigInt(pos.supplyBalance) > 0) {
70
+ const amount = BigInt(pos.supplyBalance);
71
+ const price = await (0, sdk_ts_1.getTokenPrice)(poolCoinType);
72
+ collateral = {
73
+ amount,
74
+ symbol,
75
+ coinType: poolCoinType,
76
+ decimals: NAVI_BALANCE_DECIMALS, // Navi uses 9 decimals internally
77
+ valueUsd: (Number(amount) / Math.pow(10, NAVI_BALANCE_DECIMALS)) * price,
78
+ };
79
+ }
80
+ if (BigInt(pos.borrowBalance) > 0) {
81
+ const rawAmount = BigInt(pos.borrowBalance);
82
+ // Convert from Navi's 9 decimal precision to native decimals
83
+ const amount = rawAmount / BigInt(10 ** (NAVI_BALANCE_DECIMALS - decimals));
84
+ const price = await (0, sdk_ts_1.getTokenPrice)(poolCoinType);
85
+ debt = {
86
+ amount,
87
+ symbol,
88
+ coinType: poolCoinType,
89
+ decimals,
90
+ valueUsd: (Number(amount) / Math.pow(10, decimals)) * price,
91
+ };
92
+ }
93
+ }
94
+ if (!collateral)
95
+ return null;
96
+ const netValueUsd = collateral.valueUsd - (debt?.valueUsd || 0);
97
+ return {
98
+ collateral,
99
+ debt: debt || {
100
+ amount: 0n,
101
+ symbol: "USDC",
102
+ coinType: (0, utils_1.normalizeCoinType)(types_1.USDC_COIN_TYPE),
103
+ decimals: 6,
104
+ valueUsd: 0,
105
+ },
106
+ netValueUsd,
107
+ };
108
+ }
109
+ async hasPosition(userAddress) {
110
+ const position = await this.getPosition(userAddress);
111
+ return position !== null;
112
+ }
113
+ async deposit(tx, coin, coinType, userAddress) {
114
+ this.ensureInitialized();
115
+ const pool = this.getPool(coinType);
116
+ if (!pool) {
117
+ throw new Error(`Pool not found for ${coinType}`);
118
+ }
119
+ // Navi's depositCoinPTB expects the coin directly
120
+ await (0, lending_1.depositCoinPTB)(tx, pool, coin, {
121
+ env: "prod",
122
+ });
123
+ }
124
+ async withdraw(tx, coinType, amount, userAddress) {
125
+ this.ensureInitialized();
126
+ const pool = this.getPool(coinType);
127
+ if (!pool) {
128
+ throw new Error(`Pool not found for ${coinType}`);
129
+ }
130
+ const withdrawnCoin = await (0, lending_1.withdrawCoinPTB)(tx, pool, Number(amount), { env: "prod" });
131
+ return withdrawnCoin;
132
+ }
133
+ async borrow(tx, coinType, amount, userAddress, skipOracle = false) {
134
+ this.ensureInitialized();
135
+ const pool = this.getPool(coinType);
136
+ if (!pool) {
137
+ throw new Error(`Pool not found for ${coinType}`);
138
+ }
139
+ const borrowedCoin = await (0, lending_1.borrowCoinPTB)(tx, pool, Number(amount), {
140
+ env: "prod",
141
+ });
142
+ return borrowedCoin;
143
+ }
144
+ async repay(tx, coinType, coin, userAddress) {
145
+ this.ensureInitialized();
146
+ const pool = this.getPool(coinType);
147
+ if (!pool) {
148
+ throw new Error(`Pool not found for ${coinType}`);
149
+ }
150
+ await (0, lending_1.repayCoinPTB)(tx, pool, coin, {
151
+ env: "prod",
152
+ });
153
+ }
154
+ async refreshOracles(tx, coinTypes, userAddress) {
155
+ this.ensureInitialized();
156
+ const feedsToUpdate = coinTypes
157
+ .map((ct) => this.getPriceFeed(ct))
158
+ .filter(Boolean);
159
+ if (feedsToUpdate.length > 0) {
160
+ await (0, lending_1.updateOraclePricesPTB)(tx, feedsToUpdate, {
161
+ env: "prod",
162
+ updatePythPriceFeeds: true,
163
+ });
164
+ }
165
+ }
166
+ async getReserveInfo(coinType) {
167
+ this.ensureInitialized();
168
+ const pool = this.getPool(coinType);
169
+ if (!pool)
170
+ return undefined;
171
+ const reserve = (0, const_1.getReserveByCoinType)((0, utils_1.normalizeCoinType)(coinType));
172
+ return {
173
+ coinType: pool.coinType,
174
+ symbol: reserve?.symbol || pool.coinType.split("::").pop() || "???",
175
+ decimals: reserve?.decimals || 9,
176
+ };
177
+ }
178
+ /**
179
+ * Get all available pools
180
+ */
181
+ getPools() {
182
+ this.ensureInitialized();
183
+ return this.pools;
184
+ }
185
+ }
186
+ exports.NaviAdapter = NaviAdapter;
187
+ //# sourceMappingURL=navi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navi.js","sourceRoot":"","sources":["../../src/protocols/navi.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,mDAU+B;AAE/B,oCAAuE;AACvE,wCAAiD;AACjD,gDAA4D;AAC5D,+CAAmD;AAEnD,gEAAgE;AAChE,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAa,WAAW;IAAxB;QACW,SAAI,GAAG,MAAM,CAAC;QAEf,UAAK,GAAU,EAAE,CAAC;QAClB,eAAU,GAAU,EAAE,CAAC;QACvB,gBAAW,GAAG,KAAK,CAAC;IAyO9B,CAAC;IAvOC,KAAK,CAAC,UAAU,CAAC,SAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,cAAc;QACd,MAAM,WAAW,GAAG,MAAM,IAAA,kBAAQ,EAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YACrC,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/B,oBAAoB;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,IAAA,uBAAa,EAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,QAAgB;QAC9B,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAA,yBAAiB,EAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAC1E,OAAO,YAAY,KAAK,UAAU,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,QAAgB;QACnC,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,yBAAiB,EAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,UAAU,CACzD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,YAAY,GAAG,MAAM,IAAA,yBAAe,EAAC,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAClE,CAAC;QAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE9C,uBAAuB;QACvB,IAAI,UAAU,GAAyB,IAAI,CAAC;QAC5C,IAAI,IAAI,GAAyB,IAAI,CAAC;QAEtC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,IAAA,yBAAiB,EAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAA,4BAAoB,EAAC,YAAY,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC;YAE1E,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAa,EAAC,YAAY,CAAC,CAAC;gBAChD,UAAU,GAAG;oBACX,MAAM;oBACN,MAAM;oBACN,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,qBAAqB,EAAE,kCAAkC;oBACnE,QAAQ,EACN,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC,GAAG,KAAK;iBACjE,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC5C,6DAA6D;gBAC7D,MAAM,MAAM,GACV,SAAS,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC/D,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAa,EAAC,YAAY,CAAC,CAAC;gBAChD,IAAI,GAAG;oBACL,MAAM;oBACN,MAAM;oBACN,QAAQ,EAAE,YAAY;oBACtB,QAAQ;oBACR,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK;iBAC5D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;QAEhE,OAAO;YACL,UAAU;YACV,IAAI,EAAE,IAAI,IAAI;gBACZ,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,IAAA,yBAAiB,EAAC,sBAAc,CAAC;gBAC3C,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,CAAC;aACZ;YACD,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrD,OAAO,QAAQ,KAAK,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,EAAe,EACf,IAAS,EACT,QAAgB,EAChB,WAAmB;QAEnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,kDAAkD;QAClD,MAAM,IAAA,wBAAc,EAAC,EAAS,EAAE,IAAI,EAAE,IAAI,EAAE;YAC1C,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,EAAe,EACf,QAAgB,EAChB,MAAc,EACd,WAAmB;QAEnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAA,yBAAe,EACzC,EAAS,EACT,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,EACd,EAAE,GAAG,EAAE,MAAM,EAAE,CAChB,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAe,EACf,QAAgB,EAChB,MAAc,EACd,WAAmB,EACnB,UAAU,GAAG,KAAK;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAA,uBAAa,EAAC,EAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YACxE,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CACT,EAAe,EACf,QAAgB,EAChB,IAAS,EACT,WAAmB;QAEnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAA,sBAAY,EAAC,EAAS,EAAE,IAAI,EAAE,IAAI,EAAE;YACxC,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,EAAe,EACf,SAAmB,EACnB,WAAmB;QAEnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,aAAa,GAAG,SAAS;aAC5B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aAClC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAA,+BAAqB,EAAC,EAAS,EAAE,aAAa,EAAE;gBACpD,GAAG,EAAE,MAAM;gBACX,oBAAoB,EAAE,IAAI;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAA,4BAAoB,EAAC,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;QAElE,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;YACnE,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AA9OD,kCA8OC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * DeFi Dash SDK - Suilend Protocol Adapter
3
+ *
4
+ * Implements ILendingProtocol for Suilend
5
+ */
6
+ import { Transaction } from "@mysten/sui/transactions";
7
+ import { SuiClient } from "@mysten/sui/client";
8
+ import { SuilendClient } from "@suilend/sdk";
9
+ import { ILendingProtocol, ReserveInfo } from "./interface";
10
+ import { PositionInfo } from "../types";
11
+ /**
12
+ * Suilend lending protocol adapter
13
+ */
14
+ export declare class SuilendAdapter implements ILendingProtocol {
15
+ readonly name = "suilend";
16
+ private client;
17
+ private suiClient;
18
+ private initialized;
19
+ initialize(suiClient: SuiClient): Promise<void>;
20
+ private ensureInitialized;
21
+ getPosition(userAddress: string): Promise<PositionInfo | null>;
22
+ hasPosition(userAddress: string): Promise<boolean>;
23
+ deposit(tx: Transaction, coin: any, coinType: string, userAddress: string): Promise<void>;
24
+ withdraw(tx: Transaction, coinType: string, amount: string, userAddress: string): Promise<any>;
25
+ borrow(tx: Transaction, coinType: string, amount: string, userAddress: string, skipOracle?: boolean): Promise<any>;
26
+ repay(tx: Transaction, coinType: string, coin: any, userAddress: string): Promise<void>;
27
+ refreshOracles(tx: Transaction, coinTypes: string[], userAddress: string): Promise<void>;
28
+ getReserveInfo(coinType: string): Promise<ReserveInfo | undefined>;
29
+ /**
30
+ * Get obligation owner cap info
31
+ */
32
+ getObligationCap(userAddress: string): Promise<import("@suilend/sdk/_generated/suilend/lending-market/structs").ObligationOwnerCap<string> | null>;
33
+ /**
34
+ * Get the underlying Suilend client for advanced operations
35
+ */
36
+ getSuilendClient(): SuilendClient;
37
+ }
38
+ //# sourceMappingURL=suilend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suilend.d.ts","sourceRoot":"","sources":["../../src/protocols/suilend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,aAAa,EAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAiC,MAAM,UAAU,CAAC;AAQvE;;GAEG;AACH,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAS;IAEtB,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,OAAO,CAAC,iBAAiB;IAQnB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAgF9D,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlD,OAAO,CACX,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA2BV,QAAQ,CACZ,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;IA0BT,MAAM,CACV,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,UAAQ,GACjB,OAAO,CAAC,GAAG,CAAC;IA0BT,KAAK,CACT,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAgBV,cAAc,CAClB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAsBV,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAYxE;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM;IAU1C;;OAEG;IACH,gBAAgB,IAAI,aAAa;CAIlC"}