starkfi 0.1.0 → 0.3.0

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 (240) hide show
  1. package/LICENSE +1 -1
  2. package/MCP.md +292 -0
  3. package/README.md +424 -54
  4. package/dist/commands/auth/login.js +2 -2
  5. package/dist/commands/auth/login.js.map +1 -1
  6. package/dist/commands/auth/verify.d.ts.map +1 -1
  7. package/dist/commands/auth/verify.js +2 -2
  8. package/dist/commands/auth/verify.js.map +1 -1
  9. package/dist/commands/batch/batch.d.ts +3 -0
  10. package/dist/commands/batch/batch.d.ts.map +1 -0
  11. package/dist/commands/batch/batch.js +155 -0
  12. package/dist/commands/batch/batch.js.map +1 -0
  13. package/dist/commands/chain/tx-status.js +2 -2
  14. package/dist/commands/chain/tx-status.js.map +1 -1
  15. package/dist/commands/config/config.d.ts.map +1 -1
  16. package/dist/commands/config/config.js +23 -34
  17. package/dist/commands/config/config.js.map +1 -1
  18. package/dist/commands/lending/lending.d.ts +1 -0
  19. package/dist/commands/lending/lending.d.ts.map +1 -1
  20. package/dist/commands/lending/lending.js +197 -51
  21. package/dist/commands/lending/lending.js.map +1 -1
  22. package/dist/commands/portfolio/portfolio.d.ts +3 -0
  23. package/dist/commands/portfolio/portfolio.d.ts.map +1 -0
  24. package/dist/commands/portfolio/portfolio.js +76 -0
  25. package/dist/commands/portfolio/portfolio.js.map +1 -0
  26. package/dist/commands/staking/staking.d.ts +1 -1
  27. package/dist/commands/staking/staking.d.ts.map +1 -1
  28. package/dist/commands/staking/staking.js +144 -61
  29. package/dist/commands/staking/staking.js.map +1 -1
  30. package/dist/commands/trade/multi-swap.d.ts +3 -0
  31. package/dist/commands/trade/multi-swap.d.ts.map +1 -0
  32. package/dist/commands/trade/multi-swap.js +141 -0
  33. package/dist/commands/trade/multi-swap.js.map +1 -0
  34. package/dist/commands/trade/status.js +2 -2
  35. package/dist/commands/trade/status.js.map +1 -1
  36. package/dist/commands/trade/swap.d.ts.map +1 -1
  37. package/dist/commands/trade/swap.js +48 -12
  38. package/dist/commands/trade/swap.js.map +1 -1
  39. package/dist/commands/wallet/balance.d.ts.map +1 -1
  40. package/dist/commands/wallet/balance.js +20 -3
  41. package/dist/commands/wallet/balance.js.map +1 -1
  42. package/dist/commands/wallet/deploy.d.ts.map +1 -1
  43. package/dist/commands/wallet/deploy.js +2 -1
  44. package/dist/commands/wallet/deploy.js.map +1 -1
  45. package/dist/commands/wallet/send.d.ts.map +1 -1
  46. package/dist/commands/wallet/send.js +46 -9
  47. package/dist/commands/wallet/send.js.map +1 -1
  48. package/dist/index.js +162 -9
  49. package/dist/index.js.map +1 -1
  50. package/dist/lib/banner.d.ts +6 -0
  51. package/dist/lib/banner.d.ts.map +1 -0
  52. package/dist/lib/banner.js +78 -0
  53. package/dist/lib/banner.js.map +1 -0
  54. package/dist/lib/concurrency.d.ts +2 -0
  55. package/dist/lib/concurrency.d.ts.map +1 -0
  56. package/dist/lib/concurrency.js +21 -0
  57. package/dist/lib/concurrency.js.map +1 -0
  58. package/dist/lib/config.d.ts +0 -11
  59. package/dist/lib/config.d.ts.map +1 -1
  60. package/dist/lib/config.js +0 -20
  61. package/dist/lib/config.js.map +1 -1
  62. package/dist/lib/errors.d.ts +2 -0
  63. package/dist/lib/errors.d.ts.map +1 -1
  64. package/dist/lib/errors.js +2 -0
  65. package/dist/lib/errors.js.map +1 -1
  66. package/dist/lib/fetch.d.ts +4 -0
  67. package/dist/lib/fetch.d.ts.map +1 -0
  68. package/dist/lib/fetch.js +13 -0
  69. package/dist/lib/fetch.js.map +1 -0
  70. package/dist/lib/format.d.ts +12 -2
  71. package/dist/lib/format.d.ts.map +1 -1
  72. package/dist/lib/format.js +86 -23
  73. package/dist/lib/format.js.map +1 -1
  74. package/dist/lib/retry.d.ts +8 -0
  75. package/dist/lib/retry.d.ts.map +1 -0
  76. package/dist/lib/retry.js +25 -0
  77. package/dist/lib/retry.js.map +1 -0
  78. package/dist/lib/types.d.ts +6 -0
  79. package/dist/lib/types.d.ts.map +1 -0
  80. package/dist/lib/types.js +2 -0
  81. package/dist/lib/types.js.map +1 -0
  82. package/dist/lib/validation.d.ts +0 -12
  83. package/dist/lib/validation.d.ts.map +1 -1
  84. package/dist/lib/validation.js +1 -23
  85. package/dist/lib/validation.js.map +1 -1
  86. package/dist/mcp/handlers/batch.d.ts +13 -0
  87. package/dist/mcp/handlers/batch.d.ts.map +1 -0
  88. package/dist/mcp/handlers/batch.js +33 -0
  89. package/dist/mcp/handlers/batch.js.map +1 -0
  90. package/dist/mcp/handlers/config.d.ts +1 -1
  91. package/dist/mcp/handlers/config.d.ts.map +1 -1
  92. package/dist/mcp/handlers/config.js +11 -12
  93. package/dist/mcp/handlers/config.js.map +1 -1
  94. package/dist/mcp/handlers/index.d.ts +3 -0
  95. package/dist/mcp/handlers/index.d.ts.map +1 -1
  96. package/dist/mcp/handlers/index.js +3 -0
  97. package/dist/mcp/handlers/index.js.map +1 -1
  98. package/dist/mcp/handlers/lending.d.ts +12 -1
  99. package/dist/mcp/handlers/lending.d.ts.map +1 -1
  100. package/dist/mcp/handlers/lending.js +67 -23
  101. package/dist/mcp/handlers/lending.js.map +1 -1
  102. package/dist/mcp/handlers/multi-swap.d.ts +27 -0
  103. package/dist/mcp/handlers/multi-swap.d.ts.map +1 -0
  104. package/dist/mcp/handlers/multi-swap.js +73 -0
  105. package/dist/mcp/handlers/multi-swap.js.map +1 -0
  106. package/dist/mcp/handlers/portfolio.d.ts +7 -0
  107. package/dist/mcp/handlers/portfolio.d.ts.map +1 -0
  108. package/dist/mcp/handlers/portfolio.js +11 -0
  109. package/dist/mcp/handlers/portfolio.js.map +1 -0
  110. package/dist/mcp/handlers/staking.d.ts +13 -1
  111. package/dist/mcp/handlers/staking.d.ts.map +1 -1
  112. package/dist/mcp/handlers/staking.js +18 -5
  113. package/dist/mcp/handlers/staking.js.map +1 -1
  114. package/dist/mcp/handlers/trade.d.ts +1 -0
  115. package/dist/mcp/handlers/trade.d.ts.map +1 -1
  116. package/dist/mcp/handlers/trade.js +27 -13
  117. package/dist/mcp/handlers/trade.js.map +1 -1
  118. package/dist/mcp/handlers/wallet.d.ts +1 -0
  119. package/dist/mcp/handlers/wallet.d.ts.map +1 -1
  120. package/dist/mcp/handlers/wallet.js +24 -5
  121. package/dist/mcp/handlers/wallet.js.map +1 -1
  122. package/dist/mcp/server.d.ts.map +1 -1
  123. package/dist/mcp/server.js +45 -4
  124. package/dist/mcp/server.js.map +1 -1
  125. package/dist/mcp/tools/auth.d.ts +3 -0
  126. package/dist/mcp/tools/auth.d.ts.map +1 -0
  127. package/dist/mcp/tools/auth.js +17 -0
  128. package/dist/mcp/tools/auth.js.map +1 -0
  129. package/dist/mcp/tools/error-handling.d.ts +12 -0
  130. package/dist/mcp/tools/error-handling.d.ts.map +1 -0
  131. package/dist/mcp/tools/error-handling.js +28 -0
  132. package/dist/mcp/tools/error-handling.js.map +1 -0
  133. package/dist/mcp/tools/index.d.ts +11 -0
  134. package/dist/mcp/tools/index.d.ts.map +1 -0
  135. package/dist/mcp/tools/index.js +19 -0
  136. package/dist/mcp/tools/index.js.map +1 -0
  137. package/dist/mcp/tools/lending.d.ts +3 -0
  138. package/dist/mcp/tools/lending.d.ts.map +1 -0
  139. package/dist/mcp/tools/lending.js +71 -0
  140. package/dist/mcp/tools/lending.js.map +1 -0
  141. package/dist/mcp/tools/staking.d.ts +3 -0
  142. package/dist/mcp/tools/staking.d.ts.map +1 -0
  143. package/dist/mcp/tools/staking.js +50 -0
  144. package/dist/mcp/tools/staking.js.map +1 -0
  145. package/dist/mcp/tools/trade.d.ts +3 -0
  146. package/dist/mcp/tools/trade.d.ts.map +1 -0
  147. package/dist/mcp/tools/trade.js +63 -0
  148. package/dist/mcp/tools/trade.js.map +1 -0
  149. package/dist/mcp/tools/wallet.d.ts +3 -0
  150. package/dist/mcp/tools/wallet.d.ts.map +1 -0
  151. package/dist/mcp/tools/wallet.js +27 -0
  152. package/dist/mcp/tools/wallet.js.map +1 -0
  153. package/dist/mcp/tools.d.ts.map +1 -1
  154. package/dist/mcp/tools.js +125 -41
  155. package/dist/mcp/tools.js.map +1 -1
  156. package/dist/services/api/client.d.ts +0 -12
  157. package/dist/services/api/client.d.ts.map +1 -1
  158. package/dist/services/api/client.js +7 -16
  159. package/dist/services/api/client.js.map +1 -1
  160. package/dist/services/auth/session.d.ts +1 -7
  161. package/dist/services/auth/session.d.ts.map +1 -1
  162. package/dist/services/auth/session.js +21 -0
  163. package/dist/services/auth/session.js.map +1 -1
  164. package/dist/services/batch/batch.d.ts +35 -0
  165. package/dist/services/batch/batch.d.ts.map +1 -0
  166. package/dist/services/batch/batch.js +110 -0
  167. package/dist/services/batch/batch.js.map +1 -0
  168. package/dist/services/config/config.d.ts +3 -0
  169. package/dist/services/config/config.d.ts.map +1 -1
  170. package/dist/services/config/config.js +30 -1
  171. package/dist/services/config/config.js.map +1 -1
  172. package/dist/services/fibrous/config.d.ts +4 -0
  173. package/dist/services/fibrous/config.d.ts.map +1 -0
  174. package/dist/services/fibrous/config.js +4 -0
  175. package/dist/services/fibrous/config.js.map +1 -0
  176. package/dist/services/fibrous/health.js +1 -1
  177. package/dist/services/fibrous/health.js.map +1 -1
  178. package/dist/services/fibrous/route.d.ts +15 -6
  179. package/dist/services/fibrous/route.d.ts.map +1 -1
  180. package/dist/services/fibrous/route.js +64 -3
  181. package/dist/services/fibrous/route.js.map +1 -1
  182. package/dist/services/portfolio/portfolio.d.ts +31 -0
  183. package/dist/services/portfolio/portfolio.d.ts.map +1 -0
  184. package/dist/services/portfolio/portfolio.js +104 -0
  185. package/dist/services/portfolio/portfolio.js.map +1 -0
  186. package/dist/services/simulate/simulate.d.ts +10 -0
  187. package/dist/services/simulate/simulate.d.ts.map +1 -0
  188. package/dist/services/simulate/simulate.js +57 -0
  189. package/dist/services/simulate/simulate.js.map +1 -0
  190. package/dist/services/staking/staking.d.ts +9 -30
  191. package/dist/services/staking/staking.d.ts.map +1 -1
  192. package/dist/services/staking/staking.js +44 -52
  193. package/dist/services/staking/staking.js.map +1 -1
  194. package/dist/services/starkzap/client.d.ts +2 -1
  195. package/dist/services/starkzap/client.d.ts.map +1 -1
  196. package/dist/services/starkzap/client.js +39 -21
  197. package/dist/services/starkzap/client.js.map +1 -1
  198. package/dist/services/starkzap/config.d.ts +6 -0
  199. package/dist/services/starkzap/config.d.ts.map +1 -0
  200. package/dist/services/starkzap/config.js +13 -0
  201. package/dist/services/starkzap/config.js.map +1 -0
  202. package/dist/services/tokens/balances.d.ts.map +1 -1
  203. package/dist/services/tokens/balances.js +8 -8
  204. package/dist/services/tokens/balances.js.map +1 -1
  205. package/dist/services/tokens/tokens.d.ts +2 -3
  206. package/dist/services/tokens/tokens.d.ts.map +1 -1
  207. package/dist/services/tokens/tokens.js +3 -8
  208. package/dist/services/tokens/tokens.js.map +1 -1
  209. package/dist/services/vesu/api.d.ts +28 -0
  210. package/dist/services/vesu/api.d.ts.map +1 -0
  211. package/dist/services/vesu/api.js +91 -0
  212. package/dist/services/vesu/api.js.map +1 -0
  213. package/dist/services/vesu/config.d.ts +9 -0
  214. package/dist/services/vesu/config.d.ts.map +1 -0
  215. package/dist/services/vesu/config.js +32 -0
  216. package/dist/services/vesu/config.js.map +1 -0
  217. package/dist/services/vesu/index.d.ts +2 -0
  218. package/dist/services/vesu/index.d.ts.map +1 -1
  219. package/dist/services/vesu/index.js +2 -0
  220. package/dist/services/vesu/index.js.map +1 -1
  221. package/dist/services/vesu/lending.d.ts +9 -5
  222. package/dist/services/vesu/lending.d.ts.map +1 -1
  223. package/dist/services/vesu/lending.js +176 -60
  224. package/dist/services/vesu/lending.js.map +1 -1
  225. package/dist/services/vesu/pools.d.ts +6 -12
  226. package/dist/services/vesu/pools.d.ts.map +1 -1
  227. package/dist/services/vesu/pools.js +11 -31
  228. package/dist/services/vesu/pools.js.map +1 -1
  229. package/package.json +88 -82
  230. package/skills/README.md +59 -0
  231. package/skills/authenticate-wallet/SKILL.md +119 -0
  232. package/skills/balance/SKILL.md +80 -0
  233. package/skills/batch/SKILL.md +118 -0
  234. package/skills/config/SKILL.md +144 -0
  235. package/skills/lending/SKILL.md +209 -0
  236. package/skills/multi-swap/SKILL.md +95 -0
  237. package/skills/portfolio/SKILL.md +82 -0
  238. package/skills/send/SKILL.md +82 -0
  239. package/skills/staking/SKILL.md +188 -0
  240. package/skills/trade/SKILL.md +92 -0
