starkfi 0.3.4 → 0.4.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 (310) hide show
  1. package/dist/index.js +289 -197
  2. package/package.json +16 -18
  3. package/dist/commands/auth/import.d.ts +0 -3
  4. package/dist/commands/auth/import.d.ts.map +0 -1
  5. package/dist/commands/auth/import.js +0 -56
  6. package/dist/commands/auth/import.js.map +0 -1
  7. package/dist/commands/auth/login.d.ts +0 -3
  8. package/dist/commands/auth/login.d.ts.map +0 -1
  9. package/dist/commands/auth/login.js +0 -24
  10. package/dist/commands/auth/login.js.map +0 -1
  11. package/dist/commands/auth/logout.d.ts +0 -3
  12. package/dist/commands/auth/logout.d.ts.map +0 -1
  13. package/dist/commands/auth/logout.js +0 -14
  14. package/dist/commands/auth/logout.js.map +0 -1
  15. package/dist/commands/auth/verify.d.ts +0 -3
  16. package/dist/commands/auth/verify.d.ts.map +0 -1
  17. package/dist/commands/auth/verify.js +0 -64
  18. package/dist/commands/auth/verify.js.map +0 -1
  19. package/dist/commands/batch/batch.d.ts +0 -3
  20. package/dist/commands/batch/batch.d.ts.map +0 -1
  21. package/dist/commands/batch/batch.js +0 -146
  22. package/dist/commands/batch/batch.js.map +0 -1
  23. package/dist/commands/chain/tx-status.d.ts +0 -3
  24. package/dist/commands/chain/tx-status.d.ts.map +0 -1
  25. package/dist/commands/chain/tx-status.js +0 -34
  26. package/dist/commands/chain/tx-status.js.map +0 -1
  27. package/dist/commands/config/config.d.ts +0 -3
  28. package/dist/commands/config/config.d.ts.map +0 -1
  29. package/dist/commands/config/config.js +0 -114
  30. package/dist/commands/config/config.js.map +0 -1
  31. package/dist/commands/lending/lending.d.ts +0 -9
  32. package/dist/commands/lending/lending.d.ts.map +0 -1
  33. package/dist/commands/lending/lending.js +0 -382
  34. package/dist/commands/lending/lending.js.map +0 -1
  35. package/dist/commands/portfolio/portfolio.d.ts +0 -3
  36. package/dist/commands/portfolio/portfolio.d.ts.map +0 -1
  37. package/dist/commands/portfolio/portfolio.js +0 -90
  38. package/dist/commands/portfolio/portfolio.js.map +0 -1
  39. package/dist/commands/staking/staking.d.ts +0 -8
  40. package/dist/commands/staking/staking.d.ts.map +0 -1
  41. package/dist/commands/staking/staking.js +0 -376
  42. package/dist/commands/staking/staking.js.map +0 -1
  43. package/dist/commands/system/status.d.ts +0 -3
  44. package/dist/commands/system/status.d.ts.map +0 -1
  45. package/dist/commands/system/status.js +0 -41
  46. package/dist/commands/system/status.js.map +0 -1
  47. package/dist/commands/trade/multi-swap.d.ts +0 -3
  48. package/dist/commands/trade/multi-swap.d.ts.map +0 -1
  49. package/dist/commands/trade/multi-swap.js +0 -132
  50. package/dist/commands/trade/multi-swap.js.map +0 -1
  51. package/dist/commands/trade/status.d.ts +0 -3
  52. package/dist/commands/trade/status.d.ts.map +0 -1
  53. package/dist/commands/trade/status.js +0 -41
  54. package/dist/commands/trade/status.js.map +0 -1
  55. package/dist/commands/trade/swap.d.ts +0 -3
  56. package/dist/commands/trade/swap.d.ts.map +0 -1
  57. package/dist/commands/trade/swap.js +0 -92
  58. package/dist/commands/trade/swap.js.map +0 -1
  59. package/dist/commands/wallet/address.d.ts +0 -3
  60. package/dist/commands/wallet/address.d.ts.map +0 -1
  61. package/dist/commands/wallet/address.js +0 -20
  62. package/dist/commands/wallet/address.js.map +0 -1
  63. package/dist/commands/wallet/balance.d.ts +0 -3
  64. package/dist/commands/wallet/balance.d.ts.map +0 -1
  65. package/dist/commands/wallet/balance.js +0 -64
  66. package/dist/commands/wallet/balance.js.map +0 -1
  67. package/dist/commands/wallet/deploy.d.ts +0 -3
  68. package/dist/commands/wallet/deploy.d.ts.map +0 -1
  69. package/dist/commands/wallet/deploy.js +0 -68
  70. package/dist/commands/wallet/deploy.js.map +0 -1
  71. package/dist/commands/wallet/send.d.ts +0 -3
  72. package/dist/commands/wallet/send.d.ts.map +0 -1
  73. package/dist/commands/wallet/send.js +0 -79
  74. package/dist/commands/wallet/send.js.map +0 -1
  75. package/dist/index.d.ts +0 -3
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js.map +0 -1
  78. package/dist/lib/banner.d.ts +0 -6
  79. package/dist/lib/banner.d.ts.map +0 -1
  80. package/dist/lib/banner.js +0 -78
  81. package/dist/lib/banner.js.map +0 -1
  82. package/dist/lib/brand.d.ts +0 -5
  83. package/dist/lib/brand.d.ts.map +0 -1
  84. package/dist/lib/brand.js +0 -15
  85. package/dist/lib/brand.js.map +0 -1
  86. package/dist/lib/cache.d.ts +0 -3
  87. package/dist/lib/cache.d.ts.map +0 -1
  88. package/dist/lib/cache.js +0 -33
  89. package/dist/lib/cache.js.map +0 -1
  90. package/dist/lib/cli-helpers.d.ts +0 -8
  91. package/dist/lib/cli-helpers.d.ts.map +0 -1
  92. package/dist/lib/cli-helpers.js +0 -20
  93. package/dist/lib/cli-helpers.js.map +0 -1
  94. package/dist/lib/command.d.ts +0 -3
  95. package/dist/lib/command.d.ts.map +0 -1
  96. package/dist/lib/command.js +0 -6
  97. package/dist/lib/command.js.map +0 -1
  98. package/dist/lib/concurrency.d.ts +0 -2
  99. package/dist/lib/concurrency.d.ts.map +0 -1
  100. package/dist/lib/concurrency.js +0 -21
  101. package/dist/lib/concurrency.js.map +0 -1
  102. package/dist/lib/config.d.ts +0 -5
  103. package/dist/lib/config.d.ts.map +0 -1
  104. package/dist/lib/config.js +0 -10
  105. package/dist/lib/config.js.map +0 -1
  106. package/dist/lib/errors.d.ts +0 -41
  107. package/dist/lib/errors.d.ts.map +0 -1
  108. package/dist/lib/errors.js +0 -47
  109. package/dist/lib/errors.js.map +0 -1
  110. package/dist/lib/fetch.d.ts +0 -4
  111. package/dist/lib/fetch.d.ts.map +0 -1
  112. package/dist/lib/fetch.js +0 -13
  113. package/dist/lib/fetch.js.map +0 -1
  114. package/dist/lib/format.d.ts +0 -21
  115. package/dist/lib/format.d.ts.map +0 -1
  116. package/dist/lib/format.js +0 -122
  117. package/dist/lib/format.js.map +0 -1
  118. package/dist/lib/parse-starknet-error.d.ts +0 -2
  119. package/dist/lib/parse-starknet-error.d.ts.map +0 -1
  120. package/dist/lib/parse-starknet-error.js +0 -81
  121. package/dist/lib/parse-starknet-error.js.map +0 -1
  122. package/dist/lib/retry.d.ts +0 -8
  123. package/dist/lib/retry.d.ts.map +0 -1
  124. package/dist/lib/retry.js +0 -25
  125. package/dist/lib/retry.js.map +0 -1
  126. package/dist/lib/types.d.ts +0 -6
  127. package/dist/lib/types.d.ts.map +0 -1
  128. package/dist/lib/types.js +0 -2
  129. package/dist/lib/types.js.map +0 -1
  130. package/dist/lib/validation.d.ts +0 -2
  131. package/dist/lib/validation.d.ts.map +0 -1
  132. package/dist/lib/validation.js +0 -6
  133. package/dist/lib/validation.js.map +0 -1
  134. package/dist/mcp/handlers/auth.d.ts +0 -7
  135. package/dist/mcp/handlers/auth.d.ts.map +0 -1
  136. package/dist/mcp/handlers/auth.js +0 -22
  137. package/dist/mcp/handlers/auth.js.map +0 -1
  138. package/dist/mcp/handlers/batch.d.ts +0 -13
  139. package/dist/mcp/handlers/batch.d.ts.map +0 -1
  140. package/dist/mcp/handlers/batch.js +0 -26
  141. package/dist/mcp/handlers/batch.js.map +0 -1
  142. package/dist/mcp/handlers/config.d.ts +0 -10
  143. package/dist/mcp/handlers/config.d.ts.map +0 -1
  144. package/dist/mcp/handlers/config.js +0 -82
  145. package/dist/mcp/handlers/config.js.map +0 -1
  146. package/dist/mcp/handlers/context.d.ts +0 -10
  147. package/dist/mcp/handlers/context.d.ts.map +0 -1
  148. package/dist/mcp/handlers/context.js +0 -16
  149. package/dist/mcp/handlers/context.js.map +0 -1
  150. package/dist/mcp/handlers/index.d.ts +0 -11
  151. package/dist/mcp/handlers/index.d.ts.map +0 -1
  152. package/dist/mcp/handlers/index.js +0 -11
  153. package/dist/mcp/handlers/index.js.map +0 -1
  154. package/dist/mcp/handlers/lending.d.ts +0 -73
  155. package/dist/mcp/handlers/lending.d.ts.map +0 -1
  156. package/dist/mcp/handlers/lending.js +0 -134
  157. package/dist/mcp/handlers/lending.js.map +0 -1
  158. package/dist/mcp/handlers/multi-swap.d.ts +0 -27
  159. package/dist/mcp/handlers/multi-swap.d.ts.map +0 -1
  160. package/dist/mcp/handlers/multi-swap.js +0 -65
  161. package/dist/mcp/handlers/multi-swap.js.map +0 -1
  162. package/dist/mcp/handlers/portfolio.d.ts +0 -7
  163. package/dist/mcp/handlers/portfolio.d.ts.map +0 -1
  164. package/dist/mcp/handlers/portfolio.js +0 -10
  165. package/dist/mcp/handlers/portfolio.js.map +0 -1
  166. package/dist/mcp/handlers/staking.d.ts +0 -68
  167. package/dist/mcp/handlers/staking.d.ts.map +0 -1
  168. package/dist/mcp/handlers/staking.js +0 -119
  169. package/dist/mcp/handlers/staking.js.map +0 -1
  170. package/dist/mcp/handlers/trade.d.ts +0 -23
  171. package/dist/mcp/handlers/trade.d.ts.map +0 -1
  172. package/dist/mcp/handlers/trade.js +0 -63
  173. package/dist/mcp/handlers/trade.js.map +0 -1
  174. package/dist/mcp/handlers/utils.d.ts +0 -20
  175. package/dist/mcp/handlers/utils.d.ts.map +0 -1
  176. package/dist/mcp/handlers/utils.js +0 -21
  177. package/dist/mcp/handlers/utils.js.map +0 -1
  178. package/dist/mcp/handlers/wallet.d.ts +0 -34
  179. package/dist/mcp/handlers/wallet.d.ts.map +0 -1
  180. package/dist/mcp/handlers/wallet.js +0 -98
  181. package/dist/mcp/handlers/wallet.js.map +0 -1
  182. package/dist/mcp/handlers.d.ts +0 -108
  183. package/dist/mcp/handlers.d.ts.map +0 -1
  184. package/dist/mcp/handlers.js +0 -325
  185. package/dist/mcp/handlers.js.map +0 -1
  186. package/dist/mcp/server.d.ts +0 -2
  187. package/dist/mcp/server.d.ts.map +0 -1
  188. package/dist/mcp/server.js +0 -54
  189. package/dist/mcp/server.js.map +0 -1
  190. package/dist/mcp/tools/auth.d.ts +0 -3
  191. package/dist/mcp/tools/auth.d.ts.map +0 -1
  192. package/dist/mcp/tools/auth.js +0 -25
  193. package/dist/mcp/tools/auth.js.map +0 -1
  194. package/dist/mcp/tools/error-handling.d.ts +0 -12
  195. package/dist/mcp/tools/error-handling.d.ts.map +0 -1
  196. package/dist/mcp/tools/error-handling.js +0 -22
  197. package/dist/mcp/tools/error-handling.js.map +0 -1
  198. package/dist/mcp/tools/index.d.ts +0 -11
  199. package/dist/mcp/tools/index.d.ts.map +0 -1
  200. package/dist/mcp/tools/index.js +0 -19
  201. package/dist/mcp/tools/index.js.map +0 -1
  202. package/dist/mcp/tools/lending.d.ts +0 -3
  203. package/dist/mcp/tools/lending.d.ts.map +0 -1
  204. package/dist/mcp/tools/lending.js +0 -71
  205. package/dist/mcp/tools/lending.js.map +0 -1
  206. package/dist/mcp/tools/staking.d.ts +0 -3
  207. package/dist/mcp/tools/staking.d.ts.map +0 -1
  208. package/dist/mcp/tools/staking.js +0 -50
  209. package/dist/mcp/tools/staking.js.map +0 -1
  210. package/dist/mcp/tools/trade.d.ts +0 -3
  211. package/dist/mcp/tools/trade.d.ts.map +0 -1
  212. package/dist/mcp/tools/trade.js +0 -63
  213. package/dist/mcp/tools/trade.js.map +0 -1
  214. package/dist/mcp/tools/wallet.d.ts +0 -3
  215. package/dist/mcp/tools/wallet.d.ts.map +0 -1
  216. package/dist/mcp/tools/wallet.js +0 -27
  217. package/dist/mcp/tools/wallet.js.map +0 -1
  218. package/dist/mcp/tools.d.ts +0 -3
  219. package/dist/mcp/tools.d.ts.map +0 -1
  220. package/dist/mcp/tools.js +0 -240
  221. package/dist/mcp/tools.js.map +0 -1
  222. package/dist/services/api/client.d.ts +0 -14
  223. package/dist/services/api/client.d.ts.map +0 -1
  224. package/dist/services/api/client.js +0 -50
  225. package/dist/services/api/client.js.map +0 -1
  226. package/dist/services/auth/session.d.ts +0 -16
  227. package/dist/services/auth/session.d.ts.map +0 -1
  228. package/dist/services/auth/session.js +0 -57
  229. package/dist/services/auth/session.js.map +0 -1
  230. package/dist/services/batch/batch.d.ts +0 -35
  231. package/dist/services/batch/batch.d.ts.map +0 -1
  232. package/dist/services/batch/batch.js +0 -110
  233. package/dist/services/batch/batch.js.map +0 -1
  234. package/dist/services/config/config.d.ts +0 -24
  235. package/dist/services/config/config.d.ts.map +0 -1
  236. package/dist/services/config/config.js +0 -82
  237. package/dist/services/config/config.js.map +0 -1
  238. package/dist/services/fibrous/balances.d.ts +0 -8
  239. package/dist/services/fibrous/balances.d.ts.map +0 -1
  240. package/dist/services/fibrous/balances.js +0 -23
  241. package/dist/services/fibrous/balances.js.map +0 -1
  242. package/dist/services/fibrous/config.d.ts +0 -4
  243. package/dist/services/fibrous/config.d.ts.map +0 -1
  244. package/dist/services/fibrous/config.js +0 -4
  245. package/dist/services/fibrous/config.js.map +0 -1
  246. package/dist/services/fibrous/health.d.ts +0 -5
  247. package/dist/services/fibrous/health.d.ts.map +0 -1
  248. package/dist/services/fibrous/health.js +0 -24
  249. package/dist/services/fibrous/health.js.map +0 -1
  250. package/dist/services/fibrous/route.d.ts +0 -52
  251. package/dist/services/fibrous/route.d.ts.map +0 -1
  252. package/dist/services/fibrous/route.js +0 -127
  253. package/dist/services/fibrous/route.js.map +0 -1
  254. package/dist/services/fibrous/tokens.d.ts +0 -6
  255. package/dist/services/fibrous/tokens.d.ts.map +0 -1
  256. package/dist/services/fibrous/tokens.js +0 -34
  257. package/dist/services/fibrous/tokens.js.map +0 -1
  258. package/dist/services/portfolio/portfolio.d.ts +0 -33
  259. package/dist/services/portfolio/portfolio.d.ts.map +0 -1
  260. package/dist/services/portfolio/portfolio.js +0 -101
  261. package/dist/services/portfolio/portfolio.js.map +0 -1
  262. package/dist/services/simulate/simulate.d.ts +0 -10
  263. package/dist/services/simulate/simulate.d.ts.map +0 -1
  264. package/dist/services/simulate/simulate.js +0 -58
  265. package/dist/services/simulate/simulate.js.map +0 -1
  266. package/dist/services/staking/staking.d.ts +0 -49
  267. package/dist/services/staking/staking.d.ts.map +0 -1
  268. package/dist/services/staking/staking.js +0 -175
  269. package/dist/services/staking/staking.js.map +0 -1
  270. package/dist/services/staking/validators.d.ts +0 -5
  271. package/dist/services/staking/validators.d.ts.map +0 -1
  272. package/dist/services/staking/validators.js +0 -14
  273. package/dist/services/staking/validators.js.map +0 -1
  274. package/dist/services/starkzap/client.d.ts +0 -19
  275. package/dist/services/starkzap/client.d.ts.map +0 -1
  276. package/dist/services/starkzap/client.js +0 -88
  277. package/dist/services/starkzap/client.js.map +0 -1
  278. package/dist/services/starkzap/config.d.ts +0 -6
  279. package/dist/services/starkzap/config.d.ts.map +0 -1
  280. package/dist/services/starkzap/config.js +0 -13
  281. package/dist/services/starkzap/config.js.map +0 -1
  282. package/dist/services/tokens/balances.d.ts +0 -8
  283. package/dist/services/tokens/balances.d.ts.map +0 -1
  284. package/dist/services/tokens/balances.js +0 -23
  285. package/dist/services/tokens/balances.js.map +0 -1
  286. package/dist/services/tokens/tokens.d.ts +0 -4
  287. package/dist/services/tokens/tokens.d.ts.map +0 -1
  288. package/dist/services/tokens/tokens.js +0 -27
  289. package/dist/services/tokens/tokens.js.map +0 -1
  290. package/dist/services/vesu/api.d.ts +0 -28
  291. package/dist/services/vesu/api.d.ts.map +0 -1
  292. package/dist/services/vesu/api.js +0 -91
  293. package/dist/services/vesu/api.js.map +0 -1
  294. package/dist/services/vesu/config.d.ts +0 -9
  295. package/dist/services/vesu/config.d.ts.map +0 -1
  296. package/dist/services/vesu/config.js +0 -32
  297. package/dist/services/vesu/config.js.map +0 -1
  298. package/dist/services/vesu/index.d.ts +0 -5
  299. package/dist/services/vesu/index.d.ts.map +0 -1
  300. package/dist/services/vesu/index.js +0 -5
  301. package/dist/services/vesu/index.js.map +0 -1
  302. package/dist/services/vesu/lending.d.ts +0 -21
  303. package/dist/services/vesu/lending.d.ts.map +0 -1
  304. package/dist/services/vesu/lending.js +0 -262
  305. package/dist/services/vesu/lending.js.map +0 -1
  306. package/dist/services/vesu/pools.d.ts +0 -11
  307. package/dist/services/vesu/pools.d.ts.map +0 -1
  308. package/dist/services/vesu/pools.js +0 -23
  309. package/dist/services/vesu/pools.js.map +0 -1
  310. package/scripts/patch-esm.mjs +0 -151
