starkfi 0.1.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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/commands/auth/import.d.ts +3 -0
  4. package/dist/commands/auth/import.d.ts.map +1 -0
  5. package/dist/commands/auth/import.js +56 -0
  6. package/dist/commands/auth/import.js.map +1 -0
  7. package/dist/commands/auth/login.d.ts +3 -0
  8. package/dist/commands/auth/login.d.ts.map +1 -0
  9. package/dist/commands/auth/login.js +23 -0
  10. package/dist/commands/auth/login.js.map +1 -0
  11. package/dist/commands/auth/logout.d.ts +3 -0
  12. package/dist/commands/auth/logout.d.ts.map +1 -0
  13. package/dist/commands/auth/logout.js +14 -0
  14. package/dist/commands/auth/logout.js.map +1 -0
  15. package/dist/commands/auth/verify.d.ts +3 -0
  16. package/dist/commands/auth/verify.d.ts.map +1 -0
  17. package/dist/commands/auth/verify.js +64 -0
  18. package/dist/commands/auth/verify.js.map +1 -0
  19. package/dist/commands/chain/tx-status.d.ts +3 -0
  20. package/dist/commands/chain/tx-status.d.ts.map +1 -0
  21. package/dist/commands/chain/tx-status.js +39 -0
  22. package/dist/commands/chain/tx-status.js.map +1 -0
  23. package/dist/commands/config/config.d.ts +3 -0
  24. package/dist/commands/config/config.d.ts.map +1 -0
  25. package/dist/commands/config/config.js +122 -0
  26. package/dist/commands/config/config.js.map +1 -0
  27. package/dist/commands/lending/lending.d.ts +8 -0
  28. package/dist/commands/lending/lending.d.ts.map +1 -0
  29. package/dist/commands/lending/lending.js +201 -0
  30. package/dist/commands/lending/lending.js.map +1 -0
  31. package/dist/commands/staking/staking.d.ts +8 -0
  32. package/dist/commands/staking/staking.d.ts.map +1 -0
  33. package/dist/commands/staking/staking.js +272 -0
  34. package/dist/commands/staking/staking.js.map +1 -0
  35. package/dist/commands/trade/status.d.ts +3 -0
  36. package/dist/commands/trade/status.d.ts.map +1 -0
  37. package/dist/commands/trade/status.js +41 -0
  38. package/dist/commands/trade/status.js.map +1 -0
  39. package/dist/commands/trade/swap.d.ts +3 -0
  40. package/dist/commands/trade/swap.d.ts.map +1 -0
  41. package/dist/commands/trade/swap.js +65 -0
  42. package/dist/commands/trade/swap.js.map +1 -0
  43. package/dist/commands/wallet/address.d.ts +3 -0
  44. package/dist/commands/wallet/address.d.ts.map +1 -0
  45. package/dist/commands/wallet/address.js +20 -0
  46. package/dist/commands/wallet/address.js.map +1 -0
  47. package/dist/commands/wallet/balance.d.ts +3 -0
  48. package/dist/commands/wallet/balance.d.ts.map +1 -0
  49. package/dist/commands/wallet/balance.js +46 -0
  50. package/dist/commands/wallet/balance.js.map +1 -0
  51. package/dist/commands/wallet/deploy.d.ts +3 -0
  52. package/dist/commands/wallet/deploy.d.ts.map +1 -0
  53. package/dist/commands/wallet/deploy.js +73 -0
  54. package/dist/commands/wallet/deploy.js.map +1 -0
  55. package/dist/commands/wallet/send.d.ts +3 -0
  56. package/dist/commands/wallet/send.d.ts.map +1 -0
  57. package/dist/commands/wallet/send.js +51 -0
  58. package/dist/commands/wallet/send.js.map +1 -0
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +62 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/lib/cache.d.ts +3 -0
  64. package/dist/lib/cache.d.ts.map +1 -0
  65. package/dist/lib/cache.js +33 -0
  66. package/dist/lib/cache.js.map +1 -0
  67. package/dist/lib/command.d.ts +3 -0
  68. package/dist/lib/command.d.ts.map +1 -0
  69. package/dist/lib/command.js +6 -0
  70. package/dist/lib/command.js.map +1 -0
  71. package/dist/lib/config.d.ts +16 -0
  72. package/dist/lib/config.d.ts.map +1 -0
  73. package/dist/lib/config.js +30 -0
  74. package/dist/lib/config.js.map +1 -0
  75. package/dist/lib/errors.d.ts +39 -0
  76. package/dist/lib/errors.d.ts.map +1 -0
  77. package/dist/lib/errors.js +45 -0
  78. package/dist/lib/errors.js.map +1 -0
  79. package/dist/lib/format.d.ts +10 -0
  80. package/dist/lib/format.d.ts.map +1 -0
  81. package/dist/lib/format.js +45 -0
  82. package/dist/lib/format.js.map +1 -0
  83. package/dist/lib/validation.d.ts +14 -0
  84. package/dist/lib/validation.d.ts.map +1 -0
  85. package/dist/lib/validation.js +28 -0
  86. package/dist/lib/validation.js.map +1 -0
  87. package/dist/mcp/handlers/auth.d.ts +7 -0
  88. package/dist/mcp/handlers/auth.d.ts.map +1 -0
  89. package/dist/mcp/handlers/auth.js +22 -0
  90. package/dist/mcp/handlers/auth.js.map +1 -0
  91. package/dist/mcp/handlers/config.d.ts +10 -0
  92. package/dist/mcp/handlers/config.d.ts.map +1 -0
  93. package/dist/mcp/handlers/config.js +79 -0
  94. package/dist/mcp/handlers/config.js.map +1 -0
  95. package/dist/mcp/handlers/index.d.ts +7 -0
  96. package/dist/mcp/handlers/index.d.ts.map +1 -0
  97. package/dist/mcp/handlers/index.js +7 -0
  98. package/dist/mcp/handlers/index.js.map +1 -0
  99. package/dist/mcp/handlers/lending.d.ts +62 -0
  100. package/dist/mcp/handlers/lending.d.ts.map +1 -0
  101. package/dist/mcp/handlers/lending.js +101 -0
  102. package/dist/mcp/handlers/lending.js.map +1 -0
  103. package/dist/mcp/handlers/staking.d.ts +56 -0
  104. package/dist/mcp/handlers/staking.d.ts.map +1 -0
  105. package/dist/mcp/handlers/staking.js +110 -0
  106. package/dist/mcp/handlers/staking.js.map +1 -0
  107. package/dist/mcp/handlers/trade.d.ts +22 -0
  108. package/dist/mcp/handlers/trade.d.ts.map +1 -0
  109. package/dist/mcp/handlers/trade.js +57 -0
  110. package/dist/mcp/handlers/trade.js.map +1 -0
  111. package/dist/mcp/handlers/utils.d.ts +13 -0
  112. package/dist/mcp/handlers/utils.d.ts.map +1 -0
  113. package/dist/mcp/handlers/utils.js +7 -0
  114. package/dist/mcp/handlers/utils.js.map +1 -0
  115. package/dist/mcp/handlers/wallet.d.ts +33 -0
  116. package/dist/mcp/handlers/wallet.d.ts.map +1 -0
  117. package/dist/mcp/handlers/wallet.js +83 -0
  118. package/dist/mcp/handlers/wallet.js.map +1 -0
  119. package/dist/mcp/handlers.d.ts +108 -0
  120. package/dist/mcp/handlers.d.ts.map +1 -0
  121. package/dist/mcp/handlers.js +325 -0
  122. package/dist/mcp/handlers.js.map +1 -0
  123. package/dist/mcp/server.d.ts +2 -0
  124. package/dist/mcp/server.d.ts.map +1 -0
  125. package/dist/mcp/server.js +13 -0
  126. package/dist/mcp/server.js.map +1 -0
  127. package/dist/mcp/tools.d.ts +3 -0
  128. package/dist/mcp/tools.d.ts.map +1 -0
  129. package/dist/mcp/tools.js +156 -0
  130. package/dist/mcp/tools.js.map +1 -0
  131. package/dist/services/api/client.d.ts +26 -0
  132. package/dist/services/api/client.d.ts.map +1 -0
  133. package/dist/services/api/client.js +59 -0
  134. package/dist/services/api/client.js.map +1 -0
  135. package/dist/services/auth/session.d.ts +22 -0
  136. package/dist/services/auth/session.d.ts.map +1 -0
  137. package/dist/services/auth/session.js +36 -0
  138. package/dist/services/auth/session.js.map +1 -0
  139. package/dist/services/config/config.d.ts +20 -0
  140. package/dist/services/config/config.d.ts.map +1 -0
  141. package/dist/services/config/config.js +49 -0
  142. package/dist/services/config/config.js.map +1 -0
  143. package/dist/services/fibrous/balances.d.ts +8 -0
  144. package/dist/services/fibrous/balances.d.ts.map +1 -0
  145. package/dist/services/fibrous/balances.js +23 -0
  146. package/dist/services/fibrous/balances.js.map +1 -0
  147. package/dist/services/fibrous/health.d.ts +5 -0
  148. package/dist/services/fibrous/health.d.ts.map +1 -0
  149. package/dist/services/fibrous/health.js +24 -0
  150. package/dist/services/fibrous/health.js.map +1 -0
  151. package/dist/services/fibrous/route.d.ts +42 -0
  152. package/dist/services/fibrous/route.d.ts.map +1 -0
  153. package/dist/services/fibrous/route.js +41 -0
  154. package/dist/services/fibrous/route.js.map +1 -0
  155. package/dist/services/fibrous/tokens.d.ts +6 -0
  156. package/dist/services/fibrous/tokens.d.ts.map +1 -0
  157. package/dist/services/fibrous/tokens.js +34 -0
  158. package/dist/services/fibrous/tokens.js.map +1 -0
  159. package/dist/services/staking/staking.d.ts +70 -0
  160. package/dist/services/staking/staking.d.ts.map +1 -0
  161. package/dist/services/staking/staking.js +170 -0
  162. package/dist/services/staking/staking.js.map +1 -0
  163. package/dist/services/staking/validators.d.ts +6 -0
  164. package/dist/services/staking/validators.d.ts.map +1 -0
  165. package/dist/services/staking/validators.js +14 -0
  166. package/dist/services/staking/validators.js.map +1 -0
  167. package/dist/services/starkzap/client.d.ts +18 -0
  168. package/dist/services/starkzap/client.d.ts.map +1 -0
  169. package/dist/services/starkzap/client.js +65 -0
  170. package/dist/services/starkzap/client.js.map +1 -0
  171. package/dist/services/tokens/balances.d.ts +8 -0
  172. package/dist/services/tokens/balances.d.ts.map +1 -0
  173. package/dist/services/tokens/balances.js +23 -0
  174. package/dist/services/tokens/balances.js.map +1 -0
  175. package/dist/services/tokens/tokens.d.ts +5 -0
  176. package/dist/services/tokens/tokens.d.ts.map +1 -0
  177. package/dist/services/tokens/tokens.js +24 -0
  178. package/dist/services/tokens/tokens.js.map +1 -0
  179. package/dist/services/vesu/index.d.ts +3 -0
  180. package/dist/services/vesu/index.d.ts.map +1 -0
  181. package/dist/services/vesu/index.js +3 -0
  182. package/dist/services/vesu/index.js.map +1 -0
  183. package/dist/services/vesu/lending.d.ts +17 -0
  184. package/dist/services/vesu/lending.d.ts.map +1 -0
  185. package/dist/services/vesu/lending.js +153 -0
  186. package/dist/services/vesu/lending.js.map +1 -0
  187. package/dist/services/vesu/pools.d.ts +13 -0
  188. package/dist/services/vesu/pools.d.ts.map +1 -0
  189. package/dist/services/vesu/pools.js +35 -0
  190. package/dist/services/vesu/pools.js.map +1 -0
  191. package/package.json +83 -0