@@ -0,0 +1,28 @@
1
+ export interface VesuAsset {
2
+ address: string;
3
+ name: string;
4
+ symbol: string;
5
+ decimals: number;
6
+ canBeBorrowed: boolean;
7
+ vTokenAddress: string;
8
+ supplyApy: string;
9
+ borrowApr: string;
10
+ }
11
+ export interface VesuPair {
12
+ collateralAddress: string;
13
+ collateralSymbol: string;
14
+ debtAddress: string;
15
+ debtSymbol: string;
16
+ maxLTV: number;
17
+ }
18
+ export interface VesuPoolData {
19
+ address: string;
20
+ name: string;
21
+ protocolVersion: string;
22
+ isDeprecated: boolean;
23
+ assets: VesuAsset[];
24
+ pairs: VesuPair[];
25
+ }
26
+ export declare function fetchPool(address: string): Promise<VesuPoolData>;
27
+ export declare function fetchAllPools(): Promise<VesuPoolData[]>;
28
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/api.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;CAClB;AAmFD,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDtE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAW7D"}
@@ -0,0 +1,91 @@
1
+ import { VESU_API_BASE, V2_POOLS } from "./config.js";
2
+ import { ErrorCode, StarkfiError } from "../../lib/errors.js";
3
+ import { withRetry } from "../../lib/retry.js";
4
+ import { fetchWithTimeout } from "../../lib/fetch.js";
5
+ const CACHE_TTL_MS = 5 * 60 * 1000;
6
+ const VESU_REQUEST_TIMEOUT_MS = 15_000;
7
+ const poolCache = new Map();
8
+ function getCached(address) {
9
+ const entry = poolCache.get(address);
10
+ if (!entry)
11
+ return null;
12
+ if (Date.now() - entry.fetchedAt > CACHE_TTL_MS) {
13
+ poolCache.delete(address);
14
+ return null;
15
+ }
16
+ return entry.data;
17
+ }
18
+ function parseDecimalValue(raw) {
19
+ return Number(BigInt(raw.value)) / 10 ** raw.decimals;
20
+ }
21
+ function formatPercent(decimal) {
22
+ return `${(decimal * 100).toFixed(2)}%`;
23
+ }
24
+ function parseAsset(raw) {
25
+ return {
26
+ address: raw.address,
27
+ name: raw.name,
28
+ symbol: raw.symbol,
29
+ decimals: raw.decimals,
30
+ canBeBorrowed: raw.stats.canBeBorrowed,
31
+ vTokenAddress: raw.vToken.address,
32
+ supplyApy: formatPercent(parseDecimalValue(raw.stats.supplyApy)),
33
+ borrowApr: formatPercent(parseDecimalValue(raw.stats.borrowApr)),
34
+ };
35
+ }
36
+ function parsePair(raw, assetMap) {
37
+ return {
38
+ collateralAddress: raw.collateralAssetAddress,
39
+ collateralSymbol: assetMap.get(raw.collateralAssetAddress) ?? "UNKNOWN",
40
+ debtAddress: raw.debtAssetAddress,
41
+ debtSymbol: assetMap.get(raw.debtAssetAddress) ?? "UNKNOWN",
42
+ maxLTV: parseDecimalValue(raw.maxLTV),
43
+ };
44
+ }
45
+ export async function fetchPool(address) {
46
+ const cached = getCached(address);
47
+ if (cached)
48
+ return cached;
49
+ try {
50
+ const url = `${VESU_API_BASE}/pools/${address}`;
51
+ const res = await withRetry(() => fetchWithTimeout(url, { timeoutMs: VESU_REQUEST_TIMEOUT_MS }), { retryOnCodes: [ErrorCode.NETWORK_ERROR] });
52
+ if (!res.ok) {
53
+ throw new StarkfiError(ErrorCode.NETWORK_ERROR, `Vesu API returned ${res.status} for pool ${address}`);
54
+ }
55
+ const json = (await res.json());
56
+ const raw = json.data;
57
+ const assetMap = new Map();
58
+ for (const a of raw.assets) {
59
+ assetMap.set(a.address, a.symbol);
60
+ }
61
+ const pool = {
62
+ address: raw.id,
63
+ name: raw.name,
64
+ protocolVersion: raw.protocolVersion,
65
+ isDeprecated: raw.isDeprecated,
66
+ assets: raw.assets.map(parseAsset),
67
+ pairs: raw.pairs.map((p) => parsePair(p, assetMap)),
68
+ };
69
+ poolCache.set(address, { data: pool, fetchedAt: Date.now() });
70
+ return pool;
71
+ }
72
+ catch (error) {
73
+ if (error instanceof StarkfiError)
74
+ throw error;
75
+ if (error instanceof DOMException && error.name === "AbortError") {
76
+ throw new StarkfiError(ErrorCode.NETWORK_ERROR, `Vesu API request timed out for pool ${address}`);
77
+ }
78
+ throw new StarkfiError(ErrorCode.NETWORK_ERROR, `Failed to fetch pool data from Vesu API: ${error instanceof Error ? error.message : String(error)}`);
79
+ }
80
+ }
81
+ export async function fetchAllPools() {
82
+ const results = await Promise.allSettled(V2_POOLS.map((p) => fetchPool(p.address)));
83
+ const pools = [];
84
+ for (const result of results) {
85
+ if (result.status === "fulfilled") {
86
+ pools.push(result.value);
87
+ }
88
+ }
89
+ return pools;
90
+ }
91
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/services/vesu/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare const VESU_API_BASE = "https://api.vesu.xyz";
2
+ export declare const POOL_FACTORY_ADDRESS = "0x03760f903a37948f97302736f89ce30290e45f441559325026842b7a6fb388c0";
3
+ export interface PoolEntry {
4
+ name: string;
5
+ address: string;
6
+ }
7
+ export declare const V2_POOLS: readonly PoolEntry[];
8
+ export declare const DENOMINATION_ASSETS = 1;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,yBAAyB,CAAC;AAEpD,eAAO,MAAM,oBAAoB,uEACoC,CAAC;AAEtE,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,QAAQ,EAAE,SAAS,SAAS,EAyB/B,CAAC;AAGX,eAAO,MAAM,mBAAmB,IAAI,CAAC"}
@@ -0,0 +1,32 @@
1
+ export const VESU_API_BASE = "https://api.vesu.xyz";
2
+ export const POOL_FACTORY_ADDRESS = "0x03760f903a37948f97302736f89ce30290e45f441559325026842b7a6fb388c0";
3
+ // Pool addresses: https://docs.vesu.xyz/developers/contract-addresses
4
+ export const V2_POOLS = [
5
+ {
6
+ name: "Prime",
7
+ address: "0x0451fe483d5921a2919ddd81d0de6696669bccdacd859f72a4fba7656b97c3b5",
8
+ },
9
+ {
10
+ name: "Re7 USDC Core",
11
+ address: "0x03976cac265a12609934089004df458ea29c776d77da423c96dc761d09d24124",
12
+ },
13
+ {
14
+ name: "Re7 USDC Prime",
15
+ address: "0x02eef0c13b10b487ea5916b54c0a7f98ec43fb3048f60fdeedaf5b08f6f88aaf",
16
+ },
17
+ {
18
+ name: "Re7 USDC Frontier",
19
+ address: "0x05c03e7e0ccfe79c634782388eb1e6ed4e8e2a013ab0fcc055140805e46261bd",
20
+ },
21
+ {
22
+ name: "Re7 xBTC",
23
+ address: "0x03a8416bf20d036df5b1cf3447630a2e1cb04685f6b0c3a70ed7fb1473548ecf",
24
+ },
25
+ {
26
+ name: "Re7 USDC Stable Core",
27
+ address: "0x073702fce24aba36da1eac539bd4bae62d4d6a76747b7cdd3e016da754d7a135",
28
+ },
29
+ ];
30
+ // AmountDenomination enum values for calldata encoding.
31
+ export const DENOMINATION_ASSETS = 1;
32
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/services/vesu/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAChC,oEAAoE,CAAC;AAOtE,sEAAsE;AACtE,MAAM,CAAC,MAAM,QAAQ,GAAyB;IAC7C;QACC,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,oEAAoE;KAC7E;IACD;QACC,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,oEAAoE;KAC7E;IACD;QACC,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,oEAAoE;KAC7E;IACD;QACC,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,oEAAoE;KAC7E;IACD;QACC,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,oEAAoE;KAC7E;IACD;QACC,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,oEAAoE;KAC7E;CACQ,CAAC;AAEX,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC"}
@@ -1,3 +1,5 @@
1
+ export * from "./config.js";
2
+ export * from "./api.js";
1
3
  export * from "./pools.js";
