starkfi 0.1.0 → 0.2.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 (195) hide show
  1. package/MCP.md +70 -0
  2. package/README.md +120 -58
  3. package/dist/commands/auth/login.js +2 -2
  4. package/dist/commands/auth/login.js.map +1 -1
  5. package/dist/commands/auth/verify.d.ts.map +1 -1
  6. package/dist/commands/auth/verify.js +2 -2
  7. package/dist/commands/auth/verify.js.map +1 -1
  8. package/dist/commands/batch/batch.d.ts +3 -0
  9. package/dist/commands/batch/batch.d.ts.map +1 -0
  10. package/dist/commands/batch/batch.js +143 -0
  11. package/dist/commands/batch/batch.js.map +1 -0
  12. package/dist/commands/chain/tx-status.js +2 -2
  13. package/dist/commands/chain/tx-status.js.map +1 -1
  14. package/dist/commands/config/config.d.ts.map +1 -1
  15. package/dist/commands/config/config.js +14 -31
  16. package/dist/commands/config/config.js.map +1 -1
  17. package/dist/commands/lending/lending.d.ts +1 -0
  18. package/dist/commands/lending/lending.d.ts.map +1 -1
  19. package/dist/commands/lending/lending.js +187 -48
  20. package/dist/commands/lending/lending.js.map +1 -1
  21. package/dist/commands/portfolio/portfolio.d.ts +3 -0
  22. package/dist/commands/portfolio/portfolio.d.ts.map +1 -0
  23. package/dist/commands/portfolio/portfolio.js +76 -0
  24. package/dist/commands/portfolio/portfolio.js.map +1 -0
  25. package/dist/commands/staking/staking.d.ts +1 -1
  26. package/dist/commands/staking/staking.d.ts.map +1 -1
  27. package/dist/commands/staking/staking.js +142 -61
  28. package/dist/commands/staking/staking.js.map +1 -1
  29. package/dist/commands/trade/multi-swap.d.ts +3 -0
  30. package/dist/commands/trade/multi-swap.d.ts.map +1 -0
  31. package/dist/commands/trade/multi-swap.js +140 -0
  32. package/dist/commands/trade/multi-swap.js.map +1 -0
  33. package/dist/commands/trade/status.js +2 -2
  34. package/dist/commands/trade/status.js.map +1 -1
  35. package/dist/commands/trade/swap.d.ts.map +1 -1
  36. package/dist/commands/trade/swap.js +45 -10
  37. package/dist/commands/trade/swap.js.map +1 -1
  38. package/dist/commands/wallet/balance.d.ts.map +1 -1
  39. package/dist/commands/wallet/balance.js +19 -2
  40. package/dist/commands/wallet/balance.js.map +1 -1
  41. package/dist/commands/wallet/deploy.d.ts.map +1 -1
  42. package/dist/commands/wallet/deploy.js +2 -1
  43. package/dist/commands/wallet/deploy.js.map +1 -1
  44. package/dist/commands/wallet/send.d.ts.map +1 -1
  45. package/dist/commands/wallet/send.js +45 -8
  46. package/dist/commands/wallet/send.js.map +1 -1
  47. package/dist/index.js +22 -7
  48. package/dist/index.js.map +1 -1
  49. package/dist/lib/banner.d.ts +6 -0
  50. package/dist/lib/banner.d.ts.map +1 -0
  51. package/dist/lib/banner.js +78 -0
  52. package/dist/lib/banner.js.map +1 -0
  53. package/dist/lib/config.d.ts +0 -11
  54. package/dist/lib/config.d.ts.map +1 -1
  55. package/dist/lib/config.js +0 -20
  56. package/dist/lib/config.js.map +1 -1
  57. package/dist/lib/errors.d.ts +2 -0
  58. package/dist/lib/errors.d.ts.map +1 -1
  59. package/dist/lib/errors.js +2 -0
  60. package/dist/lib/errors.js.map +1 -1
  61. package/dist/lib/format.d.ts +43 -2
  62. package/dist/lib/format.d.ts.map +1 -1
  63. package/dist/lib/format.js +51 -5
  64. package/dist/lib/format.js.map +1 -1
  65. package/dist/lib/retry.d.ts +15 -0
  66. package/dist/lib/retry.d.ts.map +1 -0
  67. package/dist/lib/retry.js +29 -0
  68. package/dist/lib/retry.js.map +1 -0
  69. package/dist/lib/validation.d.ts +0 -12
  70. package/dist/lib/validation.d.ts.map +1 -1
  71. package/dist/lib/validation.js +1 -23
  72. package/dist/lib/validation.js.map +1 -1
  73. package/dist/mcp/handlers/batch.d.ts +13 -0
  74. package/dist/mcp/handlers/batch.d.ts.map +1 -0
  75. package/dist/mcp/handlers/batch.js +33 -0
  76. package/dist/mcp/handlers/batch.js.map +1 -0
  77. package/dist/mcp/handlers/config.d.ts +1 -1
  78. package/dist/mcp/handlers/config.d.ts.map +1 -1
  79. package/dist/mcp/handlers/config.js +11 -12
  80. package/dist/mcp/handlers/config.js.map +1 -1
  81. package/dist/mcp/handlers/index.d.ts +3 -0
  82. package/dist/mcp/handlers/index.d.ts.map +1 -1
  83. package/dist/mcp/handlers/index.js +3 -0
  84. package/dist/mcp/handlers/index.js.map +1 -1
  85. package/dist/mcp/handlers/lending.d.ts +12 -1
  86. package/dist/mcp/handlers/lending.d.ts.map +1 -1
  87. package/dist/mcp/handlers/lending.js +67 -23
  88. package/dist/mcp/handlers/lending.js.map +1 -1
  89. package/dist/mcp/handlers/multi-swap.d.ts +27 -0
  90. package/dist/mcp/handlers/multi-swap.d.ts.map +1 -0
  91. package/dist/mcp/handlers/multi-swap.js +73 -0
  92. package/dist/mcp/handlers/multi-swap.js.map +1 -0
  93. package/dist/mcp/handlers/portfolio.d.ts +7 -0
  94. package/dist/mcp/handlers/portfolio.d.ts.map +1 -0
  95. package/dist/mcp/handlers/portfolio.js +11 -0
  96. package/dist/mcp/handlers/portfolio.js.map +1 -0
  97. package/dist/mcp/handlers/staking.d.ts +13 -1
  98. package/dist/mcp/handlers/staking.d.ts.map +1 -1
  99. package/dist/mcp/handlers/staking.js +18 -5
  100. package/dist/mcp/handlers/staking.js.map +1 -1
  101. package/dist/mcp/handlers/trade.d.ts +1 -0
  102. package/dist/mcp/handlers/trade.d.ts.map +1 -1
  103. package/dist/mcp/handlers/trade.js +23 -9
  104. package/dist/mcp/handlers/trade.js.map +1 -1
  105. package/dist/mcp/handlers/wallet.d.ts +1 -0
  106. package/dist/mcp/handlers/wallet.d.ts.map +1 -1
  107. package/dist/mcp/handlers/wallet.js +16 -1
  108. package/dist/mcp/handlers/wallet.js.map +1 -1
  109. package/dist/mcp/tools.d.ts.map +1 -1
  110. package/dist/mcp/tools.js +102 -33
  111. package/dist/mcp/tools.js.map +1 -1
  112. package/dist/services/api/client.d.ts +0 -12
  113. package/dist/services/api/client.d.ts.map +1 -1
  114. package/dist/services/api/client.js +3 -8
  115. package/dist/services/api/client.js.map +1 -1
  116. package/dist/services/auth/session.d.ts +1 -7
  117. package/dist/services/auth/session.d.ts.map +1 -1
  118. package/dist/services/auth/session.js +20 -0
  119. package/dist/services/auth/session.js.map +1 -1
  120. package/dist/services/batch/batch.d.ts +36 -0
  121. package/dist/services/batch/batch.d.ts.map +1 -0
  122. package/dist/services/batch/batch.js +111 -0
  123. package/dist/services/batch/batch.js.map +1 -0
  124. package/dist/services/config/config.d.ts +4 -0
  125. package/dist/services/config/config.d.ts.map +1 -1
  126. package/dist/services/config/config.js +31 -1
  127. package/dist/services/config/config.js.map +1 -1
  128. package/dist/services/fibrous/config.d.ts +4 -0
  129. package/dist/services/fibrous/config.d.ts.map +1 -0
  130. package/dist/services/fibrous/config.js +4 -0
  131. package/dist/services/fibrous/config.js.map +1 -0
  132. package/dist/services/fibrous/health.js +1 -1
  133. package/dist/services/fibrous/health.js.map +1 -1
  134. package/dist/services/fibrous/route.d.ts +19 -6
  135. package/dist/services/fibrous/route.d.ts.map +1 -1
  136. package/dist/services/fibrous/route.js +64 -3
  137. package/dist/services/fibrous/route.js.map +1 -1
  138. package/dist/services/portfolio/portfolio.d.ts +35 -0
  139. package/dist/services/portfolio/portfolio.d.ts.map +1 -0
  140. package/dist/services/portfolio/portfolio.js +106 -0
  141. package/dist/services/portfolio/portfolio.js.map +1 -0
  142. package/dist/services/simulate/simulate.d.ts +18 -0
  143. package/dist/services/simulate/simulate.d.ts.map +1 -0
  144. package/dist/services/simulate/simulate.js +61 -0
  145. package/dist/services/simulate/simulate.js.map +1 -0
  146. package/dist/services/staking/staking.d.ts +5 -13
  147. package/dist/services/staking/staking.d.ts.map +1 -1
  148. package/dist/services/staking/staking.js +44 -52
  149. package/dist/services/staking/staking.js.map +1 -1
  150. package/dist/services/starkzap/client.d.ts.map +1 -1
  151. package/dist/services/starkzap/client.js +38 -18
  152. package/dist/services/starkzap/client.js.map +1 -1
  153. package/dist/services/starkzap/config.d.ts +6 -0
  154. package/dist/services/starkzap/config.d.ts.map +1 -0
  155. package/dist/services/starkzap/config.js +13 -0
  156. package/dist/services/starkzap/config.js.map +1 -0
  157. package/dist/services/tokens/balances.d.ts.map +1 -1
  158. package/dist/services/tokens/balances.js +26 -14
  159. package/dist/services/tokens/balances.js.map +1 -1
  160. package/dist/services/tokens/tokens.d.ts +2 -3
  161. package/dist/services/tokens/tokens.d.ts.map +1 -1
  162. package/dist/services/tokens/tokens.js +3 -8
  163. package/dist/services/tokens/tokens.js.map +1 -1
  164. package/dist/services/vesu/api.d.ts +28 -0
  165. package/dist/services/vesu/api.d.ts.map +1 -0
  166. package/dist/services/vesu/api.js +97 -0
  167. package/dist/services/vesu/api.js.map +1 -0
  168. package/dist/services/vesu/config.d.ts +9 -0
  169. package/dist/services/vesu/config.d.ts.map +1 -0
  170. package/dist/services/vesu/config.js +32 -0
  171. package/dist/services/vesu/config.js.map +1 -0
  172. package/dist/services/vesu/index.d.ts +2 -0
  173. package/dist/services/vesu/index.d.ts.map +1 -1
  174. package/dist/services/vesu/index.js +2 -0
  175. package/dist/services/vesu/index.js.map +1 -1
  176. package/dist/services/vesu/lending.d.ts +8 -1
  177. package/dist/services/vesu/lending.d.ts.map +1 -1
  178. package/dist/services/vesu/lending.js +171 -52
  179. package/dist/services/vesu/lending.js.map +1 -1
  180. package/dist/services/vesu/pools.d.ts +5 -11
  181. package/dist/services/vesu/pools.d.ts.map +1 -1
  182. package/dist/services/vesu/pools.js +11 -31
  183. package/dist/services/vesu/pools.js.map +1 -1
  184. package/package.json +88 -82
  185. package/skills/README.md +63 -0
  186. package/skills/authenticate-wallet/SKILL.md +119 -0
  187. package/skills/balance/SKILL.md +80 -0
  188. package/skills/batch/SKILL.md +118 -0
  189. package/skills/config/SKILL.md +144 -0
  190. package/skills/lending/SKILL.md +209 -0
  191. package/skills/multi-swap/SKILL.md +95 -0
  192. package/skills/portfolio/SKILL.md +82 -0
  193. package/skills/send/SKILL.md +82 -0
  194. package/skills/staking/SKILL.md +188 -0
  195. package/skills/trade/SKILL.md +92 -0