@@ -0,0 +1,65 @@
1
+ import { requireSession } from "../../services/auth/session.js";
2
+ import { initSDKAndWallet } from "../../services/starkzap/client.js";
3
+ import { resolveToken } from "../../services/tokens/tokens.js";
4
+ import { getRoute, getCalldata } from "../../services/fibrous/route.js";
5
+ import { createSpinner, formatResult } from "../../lib/format.js";
6
+ import { FIBROUS_ROUTER_ADDRESS } from "../../lib/config.js";
7
+ import { Amount, fromAddress } from "starkzap";
8
+ export function registerSwapCommand(program) {
9
+ program
10
+ .command("trade")
11
+ .description("Swap tokens using Fibrous aggregation")
12
+ .argument("<amount>", "Amount to swap")
13
+ .argument("<from>", "Source token symbol")
14
+ .argument("<to>", "Destination token symbol")
15
+ .option("-s, --slippage <percent>", "Slippage tolerance %", "0.5")
16
+ .action(async (amount, from, to, opts) => {
17
+ const spinner = createSpinner("Finding best route...").start();
18
+ try {
19
+ const session = requireSession();
20
+ const { wallet } = await initSDKAndWallet(session);
21
+ await wallet.ensureReady({ deploy: "if_needed" });
22
+ const tokenIn = await resolveToken(from);
23
+ const tokenOut = await resolveToken(to);
24
+ const parsedAmount = Amount.parse(amount, tokenIn);
25
+ const rawAmount = parsedAmount.toBase().toString();
26
+ const slippage = parseFloat(opts.slippage);
27
+ spinner.text = "Calculating route...";
28
+ const route = await getRoute(tokenIn, tokenOut, rawAmount);
29
+ const outputAmount = Amount.fromRaw(route.outputAmount, tokenOut);
30
+ const outputFormatted = outputAmount.toUnit();
31
+ console.log(`\n Route: ${amount} ${tokenIn.symbol} → ~${outputFormatted} ${tokenOut.symbol}`);
32
+ if (route.estimatedGasUsedInUsd) {
33
+ console.log(` Est. gas: ~$${route.estimatedGasUsedInUsd.toFixed(4)}`);
34
+ }
35
+ console.log(` Slippage: ${slippage}%\n`);
36
+ spinner.text = "Generating calldata...";
37
+ const calldataResponse = await getCalldata(tokenIn, tokenOut, rawAmount, slippage, session.address);
38
+ spinner.text = "Executing swap...";
39
+ const tx = await wallet
40
+ .tx()
41
+ .approve(tokenIn, fromAddress(FIBROUS_ROUTER_ADDRESS), parsedAmount)
42
+ .add({
43
+ contractAddress: FIBROUS_ROUTER_ADDRESS,
44
+ entrypoint: "swap",
45
+ calldata: calldataResponse.calldata,
46
+ })
47
+ .send();
48
+ spinner.text = "Waiting for confirmation...";
49
+ await tx.wait();
50
+ spinner.succeed("Swap confirmed");
51
+ console.log(formatResult({
52
+ input: `${amount} ${tokenIn.symbol}`,
53
+ output: `~${outputFormatted} ${tokenOut.symbol}`,
54
+ txHash: tx.hash,
55
+ explorer: tx.explorerUrl,
56
+ }));
57
+ }
58
+ catch (error) {
59
+ spinner.fail("Swap failed");
60
+ console.error(error instanceof Error ? error.message : error);
61
+ process.exit(1);
62
+ }
63
+ });
64
+ }
65
+ //# sourceMappingURL=swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/commands/trade/swap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerAddressCommand(program: Command): void;
3
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB7D"}
@@ -0,0 +1,20 @@
1
+ import { loadSession } from "../../services/auth/session.js";
2
+ import { formatResult, warn } from "../../lib/format.js";
3
+ export function registerAddressCommand(program) {
4
+ program
5
+ .command("address")
6
+ .description("Show current wallet address")
7
+ .action(() => {
8
+ const session = loadSession();
9
+ if (!session) {
10
+ console.log(warn("Not authenticated. Run 'starkfi auth login' or 'starkfi auth import' first."));
11
+ process.exit(1);
12
+ }
13
+ console.log(formatResult({
14
+ address: session.address,
15
+ network: session.network,
16
+ type: session.type,
17
+ }));
18
+ });
19
+ }
20
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/commands/wallet/address.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACtD,OAAO;SACL,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,GAAG,EAAE;QACZ,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACV,IAAI,CACH,6EAA6E,CAC7E,CACD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;SAClB,CAAC,CACF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerBalanceCommand(program: Command): void;
3
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmD7D"}
@@ -0,0 +1,46 @@
1
+ import { requireSession } from "../../services/auth/session.js";
2
+ import { getBalances } from "../../services/tokens/balances.js";
3
+ import { resolveToken } from "../../services/tokens/tokens.js";
4
+ import { initSDKAndWallet } from "../../services/starkzap/client.js";
5
+ import { createSpinner, formatTable, formatResult } from "../../lib/format.js";
6
+ export function registerBalanceCommand(program) {
7
+ program
8
+ .command("balance")
9
+ .description("Show wallet balance for all tokens or a specific token")
10
+ .option("-t, --token <symbol>", "Specific token symbol (e.g. STRK, ETH)")
11
+ .action(async (opts) => {
12
+ const spinner = createSpinner("Fetching balances...").start();
13
+ try {
14
+ const session = requireSession();
15
+ const { wallet } = await initSDKAndWallet(session);
16
+ if (opts.token) {
17
+ const tokenType = await resolveToken(opts.token);
18
+ const balanceAmount = await wallet.balanceOf(tokenType);
19
+ spinner.stop();
20
+ console.log(formatResult({
21
+ token: tokenType.symbol,
22
+ balance: balanceAmount.toUnit(),
23
+ network: session.network,
24
+ }));
25
+ }
26
+ else {
27
+ const balances = await getBalances(wallet);
28
+ spinner.stop();
29
+ console.log(`\n Wallet: ${session.address}`);
30
+ console.log(` Network: ${session.network}\n`);
31
+ if (balances.length === 0) {
32
+ console.log(" No balances found.\n");
33
+ return;
34
+ }
35
+ console.log(formatTable(["Token", "Balance"], balances.map((b) => [b.symbol, b.balance])));
36
+ console.log();
37
+ }
38
+ }
39
+ catch (error) {
40
+ spinner.fail("Failed to fetch balances");
41
+ console.error(error instanceof Error ? error.message : error);
42
+ process.exit(1);
43
+ }
44
+ });
45
+ }
46
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/commands/wallet/balance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACtD,OAAO;SACL,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEjD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEf,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;oBACZ,KAAK,EAAE,SAAS,CAAC,MAAM;oBACvB,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE;oBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC,CACF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEf,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO;gBACR,CAAC;gBAED,OAAO,CAAC,GAAG,CACV,WAAW,CACV,CAAC,OAAO,EAAE,SAAS,CAAC,EACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAC1C,CACD,CAAC;gBACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerDeployCommand(program: Command): void;
3
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF5D"}
@@ -0,0 +1,73 @@
1
+ import { requireSession } from "../../services/auth/session.js";
2
+ import { initSDKAndWallet, resolveFeeModeConfig } from "../../services/starkzap/client.js";
3
+ import { ConfigService } from "../../services/config/config.js";
4
+ import { createSpinner, success, warn, formatResult } from "../../lib/format.js";
5
+ export function registerDeployCommand(program) {
6
+ program
7
+ .command("deploy")
8
+ .description("Deploy your Starknet account on-chain (required before sending transactions)")
9
+ .action(async () => {
10
+ const session = requireSession();
11
+ const spinner = createSpinner("Checking account status...").start();
12
+ try {
13
+ const { wallet } = await initSDKAndWallet(session);
14
+ const configService = ConfigService.getInstance();
15
+ const gasfreeMode = configService.get("gasfreeMode") === true;
16
+ const gasToken = configService.get("gasToken");
17
+ const { feeMode } = resolveFeeModeConfig(gasfreeMode, gasToken);
18
+ const wasAlreadyDeployed = await wallet.isDeployed();
19
+ await wallet.ensureReady({
20
+ deploy: "if_needed",
21
+ feeMode,
22
+ onProgress: (event) => {
23
+ switch (event.step) {
24
+ case "CONNECTED":
25
+ spinner.text = "Connected. Checking deployment...";
26
+ break;
27
+ case "CHECK_DEPLOYED":
28
+ spinner.text = "Verifying on-chain status...";
29
+ break;
30
+ case "DEPLOYING":
31
+ spinner.text = "Deploying account...";
32
+ break;
33
+ case "READY":
34
+ break;
35
+ }
36
+ },
37
+ });
38
+ if (wasAlreadyDeployed) {
39
+ spinner.succeed("Account already deployed");
40
+ console.log(formatResult({
41
+ address: session.address,
42
+ network: session.network,
43
+ status: "deployed",
44
+ }));
45
+ }
46
+ else {
47
+ spinner.succeed("Account deployed successfully");
48
+ console.log(formatResult({
49
+ address: session.address,
50
+ network: session.network,
51
+ status: "deployed",
52
+ }));
53
+ console.log(success("Your account is ready! You can now use send, swap, and other commands."));
54
+ }
55
+ }
56
+ catch (error) {
57
+ const msg = error instanceof Error ? error.message : String(error);
58
+ spinner.fail("Deployment failed");
59
+ if (msg.includes("exceed balance") || msg.includes("insufficient")) {
60
+ console.error(warn(`Insufficient balance for deployment gas fees.\n` +
61
+ ` Send some ETH or STRK to your address first:\n` +
62
+ ` ${session.address}\n\n` +
63
+ ` Or enable gasfree mode:\n` +
64
+ ` starkfi config set-gasfree on`));
65
+ }
66
+ else {
67
+ console.error(msg);
68
+ }
69
+ process.exit(1);
70
+ }
71
+ });
72
+ }
73
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/wallet/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerSendCommand(program: Command): void;
3
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD1D"}
@@ -0,0 +1,51 @@
1
+ import { Amount, fromAddress } from "starkzap";
2
+ import { requireSession } from "../../services/auth/session.js";
3
+ import { initSDKAndWallet } from "../../services/starkzap/client.js";
4
+ import { resolveToken } from "../../services/tokens/tokens.js";
5
+ import { createSpinner, formatResult } from "../../lib/format.js";
6
+ import { validateAddress } from "../../lib/validation.js";
7
+ export function registerSendCommand(program) {
8
+ program
9
+ .command("send")
10
+ .description("Send tokens to a recipient")
11
+ .argument("<amount>", "Amount to send")
12
+ .argument("<token>", "Token symbol (e.g. STRK, ETH, USDC)")
13
+ .argument("<to>", "Recipient Starknet address")
14
+ .action(async (amount, token, to) => {
15
+ const spinner = createSpinner("Preparing transfer...").start();
16
+ try {
17
+ const validatedTo = validateAddress(to);
18
+ const session = requireSession();
19
+ const { wallet } = await initSDKAndWallet(session);
20
+ await wallet.ensureReady({ deploy: "if_needed" });
21
+ const tokenObj = await resolveToken(token);
22
+ const parsedAmount = Amount.parse(amount, tokenObj);
23
+ const balanceAmount = await wallet.balanceOf(tokenObj);
24
+ if (balanceAmount.lt(parsedAmount)) {
25
+ spinner.fail(`Insufficient balance.`);
26
+ console.error(`You have: ${balanceAmount.toFormatted()}`);
27
+ console.error(`Attempting to send: ${parsedAmount.toFormatted()}`);
28
+ process.exit(1);
29
+ }
30
+ spinner.text = "Executing transfer...";
31
+ const tx = await wallet.transfer(tokenObj, [
32
+ { to: fromAddress(validatedTo), amount: parsedAmount },
33
+ ]);
34
+ spinner.text = "Waiting for confirmation...";
35
+ await tx.wait();
36
+ spinner.succeed("Transfer confirmed");
37
+ console.log(formatResult({
38
+ amount: `${amount} ${token.toUpperCase()}`,
39
+ to: validatedTo,
40
+ txHash: tx.hash,
41
+ explorer: tx.explorerUrl,
42
+ }));
43
+ }
44
+ catch (error) {
45
+ spinner.fail("Transfer failed");
46
+ console.error(error instanceof Error ? error.message : error);
47
+ process.exit(1);
48
+ }
49
+ });
50
+ }
51
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from "node:module";
3
+ import { Command } from "commander";
4
+ import { formatError } from "./lib/format.js";
5
+ import { startMcpServer } from "./mcp/server.js";
6
+ const require = createRequire(import.meta.url);
7
+ const { version } = require("../package.json");
8
+ import { registerLoginCommand } from "./commands/auth/login.js";
9
+ import { registerVerifyCommand } from "./commands/auth/verify.js";
10
+ import { registerImportCommand } from "./commands/auth/import.js";
11
+ import { registerLogoutCommand } from "./commands/auth/logout.js";
12
+ import { registerAddressCommand } from "./commands/wallet/address.js";
13
+ import { registerBalanceCommand } from "./commands/wallet/balance.js";
14
+ import { registerSendCommand } from "./commands/wallet/send.js";
15
+ import { registerDeployCommand } from "./commands/wallet/deploy.js";
16
+ import { registerSwapCommand } from "./commands/trade/swap.js";
17
+ import { registerStatusCommand } from "./commands/trade/status.js";
18
+ import { registerTxStatusCommand } from "./commands/chain/tx-status.js";
19
+ import { registerStakeCommand, registerUnstakeCommand, registerRewardsCommand, registerPoolsCommand, registerValidatorsCommand, registerStakingStatsCommand, } from "./commands/staking/staking.js";
20
+ import { registerConfigCommand } from "./commands/config/config.js";
21
+ import { registerLendPoolsCommand, registerLendSupplyCommand, registerLendWithdrawCommand, registerLendBorrowCommand, registerLendRepayCommand, registerLendStatusCommand, } from "./commands/lending/lending.js";
22
+ const program = new Command();
23
+ program
24
+ .name("starkfi")
25
+ .description("Starknet DeFi CLI — Token swaps, staking, lending, gasless transactions")
26
+ .version(version)
27
+ .showHelpAfterError();
28
+ registerLoginCommand(program);
29
+ registerVerifyCommand(program);
30
+ registerImportCommand(program);
31
+ registerLogoutCommand(program);
32
+ registerAddressCommand(program);
33
+ registerBalanceCommand(program);
34
+ registerSendCommand(program);
35
+ registerDeployCommand(program);
36
+ registerSwapCommand(program);
37
+ registerStatusCommand(program);
38
+ registerTxStatusCommand(program);
39
+ registerStakeCommand(program);
40
+ registerUnstakeCommand(program);
41
+ registerRewardsCommand(program);
42
+ registerPoolsCommand(program);
43
+ registerValidatorsCommand(program);
44
+ registerStakingStatsCommand(program);
45
+ registerLendPoolsCommand(program);
46
+ registerLendSupplyCommand(program);
47
+ registerLendWithdrawCommand(program);
48
+ registerLendBorrowCommand(program);
49
+ registerLendRepayCommand(program);
50
+ registerLendStatusCommand(program);
51
+ registerConfigCommand(program);
52
+ program
53
+ .command("mcp-start")
54
+ .description("Start the MCP server (stdio transport)")
55
+ .action(async () => {
56
+ await startMcpServer();
57
+ });
58
+ program.parseAsync().catch((error) => {
59
+ console.error(formatError(error));
60
+ process.exit(1);
61
+ });
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function getCached<T>(key: string, ttl?: number): T | null;
2
+ export declare function setCache<T>(key: string, data: T, ttl?: number): void;
3
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"AAUA,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAY,GAAG,CAAC,GAAG,IAAI,CAiBnE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAY,GAAG,IAAI,CAevE"}
@@ -0,0 +1,33 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { CACHE_DIR, CACHE_TTL } from "./config.js";
4
+ export function getCached(key, ttl = CACHE_TTL) {
5
+ const filePath = join(CACHE_DIR, `${key}.json`);
6
+ if (!existsSync(filePath))
7
+ return null;
8
+ try {
9
+ const raw = readFileSync(filePath, "utf-8");
10
+ const entry = JSON.parse(raw);
11
+ if (Date.now() - entry.timestamp > (entry.ttl || ttl)) {
12
+ return null; // expired
13
+ }
14
+ return entry.data;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ export function setCache(key, data, ttl = CACHE_TTL) {
21
+ const filePath = join(CACHE_DIR, `${key}.json`);
22
+ const dir = dirname(filePath);
23
+ if (!existsSync(dir)) {
24
+ mkdirSync(dir, { recursive: true });
25
+ }
26
+ const entry = {
27
+ data,
28
+ timestamp: Date.now(),
29
+ ttl,
30
+ };
31
+ writeFileSync(filePath, JSON.stringify(entry), "utf-8");
32
+ }
33
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQnD,MAAM,UAAU,SAAS,CAAI,GAAW,EAAE,GAAG,GAAG,SAAS;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,CAAC,UAAU;QACxB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,GAAW,EAAE,IAAO,EAAE,GAAG,GAAG,SAAS;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAkB;QAC5B,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG;KACH,CAAC;IAEF,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function getOrCreateAuthCommand(program: Command): Command;
3
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAKhE"}
@@ -0,0 +1,6 @@
1
+ // Returns the existing 'auth' subcommand or creates it.
2
+ export function getOrCreateAuthCommand(program) {
3
+ return (program.commands.find((c) => c.name() === "auth") ??
4
+ program.command("auth").description("Authentication commands"));
5
+ }
6
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAEA,wDAAwD;AACxD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACtD,OAAO,CACN,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAC9D,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const FIBROUS_BASE_URL = "https://api.fibrous.finance/starknet";
2
+ export declare const FIBROUS_GRAPH_URL = "https://graph.fibrous.finance/starknet";
3
+ export declare const DEFAULT_SLIPPAGE = 1;
4
+ export declare const AVNU_PAYMASTER_URL = "https://starknet.paymaster.avnu.fi";
5
+ export declare const AVNU_PAYMASTER_SEPOLIA_URL = "https://sepolia.paymaster.avnu.fi";
6
+ export declare const GAS_TOKEN_ADDRESSES: Record<string, string>;
7
+ export declare const GASLESS_SUPPORTED_TOKENS: string[];
8
+ export declare const STARKFI_API_URL_DEFAULT = "http://localhost:3001";
9
+ export declare const DEFAULT_NETWORK: "mainnet";
10
+ export declare const FIBROUS_ROUTER_ADDRESS = "0x00f6f4CF62E3C010E0aC2451cC7807b5eEc19a40b0FaaCd00CCA3914280FDf5a";
11
+ export declare const DATA_DIR: string;
12
+ export declare const CACHE_DIR: string;
13
+ export declare const CONFIG_DIR: string;
14
+ export declare const CACHE_TTL: number;
15
+ export declare function explorerUrl(hash: string, network: "mainnet" | "sepolia"): string;
16
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AACvE,eAAO,MAAM,iBAAiB,2CAA2C,CAAC;AAC1E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,eAAO,MAAM,kBAAkB,uCAAuC,CAAC;AACvE,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAI9E,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtD,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAmC,CAAC;AAEzE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAG,SAAkB,CAAC;AAElD,eAAO,MAAM,sBAAsB,uEACkC,CAAC;AAEtE,eAAO,MAAM,QAAQ,QAAa,CAAC;AACnC,eAAO,MAAM,SAAS,QAAc,CAAC;AACrC,eAAO,MAAM,UAAU,QAAe,CAAC;AACvC,eAAO,MAAM,SAAS,QAAsB,CAAC;AAG7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAIhF"}
@@ -0,0 +1,30 @@
1
+ import envPaths from "env-paths";
2
+ const paths = envPaths("starkfi");
3
+ export const FIBROUS_BASE_URL = "https://api.fibrous.finance/starknet";
4
+ export const FIBROUS_GRAPH_URL = "https://graph.fibrous.finance/starknet";
5
+ export const DEFAULT_SLIPPAGE = 1;
6
+ export const AVNU_PAYMASTER_URL = "https://starknet.paymaster.avnu.fi";
7
+ export const AVNU_PAYMASTER_SEPOLIA_URL = "https://sepolia.paymaster.avnu.fi";
8
+ // Tokens accepted by AVNU Paymaster for Gasless mode (user pays gas in these tokens).
9
+ // Maps uppercase symbol → on-chain Starknet address.
10
+ export const GAS_TOKEN_ADDRESSES = {
11
+ ETH: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
12
+ STRK: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
13
+ USDC: "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb",
14
+ USDT: "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8",
15
+ DAI: "0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad",
16
+ };
17
+ export const GASLESS_SUPPORTED_TOKENS = Object.keys(GAS_TOKEN_ADDRESSES);
18
+ export const STARKFI_API_URL_DEFAULT = "http://localhost:3001";
19
+ export const DEFAULT_NETWORK = "mainnet";
20
+ export const FIBROUS_ROUTER_ADDRESS = "0x00f6f4CF62E3C010E0aC2451cC7807b5eEc19a40b0FaaCd00CCA3914280FDf5a";
21
+ export const DATA_DIR = paths.data;
22
+ export const CACHE_DIR = paths.cache;
23
+ export const CONFIG_DIR = paths.config;
24
+ export const CACHE_TTL = 24 * 60 * 60 * 1000; // 24 hours
25
+ // Returns the Voyager block explorer URL for a transaction hash.
26
+ export function explorerUrl(hash, network) {
27
+ const base = network === "mainnet" ? "https://voyager.online" : "https://sepolia.voyager.online";
28
+ return `${base}/tx/${hash}`;
29
+ }
30
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,wCAAwC,CAAC;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,oCAAoC,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAAmC,CAAC;AAE9E,sFAAsF;AACtF,qDAAqD;AACrD,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;AAEzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAG,SAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,sBAAsB,GAClC,oEAAoE,CAAC;AAEtE,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAEzD,iEAAiE;AACjE,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAA8B;IACvE,MAAM,IAAI,GACT,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gCAAgC,CAAC;IACrF,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,39 @@
1
+ export declare enum ErrorCode {
2
+ AUTH_REQUIRED = "AUTH_REQUIRED",
3
+ AUTH_FAILED = "AUTH_FAILED",
4
+ SESSION_EXPIRED = "SESSION_EXPIRED",
5
+ WALLET_NOT_DEPLOYED = "WALLET_NOT_DEPLOYED",
6
+ WALLET_NOT_FOUND = "WALLET_NOT_FOUND",
7
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
8
+ TX_FAILED = "TX_FAILED",
9
+ TX_NOT_FOUND = "TX_NOT_FOUND",
10
+ SIMULATION_FAILED = "SIMULATION_FAILED",
11
+ SWAP_FAILED = "SWAP_FAILED",
12
+ NO_ROUTE_FOUND = "NO_ROUTE_FOUND",
13
+ SLIPPAGE_EXCEEDED = "SLIPPAGE_EXCEEDED",
14
+ STAKING_FAILED = "STAKING_FAILED",
15
+ LENDING_FAILED = "LENDING_FAILED",
16
+ POOL_NOT_FOUND = "POOL_NOT_FOUND",
17
+ EXIT_NOT_READY = "EXIT_NOT_READY",
18
+ PAYMASTER_ERROR = "PAYMASTER_ERROR",
19
+ INVALID_CONFIG = "INVALID_CONFIG",
20
+ INVALID_ADDRESS = "INVALID_ADDRESS",
21
+ INVALID_AMOUNT = "INVALID_AMOUNT",
22
+ NETWORK_ERROR = "NETWORK_ERROR",
23
+ RATE_LIMITED = "RATE_LIMITED",
24
+ UNKNOWN = "UNKNOWN"
25
+ }
26
+ export declare class StarkfiError extends Error {
27
+ readonly code: ErrorCode;
28
+ readonly details?: unknown | undefined;
29
+ constructor(code: ErrorCode, message: string, details?: unknown | undefined, options?: {
30
+ cause?: unknown;
31
+ });
32
+ toJSON(): {
33
+ details?: {} | undefined;
34
+ error: boolean;
35
+ code: ErrorCode;
36
+ message: string;
37
+ };
38
+ }
39
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACpB,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,OAAO,YAAY;CACnB;AAED,qBAAa,YAAa,SAAQ,KAAK;aAErB,IAAI,EAAE,SAAS;aAEf,OAAO,CAAC,EAAE,OAAO;gBAFjB,IAAI,EAAE,SAAS,EAC/B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,OAAO,YAAA,EACjC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAM9B,MAAM;;;;;;CAQN"}
@@ -0,0 +1,45 @@
1
+ export var ErrorCode;
2
+ (function (ErrorCode) {
3
+ ErrorCode["AUTH_REQUIRED"] = "AUTH_REQUIRED";
4
+ ErrorCode["AUTH_FAILED"] = "AUTH_FAILED";
5
+ ErrorCode["SESSION_EXPIRED"] = "SESSION_EXPIRED";
6
+ ErrorCode["WALLET_NOT_DEPLOYED"] = "WALLET_NOT_DEPLOYED";
7
+ ErrorCode["WALLET_NOT_FOUND"] = "WALLET_NOT_FOUND";
8
+ ErrorCode["INSUFFICIENT_BALANCE"] = "INSUFFICIENT_BALANCE";
9
+ ErrorCode["TX_FAILED"] = "TX_FAILED";
10
+ ErrorCode["TX_NOT_FOUND"] = "TX_NOT_FOUND";
11
+ ErrorCode["SIMULATION_FAILED"] = "SIMULATION_FAILED";
12
+ ErrorCode["SWAP_FAILED"] = "SWAP_FAILED";
13
+ ErrorCode["NO_ROUTE_FOUND"] = "NO_ROUTE_FOUND";
14
+ ErrorCode["SLIPPAGE_EXCEEDED"] = "SLIPPAGE_EXCEEDED";
15
+ ErrorCode["STAKING_FAILED"] = "STAKING_FAILED";
16
+ ErrorCode["LENDING_FAILED"] = "LENDING_FAILED";
17
+ ErrorCode["POOL_NOT_FOUND"] = "POOL_NOT_FOUND";
18
+ ErrorCode["EXIT_NOT_READY"] = "EXIT_NOT_READY";
19
+ ErrorCode["PAYMASTER_ERROR"] = "PAYMASTER_ERROR";
20
+ ErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
21
+ ErrorCode["INVALID_ADDRESS"] = "INVALID_ADDRESS";
22
+ ErrorCode["INVALID_AMOUNT"] = "INVALID_AMOUNT";
23
+ ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
24
+ ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
25
+ ErrorCode["UNKNOWN"] = "UNKNOWN";
26
+ })(ErrorCode || (ErrorCode = {}));
27
+ export class StarkfiError extends Error {
28
+ code;
29
+ details;
30
+ constructor(code, message, details, options) {
31
+ super(message, options);
32
+ this.code = code;
33
+ this.details = details;
34
+ this.name = "StarkfiError";
35
+ }
36
+ toJSON() {
37
+ return {
38
+ error: true,
39
+ code: this.code,
40
+ message: this.message,
41
+ ...(this.details ? { details: this.details } : {}),
42
+ };
43
+ }
44
+ }
45
+ //# sourceMappingURL=errors.js.map