2
4
  export * from "./lending.js";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -1,3 +1,5 @@
1
+ export * from "./config.js";
2
+ export * from "./api.js";
1
3
  export * from "./pools.js";
2
4
  export * from "./lending.js";
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/vesu/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/vesu/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -1,17 +1,21 @@
1
+ import { type Token } from "starkzap";
1
2
  import type { StarkZapWallet } from "../starkzap/client.js";
3
+ import type { TxResult } from "../../lib/types.js";
2
4
  export interface LendingPosition {
3
5
  collateralAsset: string;
4
6
  debtAsset: string;
5
7
  collateralAmount: string;
6
8
  debtAmount: string;
9
+ healthFactor?: number;
10
+ riskLevel?: "SAFE" | "WARNING" | "DANGER" | "UNKNOWN";
7
11
  }
8
- export interface TxResult {
9
- hash: string;
10
- explorerUrl: string;
11
- }
12
+ export declare function splitU256(value: bigint): [string, string];
12
13
  export declare function supply(wallet: StarkZapWallet, poolAddress: string, tokenSymbol: string, amount: string): Promise<TxResult>;
13
14
  export declare function withdraw(wallet: StarkZapWallet, poolAddress: string, tokenSymbol: string, amount: string): Promise<TxResult>;
14
- export declare function borrow(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, collateralAmount: string, debtTokenSymbol: string, debtAmount: string): Promise<TxResult>;
15
+ export declare function borrow(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, collateralAmount: string, debtTokenSymbol: string, debtAmount: string, useSupplied?: boolean): Promise<TxResult>;
15
16
  export declare function repay(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, debtTokenSymbol: string, repayAmount: string): Promise<TxResult>;
