@aibtc/mcp-server 1.33.3 → 1.33.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.
@@ -35,7 +35,7 @@ export interface ZestMarketInfo {
35
35
  }
36
36
  export interface ZestUserPosition {
37
37
  asset: string;
38
- supplied: string;
38
+ suppliedShares: string;
39
39
  borrowed: string;
40
40
  healthFactor?: string;
41
41
  }
@@ -92,7 +92,6 @@ export declare class ZestProtocolService {
92
92
  private network;
93
93
  private hiro;
94
94
  private contracts;
95
- private assetsListCache;
96
95
  constructor(network: Network);
97
96
  private ensureMainnet;
98
97
  /**
@@ -100,74 +99,108 @@ export declare class ZestProtocolService {
100
99
  */
101
100
  private getAssetConfig;
102
101
  /**
103
- * Build the assets-list CV required for borrow/withdraw operations
104
- * This is a list of tuples containing (asset, lp-token, oracle) for all supported assets
105
- * Result is cached since ZEST_ASSETS_LIST is static
102
+ * Get all supported assets from Zest Protocol v2
106
103
  */
107
- private buildAssetsListCV;
104
+ getAssets(): Promise<ZestAsset[]>;
108
105
  /**
109
- * Pyth price feed IDs used by Zest's oracle contracts.
110
- * BTC and STX feeds cover all current Zest assets.
106
+ * Resolve an asset symbol or contract ID to a full contract ID
111
107
  */
112
- private static PYTH_FEED_IDS;
113
- private priceFeedCache;
114
- private static PRICE_FEED_TTL_MS;
108
+ resolveAsset(assetOrSymbol: string): Promise<string>;
115
109
  /**
116
- * Fetch fresh Pyth price update VAA from Hermes API.
117
- * Caches for 30s to avoid redundant requests when multiple ops run in sequence.
118
- * Returns someCV(bufferCV(...)) for the price-feed-bytes parameter,
119
- * or noneCV() if the fetch fails (graceful degradation).
110
+ * Get user's full position on Zest v2 via the data helper contract.
111
+ * Returns collateral, debt, health factor, and LTV data in a single call.
120
112
  */
121
- private fetchPriceFeedBytes;
113
+ getUserPosition(asset: string, userAddress: string): Promise<ZestUserPosition | null>;
122
114
  /**
123
- * Get all supported assets from Zest Protocol
124
- * Returns the hardcoded asset list with full metadata
115
+ * Get detailed per-asset supply balances via the data helper.
116
+ * Returns vault share balances, underlying equivalents, and market collateral.
125
117
  */
126
- getAssets(): Promise<ZestAsset[]>;
118
+ getUserSupplies(userAddress: string): Promise<Record<string, unknown> | null>;
127
119
  /**
128
- * Resolve an asset symbol or contract ID to a full contract ID
120
+ * Build post-conditions for a principal sending tokens.
121
+ * Handles wSTX (native STX transfers) vs FT transfers.
129
122
  */
130
- resolveAsset(assetOrSymbol: string): Promise<string>;
123
+ private buildSendPC;
131
124
  /**
132
- * Get user's reserve/position data for an asset.
133
- *
134
- * Supply positions are tracked as LP token balances (e.g. zsbtc-v2-0.get-balance),
135
- * not in pool-0-reserve-v2-0.get-user-reserve-data which only tracks borrow-side debt.
136
- * Borrow positions are read from get-user-reserve-data.principal-borrow-balance.
125
+ * Query the vault's convert-to-assets to predict underlying amount for a given share amount.
126
+ * Used to set accurate post-conditions for withdraw operations (shares appreciate over time).
137
127
  */
138
- getUserPosition(asset: string, userAddress: string): Promise<ZestUserPosition | null>;
128
+ private getExpectedUnderlying;
129
+ /**
130
+ * Query the vault's convert-to-shares to predict zToken amount for a given underlying amount.
131
+ * Used to set accurate post-conditions for supply operations.
132
+ */
133
+ private getExpectedShares;
139
134
  /**
140
- * Supply assets to Zest lending pool via borrow-helper
135
+ * Supply assets to Zest v2 via market's supply-collateral-add.
136
+ * Atomically deposits into vault and adds zTokens as collateral.
137
+ * This earns yield AND provides borrowing power.
141
138
  *
142
- * Contract signature: supply(lp, pool-reserve, asset, amount, owner, referral, incentives)
139
+ * Token flow (3 ft-transfers):
140
+ * 1. user → market (underlying)
141
+ * 2. market → vault (underlying)
142
+ * 3. user → market-vault (zTokens, minted to user then transferred)
143
+ *
144
+ * Contract: v0-4-market.supply-collateral-add(ft, amount, min-shares, price-feeds)
143
145
  */
144
- supply(account: Account, asset: string, amount: bigint, onBehalfOf?: string): Promise<TransferResult>;
146
+ supply(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
145
147
  /**
146
- * Withdraw assets from Zest lending pool via borrow-helper
148
+ * Withdraw assets from Zest v2 via market's collateral-remove-redeem.
149
+ * Atomically removes zToken collateral and redeems for underlying.
150
+ *
151
+ * Token flow (3 ft-transfers):
152
+ * 1. market-vault → market (zTokens released from collateral)
153
+ * 2. market → vault (zTokens for redemption/burn)
154
+ * 3. vault → user (underlying redeemed)
155
+ *
156
+ * Contract: v0-4-market.collateral-remove-redeem(ft, amount, min-underlying, receiver, price-feeds)
147
157
  *
148
- * Contract signature: withdraw(lp, pool-reserve, asset, oracle, amount, owner, assets, incentives, price-feed-bytes)
158
+ * @param amount - Amount in zToken shares to withdraw
149
159
  */
150
160
  withdraw(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
151
161
  /**
152
- * Borrow assets from Zest lending pool via borrow-helper
162
+ * Borrow assets from Zest v2 via market's borrow function.
163
+ * Requires sufficient collateral to maintain healthy LTV.
153
164
  *
154
- * Contract signature: borrow(pool-reserve, oracle, asset-to-borrow, lp, assets, amount, fee-calculator, interest-rate-mode, owner, price-feed-bytes)
165
+ * Token flow (1 ft-transfer):
166
+ * 1. vault → user (borrowed underlying)
167
+ *
168
+ * Contract: v0-4-market.borrow(ft, amount, receiver, price-feeds)
155
169
  */
156
170
  borrow(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
157
171
  /**
158
- * Repay borrowed assets
172
+ * Repay borrowed assets on Zest v2.
173
+ *
174
+ * Token flow (1 ft-transfer):
175
+ * 1. user → vault (repayment, amount may be capped to actual debt on-chain)
159
176
  *
160
- * Contract signature: repay(asset, amount-to-repay, on-behalf-of, payer)
177
+ * Contract: v0-4-market.repay(ft, amount, on-behalf-of)
161
178
  */
162
179
  repay(account: Account, asset: string, amount: bigint, onBehalfOf?: string): Promise<TransferResult>;
163
180
  /**
164
- * Claim accumulated rewards from Zest incentives program via borrow-helper
181
+ * Deposit directly into a Zest v2 vault for yield without collateral.
182
+ * Mints zTokens that earn supply yield. Simpler than supply-collateral-add
183
+ * but the zTokens won't be usable as collateral for borrowing.
184
+ *
185
+ * Token flow (1 ft-transfer):
186
+ * 1. user → vault (underlying)
187
+ * Note: zTokens minted to recipient (ft-mint, no PC needed)
188
+ *
189
+ * Contract: vault.deposit(amount, min-out, recipient)
190
+ */
191
+ depositToVault(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
192
+ /**
193
+ * Redeem zTokens from a Zest v2 vault for underlying assets.
194
+ *
195
+ * Token flow:
196
+ * 1. user sends zTokens → vault (ft-burn, but transfer happens first)
197
+ * 2. vault sends underlying → recipient
165
198
  *
166
- * Currently: sBTC suppliers earn wSTX rewards
199
+ * Contract: vault.redeem(amount, min-out, recipient)
167
200
  *
168
- * Contract signature: claim-rewards(lp, pool-reserve, asset, oracle, owner, assets, reward-asset, incentives, price-feed-bytes)
201
+ * @param amount - Amount of zTokens to redeem
169
202
  */
170
- claimRewards(account: Account, asset: string): Promise<TransferResult>;
203
+ redeemFromVault(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
171
204
  }
172
205
  export declare function getAlexDexService(network: Network): AlexDexService;
173
206
  export declare function getZestProtocolService(network: Network): ZestProtocolService;
@@ -1 +1 @@
1
- {"version":3,"file":"defi.service.d.ts","sourceRoot":"","sources":["../../src/services/defi.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defi.service.d.ts","sourceRoot":"","sources":["../../src/services/defi.service.ts"],"names":[],"mappings":"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"}