@@ -1,16 +1,15 @@
1
1
  import { Amount, fromAddress } from "starkzap";
2
2
  import { resolveToken } from "../tokens/tokens.js";
3
- // Resolve STRK once only token stakeable on Starknet mainnet.
4
- async function resolveStrkToken() {
5
- return resolveToken("STRK");
6
- }
7
- export async function getStakeableTokens(sdk) {
8
- const tokens = await sdk.stakingTokens();
9
- return tokens.map((t) => ({
10
- name: t.name,
11
- symbol: t.symbol,
12
- address: t.address.toString(),
13
- }));
3
+ import { StarkfiError, ErrorCode } from "../../lib/errors.js";
4
+ // Find a pool matching a specific token symbol from a validator's pools.
5
+ export function resolvePoolForToken(pools, tokenSymbol) {
6
+ const upper = tokenSymbol.toUpperCase();
7
+ const match = pools.find((p) => p.tokenSymbol.toUpperCase() === upper);
8
+ if (!match) {
9
+ const available = pools.map((p) => p.tokenSymbol).join(", ");
10
+ throw new StarkfiError(ErrorCode.POOL_NOT_FOUND, `No ${tokenSymbol} pool found for this validator. Available: ${available}`);
11
+ }
12
+ return match;
14
13
  }
15
14
  export async function getValidatorPools(sdk, validatorAddress, wallet) {
16
15
  const pools = await sdk.getStakerPools(fromAddress(validatorAddress));
@@ -25,8 +24,8 @@ export async function getValidatorPools(sdk, validatorAddress, wallet) {
25
24
  }));