17
+ export declare function closePosition(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, debtTokenSymbol: string): Promise<TxResult>;
16
18
  export declare function getPosition(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, debtTokenSymbol: string): Promise<LendingPosition | null>;
19
+ export declare function getVTokenAddress(wallet: StarkZapWallet, poolAddress: string, token: Token): Promise<string>;
20
+ export declare function getSuppliedBalance(wallet: StarkZapWallet, poolAddress: string, tokenSymbol: string): Promise<string | null>;
17
21
  //# sourceMappingURL=lending.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/lending.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAsB,MAAM,CAC3B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAGD,wBAAsB,QAAQ,CAC7B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAGD,wBAAsB,MAAM,CAC3B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CA4BnB;AAGD,wBAAsB,KAAK,CAC1B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CA2BnB;AAGD,wBAAsB,WAAW,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAiCjC"}
1
+ {"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/lending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;CACtD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAIzD;AAYD,wBAAsB,MAAM,CAC3B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CA+BnB;AAED,wBAAsB,QAAQ,CAC7B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAED,wBAAsB,MAAM,CAC3B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,UAAQ,GACjB,OAAO,CAAC,QAAQ,CAAC,CA4DnB;AAED,wBAAsB,KAAK,CAC1B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CA2BnB;AAED,wBAAsB,aAAa,CAClC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,QAAQ,CAAC,CAmCnB;AAED,wBAAsB,WAAW,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAyEjC;AAED,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,GACV,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB"}
@@ -1,47 +1,48 @@
1
1
  import { Amount, fromAddress } from "starkzap";