@@ -1,33 +0,0 @@
1
- import type { StarkZap, Wallet } from "starkzap";
2
- import type { Session } from "../auth/session.js";
3
- export interface PortfolioBalance {
4
- symbol: string;
5
- name: string;
6
- amount: string;
7
- usdValue: number;
8
- }
9
- export interface PortfolioStaking {
10
- validator: string;
11
- pool: string;
12
- token: string;
13
- staked: string;
14
- rewards: string;
15
- unpooling: string;
16
- cooldownEndsAt: string | null;
17
- usdValue: number;
18
- }
19
- export interface PortfolioLending {
20
- pool: string;
21
- asset: string;
22
- supplied: string;
23
- }
24
- export interface PortfolioData {
25
- address: string;
26
- network: string;
27
- balances: PortfolioBalance[];
28
- staking: PortfolioStaking[];
29
- lending: PortfolioLending[];
30
- totalUsdValue: number;
31
- }
32
- export declare function getPortfolio(sdk: StarkZap, wallet: Wallet, session: Session): Promise<PortfolioData>;
33
- //# sourceMappingURL=portfolio.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../../src/services/portfolio/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACtB;AAGD,wBAAsB,YAAY,CACjC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAsBxB"}
@@ -1,101 +0,0 @@
1
- import { getBalances } from "../tokens/balances.js";
2
- import { getTokenUsdPrice } from "../fibrous/route.js";
3
- import { resolveToken } from "../tokens/tokens.js";
4
- import { getStakingOverview } from "../staking/staking.js";
5
- import { getSuppliedBalance } from "../vesu/lending.js";
6
- import { getVesuPools } from "../vesu/pools.js";
7
- import { runConcurrent } from "../../lib/concurrency.js";
8
- // Fetch complete DeFi portfolio: balances (with USD), staking, and lending.
9
- export async function getPortfolio(sdk, wallet, session) {
10
- const [balancesResult, stakingResult, lendingResult] = await Promise.allSettled([
11
- fetchBalancesWithUsd(wallet),
12
- fetchStaking(sdk, wallet, session),
13
- fetchLending(wallet),
14
- ]);
15
- const balances = balancesResult.status === "fulfilled" ? balancesResult.value : [];
16
- const staking = stakingResult.status === "fulfilled" ? stakingResult.value : [];
17
- const lending = lendingResult.status === "fulfilled" ? lendingResult.value : [];
18
- const balanceUsd = balances.reduce((sum, b) => sum + b.usdValue, 0);
19
- const stakingUsd = staking.reduce((sum, s) => sum + s.usdValue, 0);
20
- return {
21
- address: session.address,
22
- network: session.network,
23
- balances,
24
- staking,
25
- lending,
26
- totalUsdValue: balanceUsd + stakingUsd,
27
- };
28
- }
29
- const USD_PRICE_CONCURRENCY = 5;
30
- async function fetchBalancesWithUsd(wallet) {
31
- const rawBalances = await getBalances(wallet);
32
- const results = await runConcurrent(rawBalances, USD_PRICE_CONCURRENCY, async (bal) => {
33
- let usdValue = 0;
34
- try {
35
- const token = resolveToken(bal.symbol);
36
- const price = await getTokenUsdPrice(token);
37
- usdValue = parseFloat(bal.balance) * price;
38
- }
39
- catch {
40
- // Price unavailable
41
- }
42
- return {
43
- symbol: bal.symbol,
44
- name: bal.name,
45
- amount: bal.balance,
46
- usdValue,
47
- };
48
- });
49
- return results.sort((a, b) => b.usdValue - a.usdValue);
50
- }
51
- async function fetchStaking(sdk, wallet, session) {
52
- const overview = await getStakingOverview(sdk, wallet, session.network, session.address);
53
- if (overview.positions.length === 0)
54
- return [];
55
- // Collect unique token symbols and fetch their prices concurrently.
56
- const uniqueSymbols = [...new Set(overview.positions.map((p) => p.token))];
57
- const priceEntries = await Promise.allSettled(uniqueSymbols.map(async (symbol) => {
58
- try {
59
- const token = resolveToken(symbol);
60
- return { symbol, price: await getTokenUsdPrice(token) };
61
- }
62
- catch {
63
- return { symbol, price: 0 };
64
- }
65
- }));
66
- const priceCache = new Map();
67
- for (const entry of priceEntries) {
68
- if (entry.status === "fulfilled") {
69
- priceCache.set(entry.value.symbol, entry.value.price);
70
- }
71
- }
72
- return overview.positions.map((p) => ({
73
- validator: p.validator,
74
- pool: p.pool,
75
- token: p.token,
76
- staked: p.staked,
77
- rewards: p.rewards,
78
- unpooling: p.unpooling,
79
- cooldownEndsAt: p.cooldownEndsAt,
80
- usdValue: parseNumericPart(p.total) * (priceCache.get(p.token) ?? 0),
81
- }));
82
- }
83
- function parseNumericPart(formatted) {
84
- const match = formatted.match(/([\d.]+)/);
85
- return match ? parseFloat(match[1]) : 0;
86
- }
87
- async function fetchLending(wallet) {
88
- const pools = await getVesuPools("mainnet");
89
- const tasks = pools.flatMap((pool) => pool.assets.map(async (asset) => {
90
- const supplied = await getSuppliedBalance(wallet, pool.address, asset.symbol);
91
- if (supplied && supplied !== "0") {
92
- return { pool: pool.name, asset: asset.symbol, supplied };
93
- }
94
- return null;
95
- }));
96
- const results = await Promise.allSettled(tasks);
97
- return results
98
- .filter((r) => r.status === "fulfilled" && r.value !== null)
99
- .map((r) => r.value);
100
- }
101
- //# sourceMappingURL=portfolio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../../src/services/portfolio/portfolio.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { TxBuilder } from "starkzap";
2
- export interface SimulationResult {
3
- success: boolean;
4
- estimatedFee: string;
5
- estimatedFeeUsd: string;
6
- callCount: number;
7
- revertReason?: string;
8
- }
9
- export declare function simulateTransaction(builder: TxBuilder): Promise<SimulationResult>;
10
- //# sourceMappingURL=simulate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../../src/services/simulate/simulate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAM1C,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4DvF"}
@@ -1,58 +0,0 @@
1
- import { Amount } from "starkzap";
2
- import { resolveToken } from "../tokens/tokens.js";
3
- import { getTokenUsdPrice } from "../fibrous/route.js";
4
- import { ErrorCode, StarkfiError } from "../../lib/errors.js";
5
- const FEE_TOKEN_SYMBOL = "STRK";
6
- export async function simulateTransaction(builder) {
7
- const calls = await builder.calls();
8
- const callCount = calls.length;
9
- if (callCount === 0) {
10
- throw new StarkfiError(ErrorCode.SIMULATION_FAILED, "No calls to simulate — builder is empty.");
11
- }
12
- const preflight = await builder.preflight();
13
- if (!preflight.ok) {
14
- return {
15
- success: false,
16
- estimatedFee: "N/A",
17
- estimatedFeeUsd: "N/A",
18
- callCount,
19
- revertReason: preflight.reason,
20
- };
21
- }
22
- try {
23
- const feeEstimate = await builder.estimateFee();
24
- const overallFee = BigInt(feeEstimate.overall_fee);
25
- const feeToken = resolveToken(FEE_TOKEN_SYMBOL);
26
- const feeAmount = Amount.fromRaw(overallFee, feeToken);
27
- const feeFormatted = feeAmount.toUnit();
28
- let feeUsd = "unknown";
29
- try {
30
- const tokenPrice = await getTokenUsdPrice(feeToken);
31
- if (tokenPrice > 0) {
32
- const usdValue = parseFloat(feeFormatted) * tokenPrice;
33
- feeUsd = `$${usdValue.toFixed(4)}`;
34
- }
35
- }
36
- catch {
37
- // USD pricing is best-effort
38
- }
39
- return {
40
- success: true,
41
- estimatedFee: `${feeFormatted} ${FEE_TOKEN_SYMBOL}`,
42
- estimatedFeeUsd: feeUsd,
43
- callCount,
44
- };
45
- }
46
- catch (error) {
47
- return {
48
- success: true,
49
- estimatedFee: "estimation failed",
50
- estimatedFeeUsd: "unknown",
51
- callCount,
52
- revertReason: error instanceof Error
53
- ? `Fee estimation failed: ${error.message}`
54
- : "Fee estimation failed",
55
- };
56
- }
57
- }
58
- //# sourceMappingURL=simulate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../../src/services/simulate/simulate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAU9D,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAkB;IAC3D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAE/B,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,iBAAiB,EAC3B,0CAA0C,CAC1C,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAE5C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO;YACN,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,MAAM;SAC9B,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAExC,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;gBACvD,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,6BAA6B;QAC9B,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,GAAG,YAAY,IAAI,gBAAgB,EAAE;YACnD,eAAe,EAAE,MAAM;YACvB,SAAS;SACT,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,mBAAmB;YACjC,eAAe,EAAE,SAAS;YAC1B,SAAS;YACT,YAAY,EACX,KAAK,YAAY,KAAK;gBACrB,CAAC,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE;gBAC3C,CAAC,CAAC,uBAAuB;SAC3B,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -1,49 +0,0 @@
1
- import { type StarkZap } from "starkzap";
2
- import type { StarkZapWallet } from "../starkzap/client.js";
3
- import type { TxResult, Network } from "../../lib/types.js";
4
- export interface ValidatorInfo {
5
- name: string;
6
- address: string;
7
- }
8
- export interface PoolInfo {
9
- poolContract: string;
10
- tokenSymbol: string;
11
- amount: string;
12
- commission?: number;
13
- }
14
- export interface PositionInfo {
15
- staked: string;
16
- rewards: string;
17
- total: string;
18
- unpooling: string;
19
- unpoolTime?: Date;
20
- commissionPercent: number;
21
- }
22
- export interface StakingOverviewPosition {
23
- validator: string;
24
- pool: string;
25
- token: string;
26
- staked: string;
27
- rewards: string;
28
- total: string;
29
- unpooling: string;
30
- cooldownEndsAt: string | null;
31
- commission: string;
32
- }
33
- export interface StakingOverview {
34
- network: string;
35
- address: string;
36
- positions: StakingOverviewPosition[];
37
- }
38
- export declare function resolvePoolForToken(pools: PoolInfo[], tokenSymbol: string): PoolInfo;
39
- export declare function getValidatorPools(sdk: StarkZap, validatorAddress: string, wallet?: StarkZapWallet): Promise<PoolInfo[]>;
40
- export declare function stake(wallet: StarkZapWallet, poolAddress: string, amount: string, tokenSymbol?: string): Promise<TxResult>;
41
- export declare function claimRewards(wallet: StarkZapWallet, poolAddress: string): Promise<TxResult>;
42
- export declare function compoundRewards(wallet: StarkZapWallet, poolAddress: string): Promise<TxResult & {
43
- compounded: string;
44
- }>;
45
- export declare function exitPoolIntent(wallet: StarkZapWallet, poolAddress: string, amount: string, tokenSymbol?: string): Promise<TxResult>;
46
- export declare function exitPool(wallet: StarkZapWallet, poolAddress: string): Promise<TxResult>;
47
- export declare function getPosition(wallet: StarkZapWallet, poolAddress: string): Promise<PositionInfo | null>;
48
- export declare function getStakingOverview(sdk: StarkZap, wallet: StarkZapWallet, network: Network, address: string, targetValidator?: string): Promise<StakingOverview>;
49
- //# sourceMappingURL=staking.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"staking.d.ts","sourceRoot":"","sources":["../../../src/services/staking/staking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,CAWpF;AAED,wBAAsB,iBAAiB,CACtC,GAAG,EAAE,QAAQ,EACb,gBAAgB,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAcrB;AAGD,wBAAsB,KAAK,CAC1B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,WAAW,SAAS,GAClB,OAAO,CAAC,QAAQ,CAAC,CASnB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAajG;AAGD,wBAAsB,eAAe,CACpC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5C;AAGD,wBAAsB,cAAc,CACnC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,WAAW,SAAS,GAClB,OAAO,CAAC,QAAQ,CAAC,CASnB;AAGD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA2B7F;AAED,wBAAsB,WAAW,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAa9B;AAID,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CA6E1B"}
@@ -1,175 +0,0 @@
1
- import { Amount, fromAddress } from "starkzap";
2
- import { resolveToken } from "../tokens/tokens.js";
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;
13
- }
14
- export async function getValidatorPools(sdk, validatorAddress, wallet) {
15
- const pools = await sdk.getStakerPools(fromAddress(validatorAddress));
16
- return Promise.all(pools.map(async (p) => {
17
- const commission = wallet ? await wallet.getPoolCommission(p.poolContract) : undefined;
18
- return {
19
- poolContract: p.poolContract.toString(),
20
- tokenSymbol: p.token.symbol,
21
- amount: p.amount.toFormatted(true),
22
- commission,
23
- };
24
- }));
25
- }
26
- // Smart stake: auto-detects enter vs. add_to_delegation_pool.
27
- export async function stake(wallet, poolAddress, amount, tokenSymbol = "STRK") {
28
- const token = resolveToken(tokenSymbol);
29
- const parsedAmount = Amount.parse(amount, token);
30
- const tx = await wallet.stake(fromAddress(poolAddress), parsedAmount);
31
- return {
32
- hash: tx.hash,
33
- explorerUrl: tx.explorerUrl,
34
- };
35
- }
36
- export async function claimRewards(wallet, poolAddress) {
37
- const position = await wallet.getPoolPosition(fromAddress(poolAddress));
38
- if (!position || position.rewards.isZero()) {
39
- throw new StarkfiError(ErrorCode.STAKING_FAILED, "No rewards to claim for this pool.");
40
- }
41
- const tx = await wallet.claimPoolRewards(fromAddress(poolAddress));
42
- return {
43
- hash: tx.hash,
44
- explorerUrl: tx.explorerUrl,
45
- };
46
- }
47
- // Compound: claim rewards and re-stake them atomically in a single tx.
48
- export async function compoundRewards(wallet, poolAddress) {
49
- const position = await wallet.getPoolPosition(fromAddress(poolAddress));
50
- if (!position || position.rewards.isZero()) {
51
- throw new StarkfiError(ErrorCode.STAKING_FAILED, "No rewards to compound for this pool.");
52
- }
53
- const compounded = position.rewards.toFormatted(true);
54
- const tx = await wallet
55
- .tx()
56
- .claimPoolRewards(fromAddress(poolAddress))
57
- .stake(fromAddress(poolAddress), position.rewards)
58
- .send();
59
- await tx.wait();
60
- return {
61
- hash: tx.hash,
62
- explorerUrl: tx.explorerUrl,
63
- compounded,
64
- };
65
- }
66
- // Step 1 of 2-step exit: declare intent, then wait for cooldown.
67
- export async function exitPoolIntent(wallet, poolAddress, amount, tokenSymbol = "STRK") {
68
- const token = resolveToken(tokenSymbol);
69
- const parsedAmount = Amount.parse(amount, token);
70
- const tx = await wallet.exitPoolIntent(fromAddress(poolAddress), parsedAmount);
71
- return {
72
- hash: tx.hash,
73
- explorerUrl: tx.explorerUrl,
74
- };
75
- }
76
- // Step 2 of 2-step exit: complete withdrawal after cooldown.
77
- export async function exitPool(wallet, poolAddress) {
78
- const position = await wallet.getPoolPosition(fromAddress(poolAddress));
79
- if (!position) {
80
- throw new StarkfiError(ErrorCode.STAKING_FAILED, "Not a member of this pool.");
81
- }
82
- if (position.unpooling.isZero()) {
83
- throw new StarkfiError(ErrorCode.EXIT_NOT_READY, "No exit intent declared. Call 'unstake intent' first.");
84
- }
85
- if (position.unpoolTime && new Date() < position.unpoolTime) {
86
- throw new StarkfiError(ErrorCode.EXIT_NOT_READY, `Cooldown period is still active. Please wait until ${position.unpoolTime.toLocaleString()}`);
87
- }
88
- const tx = await wallet.exitPool(fromAddress(poolAddress));
89
- return {
90
- hash: tx.hash,
91
- explorerUrl: tx.explorerUrl,
92
- };
93
- }
94
- export async function getPosition(wallet, poolAddress) {
95
- const position = await wallet.getPoolPosition(fromAddress(poolAddress));
96
- if (!position)
97
- return null;
98
- return {
99
- staked: position.staked.toFormatted(true),
100
- rewards: position.rewards.toFormatted(true),
101
- total: position.total.toFormatted(true),
102
- unpooling: position.unpooling.toFormatted(true),
103
- unpoolTime: position.unpoolTime ?? undefined,
104
- commissionPercent: position.commissionPercent,
105
- };
106
- }
107
- // Scan all known validators & pools to build a consolidated staking dashboard.
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
- }
121
- // Discover all pools across all validators concurrently.
122
- const validatorPools = await Promise.all(validators.map(async (v) => {
123
- try {
124
- const pools = await sdk.getStakerPools(v.stakerAddress);
125
- return pools.map((p) => ({ validator: v.name, pool: p }));
126
- }
127
- catch {
128
- // Validator's staker contract may not exist on-chain
129
- return [];
130
- }
131
- }));
132
- const allPools = validatorPools.flat();
133
- // Query positions for all discovered pools concurrently.
134
- const results = await Promise.all(allPools.map(async ({ validator, pool: p }) => {
135
- let position;
136
- try {
137
- position = await wallet.getPoolPosition(p.poolContract);
138
- }
139
- catch {
140
- // "Staker does not exist" — user has no position in this pool
141
- return null;
142
- }
143
- if (!position)
144
- return null;
145
- return {
146
- validator,
147
- pool: p.poolContract.toString(),
148
- tokenSymbol: p.token.symbol,
149
- staked: position.staked,
150
- rewards: position.rewards,
151
- total: position.total,
152
- unpooling: position.unpooling,
153
- unpoolTime: position.unpoolTime ?? null,
154
- commissionPercent: position.commissionPercent,
155
- };
156
- }));
157
- const activePositions = results.filter((r) => r !== null);
158
- const positions = activePositions.map((p) => ({
159
- validator: p.validator,
160
- pool: p.pool,
161
- token: p.tokenSymbol,
162
- staked: p.staked.toFormatted(true),
163
- rewards: p.rewards.toFormatted(true),
164
- total: p.total.toFormatted(true),
165
- unpooling: p.unpooling.toFormatted(true),
166
- cooldownEndsAt: p.unpoolTime ? p.unpoolTime.toISOString() : null,
167
- commission: `${p.commissionPercent}%`,
168
- }));
169
- return {
170
- network,
171
- address,
172
- positions,
173
- };
174
- }
175
- //# sourceMappingURL=staking.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/services/staking/staking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAiB,MAAM,UAAU,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0C9D,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,KAAiB,EAAE,WAAmB;IACzE,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,cAAc,EACxB,MAAM,WAAW,8CAA8C,SAAS,EAAE,CAC1E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,GAAa,EACb,gBAAwB,EACxB,MAAuB;IAEvB,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEtE,OAAO,OAAO,CAAC,GAAG,CACjB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,OAAO;YACN,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;YACvC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;YAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;YAClC,UAAU;SACV,CAAC;IACH,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,KAAK,CAC1B,MAAsB,EACtB,WAAmB,EACnB,MAAc,EACd,WAAW,GAAG,MAAM;IAEpB,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;IAEtE,OAAO;QACN,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;KAC3B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB,EAAE,WAAmB;IAC7E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,oCAAoC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAEnE,OAAO;QACN,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;KAC3B,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,MAAsB,EACtB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,uCAAuC,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEtD,MAAM,EAAE,GAAG,MAAM,MAAM;SACrB,EAAE,EAAE;SACJ,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC1C,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;SACjD,IAAI,EAAE,CAAC;IAET,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAEhB,OAAO;QACN,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,UAAU;KACV,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,MAAsB,EACtB,WAAmB,EACnB,MAAc,EACd,WAAW,GAAG,MAAM;IAEpB,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;IAE/E,OAAO;QACN,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;KAC3B,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB,EAAE,WAAmB;IACzE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,cAAc,EACxB,uDAAuD,CACvD,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC7D,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,cAAc,EACxB,sDAAsD,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAC5F,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3D,OAAO;QACN,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;KAC3B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,MAAsB,EACtB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,OAAO;QACN,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACzC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACvC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/C,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,SAAS;QAC5C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;KAC7C,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,GAAa,EACb,MAAsB,EACtB,OAAgB,EAChB,OAAe,EACf,eAAwB;IAExB,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEzE,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACX,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,mBAAmB,EAC7B,cAAc,eAAe,aAAa,CAC1C,CAAC;QACH,CAAC;IACF,CAAC;IAED,yDAAyD;IACzD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACR,qDAAqD;YACrD,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;IAEvC,yDAAyD;IACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QAC7C,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACR,8DAA8D;YAC9D,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,OAAO;YACN,SAAS;YACT,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC/B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,IAAI;YACvC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;SAC7C,CAAC;IACH,CAAC,CAAC,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAE1D,MAAM,SAAS,GAA8B,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,WAAW;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;QACxC,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QAChE,UAAU,EAAE,GAAG,CAAC,CAAC,iBAAiB,GAAG;KACrC,CAAC,CAAC,CAAC;IAEJ,OAAO;QACN,OAAO;QACP,OAAO;QACP,SAAS;KACT,CAAC;AACH,CAAC"}
@@ -1,5 +0,0 @@
1
- import { type Validator } from "starkzap";
2
- import type { Network } from "../../lib/types.js";
3
- export declare function getValidators(network: Network): Validator[];
4
- export declare function findValidator(query: string, network: Network): Validator | null;
5
- //# sourceMappingURL=validators.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/services/staking/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAG3D;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAW/E"}
@@ -1,14 +0,0 @@
1
- import { mainnetValidators, sepoliaValidators } from "starkzap";
2
- // Returns all validator presets for the given network.
3
- export function getValidators(network) {
4
- const presets = network === "mainnet" ? mainnetValidators : sepoliaValidators;
5
- return Object.values(presets);
6
- }
7
- // Resolves a validator by display name (case-insensitive prefix) or raw staker address.
8
- export function findValidator(query, network) {
9
- const validators = getValidators(network);
10
- const lower = query.toLowerCase();
11
- return (validators.find((v) => v.stakerAddress.toString().toLowerCase() === lower ||
12
- v.name.toLowerCase().startsWith(lower)) ?? null);
13
- }
14
- //# sourceMappingURL=validators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/services/staking/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAkB,MAAM,UAAU,CAAC;AAGhF,uDAAuD;AACvD,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC7C,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAgB;IAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAElC,OAAO,CACN,UAAU,CAAC,IAAI,CACd,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK;QAClD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CACvC,IAAI,IAAI,CACT,CAAC;AACH,CAAC"}
@@ -1,19 +0,0 @@
1
- import type { Wallet } from "starkzap";
2
- import { StarkZap, type FeeMode } from "starkzap";
3
- import type { Session } from "../auth/session.js";
4
- import type { Network } from "../../lib/types.js";
5
- export type StarkZapWallet = Wallet;
6
- export declare function resolveFeeModeConfig(gasfreeMode: boolean, gasToken: string | undefined): {
7
- feeMode: FeeMode;
8
- gasTokenAddress: string | undefined;
9
- needsPaymaster: boolean;
10
- };
11
- export declare function createSDK(network?: Network, rpcUrl?: string, needsPaymaster?: boolean, paymasterUrl?: string, paymasterHeaders?: Record<string, string>): StarkZap;
12
- export declare function connectWallet(sdk: StarkZap, session: Session): Promise<Wallet>;
13
- export interface SDKAndWallet {
14
- sdk: StarkZap;
15
- wallet: Wallet;
16
- gasTokenAddress: string | undefined;
17
- }
18
- export declare function initSDKAndWallet(session: Session): Promise<SDKAndWallet>;
19
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
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;AAElD,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,CAkBA;AAkCD,wBAAgB,SAAS,CACxB,OAAO,GAAE,OAAmB,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,UAAQ,EACtB,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,QAAQ,CAaV;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,CAoB9E"}
@@ -1,88 +0,0 @@
1
- import { StarkZap, PrivySigner, ArgentXV050Preset } from "starkzap";
2
- import { ConfigService } from "../config/config.js";
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
- export function resolveFeeModeConfig(gasfreeMode, gasToken) {
6
- if (gasfreeMode) {
7
- return { feeMode: "sponsored", gasTokenAddress: undefined, needsPaymaster: true };
8
- }
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 };
13
- }
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
- // Guarded by runtime type check below
25
- const accountInternal = account;
26
- const exec = accountInternal.executePaymasterTransaction;
27
- if (typeof exec !== "function") {
28
- console.warn("[StarkFi] Cannot patch gasless mode — executePaymasterTransaction not found on account. " +
29
- "Gas will use default sponsored mode. Consider updating StarkZap SDK.");
30
- return;
31
- }
32
- const originalExecutePaymaster = exec.bind(account);
33
- accountInternal.executePaymasterTransaction = async function (calls, details, ...rest) {
34
- const patchedDetails = {
35
- ...details,
36
- feeMode: { mode: "default", gasToken: gasTokenAddress },
37
- };
38
- return originalExecutePaymaster(calls, patchedDetails, ...rest);
39
- };
40
- }
41
- export function createSDK(network = "mainnet", rpcUrl, needsPaymaster = false, paymasterUrl, paymasterHeaders) {
42
- const config = { network };
43
- if (rpcUrl)
44
- config.rpcUrl = rpcUrl;
45
- if (needsPaymaster) {
46
- const defaultUrl = network === "sepolia" ? AVNU_PAYMASTER_SEPOLIA_URL : AVNU_PAYMASTER_URL;
47
- config.paymaster = {
48
- nodeUrl: paymasterUrl ?? defaultUrl,
49
- ...(paymasterHeaders ? { headers: paymasterHeaders } : {}),
50
- };
51
- }
52
- return new StarkZap(config);
53
- }
54
- export async function connectWallet(sdk, session) {
55
- const configService = ConfigService.getInstance();
56
- const gasfreeMode = configService.get("gasfreeMode") === true;
57
- const gasToken = configService.get("gasToken");
58
- const { feeMode, gasTokenAddress } = resolveFeeModeConfig(gasfreeMode, gasToken);
59
- const signer = new PrivySigner({
60
- walletId: session.walletId,
61
- publicKey: session.publicKey,
62
- serverUrl: session.serverUrl,
63
- headers: { Authorization: `Bearer ${session.token}` },
64
- });
65
- const wallet = await sdk.connectWallet({
66
- account: { signer, accountClass: ArgentXV050Preset },
67
- feeMode,
68
- });
69
- if (!gasfreeMode && gasTokenAddress) {
70
- patchGaslessMode(wallet, gasTokenAddress);
71
- }
72
- return wallet;
73
- }
74
- export async function initSDKAndWallet(session) {
75
- const configService = ConfigService.getInstance();
76
- const rpcUrl = configService.get("rpcUrl");
77
- const gasfreeMode = configService.get("gasfreeMode") === true;
78
- const gasToken = configService.get("gasToken");
79
- const { gasTokenAddress, needsPaymaster } = resolveFeeModeConfig(gasfreeMode, gasToken);
80
- const paymasterUrl = session.type === "privy" && session.serverUrl
81
- ? session.serverUrl.replace("/sign/hash", "/paymaster")
82
- : undefined;
83
- const paymasterHeaders = paymasterUrl && session.token ? { Authorization: `Bearer ${session.token}` } : undefined;
84
- const sdk = createSDK(session.network, rpcUrl, needsPaymaster, paymasterUrl, paymasterHeaders);
85
- const wallet = await connectWallet(sdk, session);
86
- return { sdk, wallet, gasTokenAddress };
87
- }
88
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
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
@@ -1 +0,0 @@
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"}