26
25
  }
27
26
  // Smart stake: auto-detects enter vs. add_to_delegation_pool.
28
- export async function stake(wallet, poolAddress, amount) {
29
- const token = await resolveStrkToken();
27
+ export async function stake(wallet, poolAddress, amount, tokenSymbol = "STRK") {
28
+ const token = await resolveToken(tokenSymbol);
30
29
  const parsedAmount = Amount.parse(amount, token);
31
30
  const tx = await wallet.stake(fromAddress(poolAddress), parsedAmount);
32
31
  return {
@@ -37,7 +36,7 @@ export async function stake(wallet, poolAddress, amount) {
37
36
  export async function claimRewards(wallet, poolAddress) {
38
37
  const position = await wallet.getPoolPosition(fromAddress(poolAddress));
39
38
  if (!position || position.rewards.isZero()) {
40
- throw new Error("No rewards to claim for this pool.");
39
+ throw new StarkfiError(ErrorCode.STAKING_FAILED, "No rewards to claim for this pool.");
41
40
  }
42
41
  const tx = await wallet.claimPoolRewards(fromAddress(poolAddress));
43
42
  return {
@@ -49,7 +48,7 @@ export async function claimRewards(wallet, poolAddress) {
49
48
  export async function compoundRewards(wallet, poolAddress) {
50
49
  const position = await wallet.getPoolPosition(fromAddress(poolAddress));
51
50
  if (!position || position.rewards.isZero()) {
52
- throw new Error("No rewards to compound for this pool.");
51
+ throw new StarkfiError(ErrorCode.STAKING_FAILED, "No rewards to compound for this pool.");
53
52
  }
54
53
  const compounded = position.rewards.toFormatted(true);
55
54
  const tx = await wallet
@@ -65,8 +64,8 @@ export async function compoundRewards(wallet, poolAddress) {
65
64
  };
66
65
  }
67
66
  // Step 1 of 2-step exit: declare intent, then wait for cooldown.
68
- export async function exitPoolIntent(wallet, poolAddress, amount) {
69
- const token = await resolveStrkToken();
67
+ export async function exitPoolIntent(wallet, poolAddress, amount, tokenSymbol = "STRK") {
68
+ const token = await resolveToken(tokenSymbol);
70
69
  const parsedAmount = Amount.parse(amount, token);
71
70
  const tx = await wallet.exitPoolIntent(fromAddress(poolAddress), parsedAmount);
72
71
  return {
@@ -78,13 +77,13 @@ export async function exitPoolIntent(wallet, poolAddress, amount) {
78
77
  export async function exitPool(wallet, poolAddress) {
79
78
  const position = await wallet.getPoolPosition(fromAddress(poolAddress));
80
79
  if (!position) {
81
- throw new Error("Not a member of this pool.");
80
+ throw new StarkfiError(ErrorCode.STAKING_FAILED, "Not a member of this pool.");
82
81
  }
83
82
  if (position.unpooling.isZero()) {
84
- throw new Error("No exit intent declared. Call 'unstake intent' first.");
83
+ throw new StarkfiError(ErrorCode.EXIT_NOT_READY, "No exit intent declared. Call 'unstake intent' first.");
85
84
  }
86
85
  if (position.unpoolTime && new Date() < position.unpoolTime) {
87
- throw new Error(`Cooldown period is still active. Please wait until ${position.unpoolTime.toLocaleString()}`);
86
+ throw new StarkfiError(ErrorCode.EXIT_NOT_READY, `Cooldown period is still active. Please wait until ${position.unpoolTime.toLocaleString()}`);
88
87
  }
89
88
  const tx = await wallet.exitPool(fromAddress(poolAddress));
90
89
  return {
@@ -105,13 +104,20 @@ export async function getPosition(wallet, poolAddress) {
105
104
  commissionPercent: position.commissionPercent,
106
105
  };
107
106
  }
108
- export async function isPoolMember(wallet, poolAddress) {
109
- return wallet.isPoolMember(fromAddress(poolAddress));
110
- }
111
107
  // Scan all known validators & pools to build a consolidated staking dashboard.
112
- export async function getStakingOverview(sdk, wallet, network, address) {
113
- const { getValidators } = await import("./validators.js");
114
- const validators = getValidators(network);
108
+ // If targetValidator is provided, it will strictly scan that validator's pools.
109
+ export async function getStakingOverview(sdk, wallet, network, address, targetValidator) {
110
+ const { getValidators, findValidator } = await import("./validators.js");
111
+ let validators = getValidators(network);
112
+ if (targetValidator) {
113
+ const found = findValidator(targetValidator, network);
114
+ if (found) {
115
+ validators = [found];
116
+ }
117
+ else {
118
+ throw new StarkfiError(ErrorCode.VALIDATOR_NOT_FOUND, `Validator '${targetValidator}' not found`);
119
+ }
120
+ }
115
121
  // Discover all pools across all validators concurrently.
116
122
  const validatorPools = await Promise.all(validators.map(async (v) => {
117
123
  const pools = await sdk.getStakerPools(v.stakerAddress);
@@ -126,6 +132,7 @@ export async function getStakingOverview(sdk, wallet, network, address) {
126
132
  return {
127
133
  validator,
128
134
  pool: p.poolContract.toString(),
135
+ tokenSymbol: p.token.symbol,
129
136
  staked: position.staked,
130
137
  rewards: position.rewards,
131
138
  total: position.total,
@@ -135,35 +142,20 @@ export async function getStakingOverview(sdk, wallet, network, address) {
135
142
  };
136
143
  }));
137
144
  const activePositions = results.filter((r) => r !== null);
138
- // Aggregate totals using raw Amount arithmetic.
139
- const strk = await resolveStrkToken();
140
- let totalStaked = Amount.parse("0", strk);
141
- let totalRewards = Amount.parse("0", strk);
142
- let totalValue = Amount.parse("0", strk);
143
- let totalUnpooling = Amount.parse("0", strk);
144
- const positions = activePositions.map((p) => {
145
- totalStaked = totalStaked.add(p.staked);
146
- totalRewards = totalRewards.add(p.rewards);
147
- totalValue = totalValue.add(p.total);
148
- totalUnpooling = totalUnpooling.add(p.unpooling);
149
- return {
150
- validator: p.validator,
151
- pool: p.pool,
152
- staked: p.staked.toFormatted(true),
153
- rewards: p.rewards.toFormatted(true),
154
- total: p.total.toFormatted(true),
155
- unpooling: p.unpooling.toFormatted(true),
156
- cooldownEndsAt: p.unpoolTime ? p.unpoolTime.toISOString() : null,
157
- commission: `${p.commissionPercent}%`,
158
- };
159
- });
145
+ const positions = activePositions.map((p) => ({
146
+ validator: p.validator,
147
+ pool: p.pool,
148
+ token: p.tokenSymbol,
149
+ staked: p.staked.toFormatted(true),
150
+ rewards: p.rewards.toFormatted(true),
151
+ total: p.total.toFormatted(true),
152
+ unpooling: p.unpooling.toFormatted(true),
153
+ cooldownEndsAt: p.unpoolTime ? p.unpoolTime.toISOString() : null,
154
+ commission: `${p.commissionPercent}%`,
155
+ }));
160
156
  return {
161
157
  network,
162
158
  address,
163
- totalStaked: totalStaked.toFormatted(true),
164
- totalRewards: totalRewards.toFormatted(true),
165
- totalValue: totalValue.toFormatted(true),
166
- totalUnpooling: totalUnpooling.toFormatted(true),
167
159
  positions,
168
160
  };
169
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/services/staking/staking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/services/staking/staking.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAA+C,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAQlD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAGpC,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC1B;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;CACxB,CAYA;AAID,wBAAgB,SAAS,CACxB,OAAO,GAAE,SAAS,GAAG,SAAqB,EAC1C,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,UAAQ,EACtB,YAAY,CAAC,EAAE,MAAM,GACnB,QAAQ,CAYV;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBpF;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB9E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAkC,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAGpC,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC1B;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;CACxB,CAkBA;AAkCD,wBAAgB,SAAS,CACxB,OAAO,GAAE,SAAS,GAAG,SAAqB,EAC1C,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,UAAQ,EACtB,YAAY,CAAC,EAAE,MAAM,GACnB,QAAQ,CAWV;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBpF;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB9E"}
@@ -1,19 +1,41 @@
1
- import { StarkZap, StarkSigner, PrivySigner, ArgentXV050Preset } from "starkzap";
1
+ import { StarkZap, PrivySigner, ArgentXV050Preset } from "starkzap";
2
2
  import { ConfigService } from "../config/config.js";
3
- import { AVNU_PAYMASTER_URL, AVNU_PAYMASTER_SEPOLIA_URL, GAS_TOKEN_ADDRESSES, } from "../../lib/config.js";
4
- // Fee mode priority: gasfreeMode (sponsored) gasToken (gasless) → default (user pays STRK)
3
+ import { AVNU_PAYMASTER_URL, AVNU_PAYMASTER_SEPOLIA_URL, GAS_TOKEN_ADDRESSES, DEFAULT_GAS_TOKEN, } from "./config.js";
4
+ // Resolve fee mode: gasfree (developer pays) vs gasless (user pays in ERC-20).
5
5
  export function resolveFeeModeConfig(gasfreeMode, gasToken) {
6
6
  if (gasfreeMode) {
7
7
  return { feeMode: "sponsored", gasTokenAddress: undefined, needsPaymaster: true };
8
8
  }
9
- if (gasToken) {
10
- const gasTokenAddress = GAS_TOKEN_ADDRESSES[gasToken.toUpperCase()];
11
- if (gasTokenAddress) {
12
- // user_pays at wallet connect-level; gasToken is injected at execute-time
13
- return { feeMode: "user_pays", gasTokenAddress, needsPaymaster: true };
14
- }
9
+ const resolvedToken = gasToken ?? DEFAULT_GAS_TOKEN;
10
+ const gasTokenAddress = GAS_TOKEN_ADDRESSES[resolvedToken.toUpperCase()];
11
+ if (gasTokenAddress) {
12
+ return { feeMode: "sponsored", gasTokenAddress, needsPaymaster: true };
15
13
  }
16
- return { feeMode: "user_pays", gasTokenAddress: undefined, needsPaymaster: false };
14
+ // Fallback
15
+ return {
16
+ feeMode: "sponsored",
17
+ gasTokenAddress: GAS_TOKEN_ADDRESSES["STRK"],
18
+ needsPaymaster: true,
19
+ };
20
+ }
21
+ // Patch paymaster feeMode: 'sponsored' → 'default' with gasToken for gasless mode.
22
+ function patchGaslessMode(wallet, gasTokenAddress) {
23
+ const account = wallet.getAccount();
24
+ // Defensive guard — if StarkZap SDK changes the internal method name, fail gracefully
25
+ const exec = account.executePaymasterTransaction;
26
+ if (typeof exec !== "function") {
27
+ console.warn("[StarkFi] Cannot patch gasless mode — executePaymasterTransaction not found on account. " +
28
+ "Gas will use default sponsored mode. Consider updating StarkZap SDK.");
29
+ return;
30
+ }
31
+ const originalExecutePaymaster = exec.bind(account);
32
+ account.executePaymasterTransaction = async function (calls, details, ...rest) {
33
+ const patchedDetails = {
34
+ ...details,
35
+ feeMode: { mode: "default", gasToken: gasTokenAddress },
36
+ };
37
+ return originalExecutePaymaster(calls, patchedDetails, ...rest);
38
+ };
17
39
  }
18
40
  let sdkInstance = null;
19
41
  export function createSDK(network = "mainnet", rpcUrl, needsPaymaster = false, paymasterUrl) {
@@ -31,23 +53,21 @@ export async function connectWallet(sdk, session) {
31
53
  const configService = ConfigService.getInstance();
32
54
  const gasfreeMode = configService.get("gasfreeMode") === true;
33
55
  const gasToken = configService.get("gasToken");
34
- const { feeMode } = resolveFeeModeConfig(gasfreeMode, gasToken);
35
- if (session.type === "local") {
36
- return sdk.connectWallet({
37
- account: { signer: new StarkSigner(session.privateKey) },
38
- feeMode,
39
- });
40
- }
56
+ const { feeMode, gasTokenAddress } = resolveFeeModeConfig(gasfreeMode, gasToken);
41
57
  const signer = new PrivySigner({
42
58
  walletId: session.walletId,
43
59
  publicKey: session.publicKey,
44
60
  serverUrl: session.serverUrl,
45
61
  headers: { Authorization: `Bearer ${session.token}` },
46
62
  });
47
- return sdk.connectWallet({
63
+ const wallet = await sdk.connectWallet({
48
64
  account: { signer, accountClass: ArgentXV050Preset },
49
65
  feeMode,
50
66
  });
67
+ if (!gasfreeMode && gasTokenAddress) {
68
+ patchGaslessMode(wallet, gasTokenAddress);
69
+ }
70
+ return wallet;
51
71
  }
52
72
  export async function initSDKAndWallet(session) {
53
73
  const configService = ConfigService.getInstance();
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const AVNU_PAYMASTER_URL = "https://starknet.paymaster.avnu.fi";
2
+ export declare const AVNU_PAYMASTER_SEPOLIA_URL = "https://sepolia.paymaster.avnu.fi";
3
+ export declare const DEFAULT_GAS_TOKEN = "STRK";
4
+ export declare const GAS_TOKEN_ADDRESSES: Record<string, string>;
5
+ export declare const GASLESS_SUPPORTED_TOKENS: string[];
6
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/services/starkzap/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,uCAAuC,CAAC;AACvE,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAGxC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtD,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAmC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const AVNU_PAYMASTER_URL = "https://starknet.paymaster.avnu.fi";
2
+ export const AVNU_PAYMASTER_SEPOLIA_URL = "https://sepolia.paymaster.avnu.fi";
3
+ export const DEFAULT_GAS_TOKEN = "STRK";
4
+ // Tokens accepted by Paymaster for Gasless mode.
5
+ export const GAS_TOKEN_ADDRESSES = {
6
+ ETH: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
7
+ STRK: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
8
+ USDC: "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb",
9
+ USDT: "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8",
10
+ DAI: "0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad",
11
+ };
12
+ export const GASLESS_SUPPORTED_TOKENS = Object.keys(GAS_TOKEN_ADDRESSES);
13
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/services/starkzap/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,oCAAoC,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAAmC,CAAC;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,iDAAiD;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IAC1D,GAAG,EAAE,oEAAoE;IACzE,IAAI,EAAE,oEAAoE;IAC1E,IAAI,EAAE,oEAAoE;IAC1E,IAAI,EAAE,oEAAoE;IAC1E,GAAG,EAAE,oEAAoE;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"balances.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/balances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAsBlF"}
1
+ {"version":3,"file":"balances.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/balances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAsClF"}
@@ -2,22 +2,34 @@ import { fetchTokens } from "./tokens.js";
2
2
  export async function getBalances(wallet) {
3
3
  const tokens = await fetchTokens();
4
4
  const results = [];
5
- const balancePromises = tokens.map(async (token) => {
6
- try {
7
- const amount = await wallet.balanceOf(token);
8
- if (amount.isPositive()) {
9
- results.push({
10
- symbol: token.symbol,
11
- name: token.name,
12
- balance: amount.toUnit(),
13
- });
5
+ // Process tokens concurrently with a sliding window to avoid overwhelming the RPC node.
6
+ // This prevents rate-limiting issues while maintaining maximum throughput,
7
+ // unlike chunking which gets bottlenecked by the slowest request in each chunk.
8
+ const CONCURRENCY_LIMIT = 10;
9
+ let index = 0;
10
+ const worker = async () => {
11
+ while (index < tokens.length) {
12
+ const current = index++;
13
+ const token = tokens[current];
14
+ if (!token)
15
+ continue;
16
+ try {
17
+ const amount = await wallet.balanceOf(token);
18
+ if (amount.isPositive()) {
19
+ results.push({
20
+ symbol: token.symbol,
21
+ name: token.name,
22
+ balance: amount.toUnit(),
23
+ });
24
+ }
25
+ }
26
+ catch {
27
+ // Silently fail for individual token checks that might error due to contract issues.
14
28
  }
15
29
  }
16
- catch {
17
- // Silently fail for individual token checks that might error due to contract issues.
18
- }
19
- });
20
- await Promise.all(balancePromises);
30
+ };
31
+ const workers = Array.from({ length: Math.min(CONCURRENCY_LIMIT, tokens.length) }, () => worker());
32
+ await Promise.all(workers);
21
33
  return results;
22
34
  }
23
35
  //# sourceMappingURL=balances.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../src/services/tokens/balances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAuB;IACxD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAClD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;iBACxB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,qFAAqF;QACtF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../src/services/tokens/balances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAuB;IACxD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,wFAAwF;IACxF,2EAA2E;IAC3E,gFAAgF;IAChF,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACzB,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC;wBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;qBACxB,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,qFAAqF;YACtF,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CACvF,MAAM,EAAE,CACR,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { type Token } from "starkzap";
2
- export declare function fetchTokens(): Promise<Token[]>;
3
- export declare function resolveToken(symbol: string): Promise<Token>;
4
- export declare function resolveTokenByAddress(address: string): Promise<Token | null>;
2
+ export declare function fetchTokens(): Token[];
3
+ export declare function resolveToken(symbol: string): Token;
5
4
  //# sourceMappingURL=tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAG3D,wBAAsB,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAIpD;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAiBjE;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAGlF"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAG3D,wBAAgB,WAAW,IAAI,KAAK,EAAE,CAGrC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAiBlD"}
@@ -1,12 +1,11 @@
1
1
  import { ChainId, getPresets } from "starkzap";
2
2
  import { ErrorCode, StarkfiError } from "../../lib/errors.js";
3
- export async function fetchTokens() {
4
- // getPresets returns a Record<string, Token>. We convert it to an array.
3
+ export function fetchTokens() {
5
4
  const presetTokens = getPresets(ChainId.MAINNET);
6
5
  return Object.values(presetTokens);
7
6
  }
8
- export async function resolveToken(symbol) {
9
- const tokens = await fetchTokens();
7
+ export function resolveToken(symbol) {
8
+ const tokens = fetchTokens();
10
9
  const upperSymbol = symbol.toUpperCase();
11
10
  const token = tokens.find((t) => t.symbol.toUpperCase() === upperSymbol);
12
11
  if (!token) {
@@ -17,8 +16,4 @@ export async function resolveToken(symbol) {
17
16
  }
18
17
  return token;
19
18
  }
20
- export async function resolveTokenByAddress(address) {
21
- const tokens = await fetchTokens();
22
- return tokens.find((t) => t.address.toLowerCase() === address.toLowerCase()) ?? null;
23
- }
24
19
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/services/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,WAAW;IAChC,yEAAyE;IACzE,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,CAAC;IAEzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,cAAc,EACxB,oBAAoB,MAAM,uBAAuB,MAAM;aACrD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CACjB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe;IAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/services/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,WAAW;IAC1B,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IAC1C,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,CAAC;IAEzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,cAAc,EACxB,oBAAoB,MAAM,uBAAuB,MAAM;aACrD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CACjB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -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":"AAIA,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,CAwDtE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAW7D"}
@@ -0,0 +1,97 @@
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
+ const CACHE_TTL_MS = 5 * 60 * 1000;
5
+ const REQUEST_TIMEOUT_MS = 15_000;
6
+ const poolCache = new Map();
7
+ function getCached(address) {
8
+ const entry = poolCache.get(address);
9
+ if (!entry)
10
+ return null;
11
+ if (Date.now() - entry.fetchedAt > CACHE_TTL_MS) {
12
+ poolCache.delete(address);
13
+ return null;
14
+ }
15
+ return entry.data;
16
+ }
17
+ function parseDecimalValue(raw) {
18
+ return Number(BigInt(raw.value)) / 10 ** raw.decimals;
19
+ }
20
+ function formatPercent(decimal) {
21
+ return `${(decimal * 100).toFixed(2)}%`;
22
+ }
23
+ function parseAsset(raw) {
24
+ return {
25
+ address: raw.address,
26
+ name: raw.name,
27
+ symbol: raw.symbol,
28
+ decimals: raw.decimals,
29
+ canBeBorrowed: raw.stats.canBeBorrowed,
30
+ vTokenAddress: raw.vToken.address,
31
+ supplyApy: formatPercent(parseDecimalValue(raw.stats.supplyApy)),
32
+ borrowApr: formatPercent(parseDecimalValue(raw.stats.borrowApr)),
33
+ };
34
+ }
35
+ function parsePair(raw, assetMap) {
36
+ return {
37
+ collateralAddress: raw.collateralAssetAddress,
38
+ collateralSymbol: assetMap.get(raw.collateralAssetAddress) ?? "UNKNOWN",
39
+ debtAddress: raw.debtAssetAddress,
40
+ debtSymbol: assetMap.get(raw.debtAssetAddress) ?? "UNKNOWN",
41
+ maxLTV: parseDecimalValue(raw.maxLTV),
42
+ };
43
+ }
44
+ export async function fetchPool(address) {
45
+ const cached = getCached(address);
46
+ if (cached)
47
+ return cached;
48
+ const controller = new AbortController();
49
+ const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
50
+ try {
51
+ const url = `${VESU_API_BASE}/pools/${address}`;
52
+ const res = await withRetry(() => fetch(url, { signal: controller.signal }), {
53
+ retryOnCodes: [ErrorCode.NETWORK_ERROR],
54
+ });
55
+ if (!res.ok) {
56
+ throw new StarkfiError(ErrorCode.NETWORK_ERROR, `Vesu API returned ${res.status} for pool ${address}`);
57
+ }
58
+ const json = (await res.json());
59
+ const raw = json.data;
60
+ const assetMap = new Map();
61
+ for (const a of raw.assets) {
62
+ assetMap.set(a.address, a.symbol);
63
+ }
64
+ const pool = {
65
+ address: raw.id,
66
+ name: raw.name,
67
+ protocolVersion: raw.protocolVersion,
68
+ isDeprecated: raw.isDeprecated,
69
+ assets: raw.assets.map(parseAsset),
70
+ pairs: raw.pairs.map((p) => parsePair(p, assetMap)),
71
+ };
72
+ poolCache.set(address, { data: pool, fetchedAt: Date.now() });
73
+ return pool;
74
+ }
75
+ catch (error) {
76
+ if (error instanceof StarkfiError)
77
+ throw error;
78
+ if (error instanceof DOMException && error.name === "AbortError") {
79
+ throw new StarkfiError(ErrorCode.NETWORK_ERROR, `Vesu API request timed out for pool ${address}`);
80
+ }
81
+ throw new StarkfiError(ErrorCode.NETWORK_ERROR, `Failed to fetch pool data from Vesu API: ${error instanceof Error ? error.message : String(error)}`);
82
+ }
83
+ finally {
84
+ clearTimeout(timer);
85
+ }
86
+ }
87
+ export async function fetchAllPools() {
88
+ const results = await Promise.allSettled(V2_POOLS.map((p) => fetchPool(p.address)));
89
+ const pools = [];
90
+ for (const result of results) {
91
+ if (result.status === "fulfilled") {
92
+ pools.push(result.value);
93
+ }
94
+ }
95
+ return pools;
96
+ }
97
+ //# 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"}