2
2
  import { resolveToken } from "../tokens/tokens.js";
3
3
  import { ErrorCode, StarkfiError } from "../../lib/errors.js";
4
- // AmountDenomination::Assets = 1
5
- const DENOMINATION_ASSETS = 1;
6
- const POOL_FACTORY_ADDRESS = "0x05d1b22e63dc47c8b3b7d19a38e8fb3977069099f8dabb72bd0e5ff1f0b18e6c";
7
- // Vesu Amount struct: { denomination: enum, value: i257 }
8
- // i257 (mag: u256(low128, high128), sign: bool) → 4 felts total.
4
+ import { POOL_FACTORY_ADDRESS, DENOMINATION_ASSETS } from "./config.js";
5
+ import { getTokenUsdPrice } from "../fibrous/route.js";
6
+ import { fetchPool } from "./api.js";
7
+ export function splitU256(value) {
8
+ const low = value & ((1n << 128n) - 1n);
9
+ const high = value >> 128n;
10
+ return [`0x${low.toString(16)}`, `0x${high.toString(16)}`];
11
+ }
9
12
  function encodeVesuAmount(denomination, value) {
10
13
  const isNegative = value < 0n;
11
14
  const mag = isNegative ? -value : value;
12
- const low = mag & ((1n << 128n) - 1n);
13
- const high = mag >> 128n;
14
- return [
15
- `0x${denomination.toString(16)}`,
16
- `0x${low.toString(16)}`,
17
- `0x${high.toString(16)}`,
18
- isNegative ? "0x1" : "0x0",
19
- ];
15
+ return [`0x${denomination.toString(16)}`, ...splitU256(mag), isNegative ? "0x1" : "0x0"];
20
16
  }
21
17
  function encodeZeroAmount() {
22
18
  return encodeVesuAmount(DENOMINATION_ASSETS, 0n);
23
19
  }
24
- // Supply via vToken ERC-4626: approve + vToken.deposit(assets, receiver)
25
20
  export async function supply(wallet, poolAddress, tokenSymbol, amount) {
26
- const token = await resolveToken(tokenSymbol);
21
+ const token = resolveToken(tokenSymbol);
27
22
  const parsedAmount = Amount.parse(amount, token);
28
- const vTokenAddress = await getVTokenAddress(wallet, poolAddress, token);
29
23
  const userAddress = wallet.address.toString();
24
+ const usdPrice = await getTokenUsdPrice(token);
25
+ if (usdPrice > 0) {
26
+ const usdValue = parseFloat(amount) * usdPrice;
27
+ if (usdValue < 10.0) {
28
+ throw new StarkfiError(ErrorCode.LENDING_FAILED, `Amount is too small (dust limit). Minimum equivalent of ~$10 is required by Vesu. Current value: ~$${usdValue.toFixed(2)}`);
29
+ }
30
+ }
31
+ const vTokenAddress = await getVTokenAddress(wallet, poolAddress, token);
30
32
  const tx = await wallet
31
33
  .tx()
32
34
  .approve(token, fromAddress(vTokenAddress), parsedAmount)
33
35
  .add({
34
36
  contractAddress: fromAddress(vTokenAddress),
35
37
  entrypoint: "deposit",
36
- calldata: [parsedAmount.toBase().toString(), "0", userAddress],
38
+ calldata: [...splitU256(parsedAmount.toBase()), userAddress],
37
39
  })
38
40
  .send();
39
41
  await tx.wait();
40
42
  return { hash: tx.hash, explorerUrl: tx.explorerUrl };
41
43
  }
42
- // Withdraw via vToken ERC-4626: vToken.withdraw(assets, receiver, owner)
43
44
  export async function withdraw(wallet, poolAddress, tokenSymbol, amount) {
44
- const token = await resolveToken(tokenSymbol);
45
+ const token = resolveToken(tokenSymbol);
45
46
  const parsedAmount = Amount.parse(amount, token);
46
47
  const vTokenAddress = await getVTokenAddress(wallet, poolAddress, token);
47
48
  const userAddress = wallet.address.toString();
@@ -50,19 +51,32 @@ export async function withdraw(wallet, poolAddress, tokenSymbol, amount) {
50
51
  .add({
51
52
  contractAddress: fromAddress(vTokenAddress),
52
53
  entrypoint: "withdraw",
53
- calldata: [parsedAmount.toBase().toString(), "0", userAddress, userAddress],
54
+ calldata: [...splitU256(parsedAmount.toBase()), userAddress, userAddress],
54
55
  })
55
56
  .send();
56
57
  await tx.wait();
57
58
  return { hash: tx.hash, explorerUrl: tx.explorerUrl };
58
59
  }
59
- // Borrow via pool.manage_position: approve collateral + positive collateral & positive debt.
60
- export async function borrow(wallet, poolAddress, collateralTokenSymbol, collateralAmount, debtTokenSymbol, debtAmount) {
61
- const collateralToken = await resolveToken(collateralTokenSymbol);
62
- const debtToken = await resolveToken(debtTokenSymbol);
60
+ export async function borrow(wallet, poolAddress, collateralTokenSymbol, collateralAmount, debtTokenSymbol, debtAmount, useSupplied = false) {
61
+ const collateralToken = resolveToken(collateralTokenSymbol);
62
+ const debtToken = resolveToken(debtTokenSymbol);
63
63
  const parsedCollateral = Amount.parse(collateralAmount, collateralToken);
64
64
  const parsedDebt = Amount.parse(debtAmount, debtToken);
65
65
  const userAddress = wallet.address.toString();
66
+ const collateralUsdPrice = await getTokenUsdPrice(collateralToken);
67
+ if (collateralUsdPrice > 0) {
68
+ const collateralUsdValue = parseFloat(collateralAmount) * collateralUsdPrice;
69
+ if (collateralUsdValue < 10.0) {
70
+ throw new StarkfiError(ErrorCode.LENDING_FAILED, `dusty-collateral-balance: Collateral amount is too small. Minimum equivalent of ~$10 is required by Vesu. Current value: ~$${collateralUsdValue.toFixed(2)}`);
71
+ }
72
+ }
73
+ const debtUsdPrice = await getTokenUsdPrice(debtToken);
74
+ if (debtUsdPrice > 0) {
75
+ const debtUsdValue = parseFloat(debtAmount) * debtUsdPrice;
76
+ if (debtUsdValue < 10.0) {
77
+ throw new StarkfiError(ErrorCode.LENDING_FAILED, `dusty-debt-balance: Borrow amount is too small. Minimum equivalent of ~$10 is required by Vesu. Current value: ~$${debtUsdValue.toFixed(2)}`);
78
+ }
79
+ }
66
80
  const calldata = [
67
81
  collateralToken.address.toString(),
68
82
  debtToken.address.toString(),
@@ -70,22 +84,29 @@ export async function borrow(wallet, poolAddress, collateralTokenSymbol, collate
70
84
  ...encodeVesuAmount(DENOMINATION_ASSETS, parsedCollateral.toBase()),
71
85
  ...encodeVesuAmount(DENOMINATION_ASSETS, parsedDebt.toBase()),
72
86
  ];
73
- const tx = await wallet
74
- .tx()
87
+ let txBuilder = wallet.tx();
88
+ if (useSupplied) {
89
+ const vTokenAddress = await getVTokenAddress(wallet, poolAddress, collateralToken);
90
+ txBuilder = txBuilder.add({
91
+ contractAddress: fromAddress(vTokenAddress),
92
+ entrypoint: "withdraw",
93
+ calldata: [...splitU256(parsedCollateral.toBase()), userAddress, userAddress],
94
+ });
95
+ }
96
+ const tx = await txBuilder
75
97
  .approve(collateralToken, fromAddress(poolAddress), parsedCollateral)
76
98
  .add({
77
99
  contractAddress: fromAddress(poolAddress),
78
- entrypoint: "manage_position",
100
+ entrypoint: "modify_position",
79
101
  calldata,
80
102
  })
81
103
  .send();
82
104
  await tx.wait();
83
105
  return { hash: tx.hash, explorerUrl: tx.explorerUrl };
84
106
  }
85
- // Repay via pool.manage_position: approve debt token + zero collateral & negative debt.
86
107
  export async function repay(wallet, poolAddress, collateralTokenSymbol, debtTokenSymbol, repayAmount) {
87
- const collateralToken = await resolveToken(collateralTokenSymbol);
88
- const debtToken = await resolveToken(debtTokenSymbol);
108
+ const collateralToken = resolveToken(collateralTokenSymbol);
109
+ const debtToken = resolveToken(debtTokenSymbol);
89
110
  const parsedRepay = Amount.parse(repayAmount, debtToken);
90
111
  const userAddress = wallet.address.toString();
91
112
  const calldata = [
@@ -100,48 +121,114 @@ export async function repay(wallet, poolAddress, collateralTokenSymbol, debtToke
100
121
  .approve(debtToken, fromAddress(poolAddress), parsedRepay)
101
122
  .add({
102
123
  contractAddress: fromAddress(poolAddress),
103
- entrypoint: "manage_position",
124
+ entrypoint: "modify_position",
125
+ calldata,
126
+ })
127
+ .send();
128
+ await tx.wait();
129
+ return { hash: tx.hash, explorerUrl: tx.explorerUrl };
130
+ }
131
+ export async function closePosition(wallet, poolAddress, collateralTokenSymbol, debtTokenSymbol) {
132
+ const position = await getPosition(wallet, poolAddress, collateralTokenSymbol, debtTokenSymbol);
133
+ if (!position) {
134
+ throw new StarkfiError(ErrorCode.LENDING_FAILED, "No active position found to close.");
135
+ }
136
+ const collateralToken = resolveToken(collateralTokenSymbol);
137
+ const debtToken = resolveToken(debtTokenSymbol);
138
+ const parsedCollateral = Amount.parse(position.collateralAmount, collateralToken);
139
+ const parsedDebt = Amount.parse(position.debtAmount, debtToken);
140
+ const userAddress = wallet.address.toString();
141
+ const calldata = [
142
+ collateralToken.address.toString(),
143
+ debtToken.address.toString(),
144
+ userAddress,
145
+ ...encodeVesuAmount(DENOMINATION_ASSETS, -parsedCollateral.toBase()),
146
+ ...encodeVesuAmount(DENOMINATION_ASSETS, -parsedDebt.toBase()),
147
+ ];
148
+ const tx = await wallet
149
+ .tx()
150
+ .approve(debtToken, fromAddress(poolAddress), parsedDebt)
151
+ .add({
152
+ contractAddress: fromAddress(poolAddress),
153
+ entrypoint: "modify_position",
104
154
  calldata,
105
155
  })
106
156
  .send();
107
157
  await tx.wait();
108
158
  return { hash: tx.hash, explorerUrl: tx.explorerUrl };
109
159
  }
110
- // Query pool.position(collateral, debt, user) → extract last 4 felts as u256 pair.
111
160
  export async function getPosition(wallet, poolAddress, collateralTokenSymbol, debtTokenSymbol) {
112
- const collateralToken = await resolveToken(collateralTokenSymbol);
113
- const debtToken = await resolveToken(debtTokenSymbol);
161
+ const collateralToken = resolveToken(collateralTokenSymbol);
162
+ const debtToken = resolveToken(debtTokenSymbol);
114
163
  const userAddress = wallet.address.toString();
115
- const result = await wallet.callContract({
116
- contractAddress: poolAddress,
117
- entrypoint: "position",
118
- calldata: [collateralToken.address.toString(), debtToken.address.toString(), userAddress],
119
- });
120
- const feltCount = result.length;
121
- if (feltCount < 4)
122
- return null;
123
- const collLow = BigInt(result[feltCount - 4]);
124
- const collHigh = BigInt(result[feltCount - 3]);
125
- const debtLow = BigInt(result[feltCount - 2]);
126
- const debtHigh = BigInt(result[feltCount - 1]);
127
- const collateralRaw = collLow + (collHigh << 128n);
128
- const debtRaw = debtLow + (debtHigh << 128n);
129
- if (collateralRaw === 0n && debtRaw === 0n)
164
+ try {
165
+ const result = await wallet.callContract({
166
+ contractAddress: poolAddress,
167
+ entrypoint: "position",
168
+ calldata: [
169
+ collateralToken.address.toString(),
170
+ debtToken.address.toString(),
171
+ userAddress,
172
+ ],
173
+ });
174
+ if (result.length < 8)
175
+ return null;
176
+ const collateralRaw = BigInt(result[4]) + (BigInt(result[5]) << 128n);
177
+ const debtRaw = BigInt(result[6]) + (BigInt(result[7]) << 128n);
178
+ if (collateralRaw === 0n && debtRaw === 0n)
179
+ return null;
180
+ const collFormatted = Amount.fromRaw(collateralRaw, collateralToken).toFormatted(true);
181
+ const debtFormatted = Amount.fromRaw(debtRaw, debtToken).toFormatted(true);
182
+ let healthFactor;
183
+ let riskLevel = "UNKNOWN";
184
+ try {
185
+ const poolData = await fetchPool(poolAddress);
186
+ const pair = poolData.pairs.find((p) => p.collateralAddress === collateralToken.address.toString() &&
187
+ p.debtAddress === debtToken.address.toString());
188
+ if (pair) {
189
+ const collUsdPrice = await getTokenUsdPrice(collateralToken);
190
+ const debtUsdPrice = await getTokenUsdPrice(debtToken);
191
+ if (collUsdPrice > 0 && debtUsdPrice > 0) {
192
+ const collUsdValue = parseFloat(collFormatted) * collUsdPrice;
193
+ const debtUsdValue = parseFloat(debtFormatted) * debtUsdPrice;
194
+ const maxBorrowUsd = collUsdValue * pair.maxLTV;
195
+ if (debtUsdValue > 0) {
196
+ healthFactor = maxBorrowUsd / debtUsdValue;
197
+ if (healthFactor > 1.5)
198
+ riskLevel = "SAFE";
199
+ else if (healthFactor > 1.1)
200
+ riskLevel = "WARNING";
201
+ else
202
+ riskLevel = "DANGER";
203
+ }
204
+ else {
205
+ // No debt → treat as infinite health; cap at a sentinel for JSON safety
206
+ healthFactor = 9999;
207
+ riskLevel = "SAFE";
208
+ }
209
+ }
210
+ }
211
+ }
212
+ catch {
213
+ // Ignore if API or pricing fails, return basic position
214
+ }
215
+ return {
216
+ collateralAsset: collateralTokenSymbol.toUpperCase(),
217
+ debtAsset: debtTokenSymbol.toUpperCase(),
218
+ collateralAmount: collFormatted,
219
+ debtAmount: debtFormatted,
220
+ healthFactor,
221
+ riskLevel,
222
+ };
223
+ }
224
+ catch {
130
225
  return null;
131
- const collFormatted = Amount.fromRaw(collateralRaw, collateralToken).toFormatted(true);
132
- const debtFormatted = Amount.fromRaw(debtRaw, debtToken).toFormatted(true);
133
- return {
134
- collateralAsset: collateralTokenSymbol.toUpperCase(),
135
- debtAsset: debtTokenSymbol.toUpperCase(),
136
- collateralAmount: collFormatted,
137
- debtAmount: debtFormatted,
138
- };
226
+ }
139
227
  }
140
- // Queries PoolFactory for vToken address of a pool+asset pair.
141
- async function getVTokenAddress(wallet, poolAddress, token) {
228
+ export async function getVTokenAddress(wallet, poolAddress, token) {
142
229
  const result = await wallet.callContract({
143
230
  contractAddress: POOL_FACTORY_ADDRESS,
144
- entrypoint: "v_token",
231
+ entrypoint: "v_token_for_asset",
145
232
  calldata: [poolAddress, token.address.toString()],
146
233
  });
147
234
  if (!result || result.length === 0 || result[0] === "0x0") {
@@ -150,4 +237,33 @@ async function getVTokenAddress(wallet, poolAddress, token) {
150
237
  }
151
238
  return result[0];
152
239
  }
240
+ export async function getSuppliedBalance(wallet, poolAddress, tokenSymbol) {
241
+ const token = resolveToken(tokenSymbol);
242
+ const userAddress = wallet.address.toString();
243
+ try {
244
+ const vTokenAddress = await getVTokenAddress(wallet, poolAddress, token);
245
+ const balResult = await wallet.callContract({
246
+ contractAddress: vTokenAddress,
247
+ entrypoint: "balance_of",
248
+ calldata: [userAddress],
249
+ });
250
+ if (!balResult || balResult.length === 0)
251
+ return null;
252
+ const sharesRaw = BigInt(balResult[0]) + (BigInt(balResult[1] || "0x0") << 128n);
253
+ if (sharesRaw === 0n)
254
+ return "0";
255
+ const convertResult = await wallet.callContract({
256
+ contractAddress: vTokenAddress,
257
+ entrypoint: "convert_to_assets",
258
+ calldata: [...splitU256(sharesRaw)],
259
+ });
260
+ if (!convertResult || convertResult.length === 0)
261
+ return null;
262
+ const assetsRaw = BigInt(convertResult[0]) + (BigInt(convertResult[1] || "0x0") << 128n);
263
+ return Amount.fromRaw(assetsRaw, token).toFormatted(true);
264
+ }
265
+ catch {
266
+ return null;
267
+ }
268
+ }
153
269
  //# sourceMappingURL=lending.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lending.js","sourceRoot":"","sources":["../../../src/services/vesu/lending.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lending.js","sourceRoot":"","sources":["../../../src/services/vesu/lending.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,7 @@
1
- export interface VesuPool {
2
- name: string;
3
- poolContract: string;
4
- pairs: {
5
- collateral: string;
6
- debt: string;
7
- }[];
8
- }
9
- type Network = "mainnet" | "sepolia";
10
- export declare function getVesuPools(network: Network): VesuPool[];
11
- export declare function findVesuPool(query: string, network: Network): VesuPool | null;
12
- export {};
1
+ import { type PoolEntry } from "./config.js";
2
+ import { type VesuPoolData } from "./api.js";
3
+ import type { Network } from "../../lib/types.js";
4
+ export type { VesuPoolData } from "./api.js";
5
+ export declare function getVesuPools(network: Network): Promise<VesuPoolData[]>;
6
+ export declare function findPoolEntry(query: string, network: Network): PoolEntry | null;
13
7
  //# sourceMappingURL=pools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/pools.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9C;AA2BD,KAAK,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAErC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,CAEzD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAS7E"}
1
+ {"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/pools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAG5E;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAS/E"}