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.
- package/LICENSE +21 -0
- package/README.md +83 -0
- package/dist/commands/auth/import.d.ts +3 -0
- package/dist/commands/auth/import.d.ts.map +1 -0
- package/dist/commands/auth/import.js +56 -0
- package/dist/commands/auth/import.js.map +1 -0
- package/dist/commands/auth/login.d.ts +3 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +23 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +3 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +14 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/verify.d.ts +3 -0
- package/dist/commands/auth/verify.d.ts.map +1 -0
- package/dist/commands/auth/verify.js +64 -0
- package/dist/commands/auth/verify.js.map +1 -0
- package/dist/commands/chain/tx-status.d.ts +3 -0
- package/dist/commands/chain/tx-status.d.ts.map +1 -0
- package/dist/commands/chain/tx-status.js +39 -0
- package/dist/commands/chain/tx-status.js.map +1 -0
- package/dist/commands/config/config.d.ts +3 -0
- package/dist/commands/config/config.d.ts.map +1 -0
- package/dist/commands/config/config.js +122 -0
- package/dist/commands/config/config.js.map +1 -0
- package/dist/commands/lending/lending.d.ts +8 -0
- package/dist/commands/lending/lending.d.ts.map +1 -0
- package/dist/commands/lending/lending.js +201 -0
- package/dist/commands/lending/lending.js.map +1 -0
- package/dist/commands/staking/staking.d.ts +8 -0
- package/dist/commands/staking/staking.d.ts.map +1 -0
- package/dist/commands/staking/staking.js +272 -0
- package/dist/commands/staking/staking.js.map +1 -0
- package/dist/commands/trade/status.d.ts +3 -0
- package/dist/commands/trade/status.d.ts.map +1 -0
- package/dist/commands/trade/status.js +41 -0
- package/dist/commands/trade/status.js.map +1 -0
- package/dist/commands/trade/swap.d.ts +3 -0
- package/dist/commands/trade/swap.d.ts.map +1 -0
- package/dist/commands/trade/swap.js +65 -0
- package/dist/commands/trade/swap.js.map +1 -0
- package/dist/commands/wallet/address.d.ts +3 -0
- package/dist/commands/wallet/address.d.ts.map +1 -0
- package/dist/commands/wallet/address.js +20 -0
- package/dist/commands/wallet/address.js.map +1 -0
- package/dist/commands/wallet/balance.d.ts +3 -0
- package/dist/commands/wallet/balance.d.ts.map +1 -0
- package/dist/commands/wallet/balance.js +46 -0
- package/dist/commands/wallet/balance.js.map +1 -0
- package/dist/commands/wallet/deploy.d.ts +3 -0
- package/dist/commands/wallet/deploy.d.ts.map +1 -0
- package/dist/commands/wallet/deploy.js +73 -0
- package/dist/commands/wallet/deploy.js.map +1 -0
- package/dist/commands/wallet/send.d.ts +3 -0
- package/dist/commands/wallet/send.d.ts.map +1 -0
- package/dist/commands/wallet/send.js +51 -0
- package/dist/commands/wallet/send.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +3 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +33 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/command.d.ts +3 -0
- package/dist/lib/command.d.ts.map +1 -0
- package/dist/lib/command.js +6 -0
- package/dist/lib/command.js.map +1 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +30 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +39 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +45 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/format.d.ts +10 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +45 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/validation.d.ts +14 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +28 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/mcp/handlers/auth.d.ts +7 -0
- package/dist/mcp/handlers/auth.d.ts.map +1 -0
- package/dist/mcp/handlers/auth.js +22 -0
- package/dist/mcp/handlers/auth.js.map +1 -0
- package/dist/mcp/handlers/config.d.ts +10 -0
- package/dist/mcp/handlers/config.d.ts.map +1 -0
- package/dist/mcp/handlers/config.js +79 -0
- package/dist/mcp/handlers/config.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +7 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +7 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/handlers/lending.d.ts +62 -0
- package/dist/mcp/handlers/lending.d.ts.map +1 -0
- package/dist/mcp/handlers/lending.js +101 -0
- package/dist/mcp/handlers/lending.js.map +1 -0
- package/dist/mcp/handlers/staking.d.ts +56 -0
- package/dist/mcp/handlers/staking.d.ts.map +1 -0
- package/dist/mcp/handlers/staking.js +110 -0
- package/dist/mcp/handlers/staking.js.map +1 -0
- package/dist/mcp/handlers/trade.d.ts +22 -0
- package/dist/mcp/handlers/trade.d.ts.map +1 -0
- package/dist/mcp/handlers/trade.js +57 -0
- package/dist/mcp/handlers/trade.js.map +1 -0
- package/dist/mcp/handlers/utils.d.ts +13 -0
- package/dist/mcp/handlers/utils.d.ts.map +1 -0
- package/dist/mcp/handlers/utils.js +7 -0
- package/dist/mcp/handlers/utils.js.map +1 -0
- package/dist/mcp/handlers/wallet.d.ts +33 -0
- package/dist/mcp/handlers/wallet.d.ts.map +1 -0
- package/dist/mcp/handlers/wallet.js +83 -0
- package/dist/mcp/handlers/wallet.js.map +1 -0
- package/dist/mcp/handlers.d.ts +108 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +325 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +13 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +3 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +156 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/services/api/client.d.ts +26 -0
- package/dist/services/api/client.d.ts.map +1 -0
- package/dist/services/api/client.js +59 -0
- package/dist/services/api/client.js.map +1 -0
- package/dist/services/auth/session.d.ts +22 -0
- package/dist/services/auth/session.d.ts.map +1 -0
- package/dist/services/auth/session.js +36 -0
- package/dist/services/auth/session.js.map +1 -0
- package/dist/services/config/config.d.ts +20 -0
- package/dist/services/config/config.d.ts.map +1 -0
- package/dist/services/config/config.js +49 -0
- package/dist/services/config/config.js.map +1 -0
- package/dist/services/fibrous/balances.d.ts +8 -0
- package/dist/services/fibrous/balances.d.ts.map +1 -0
- package/dist/services/fibrous/balances.js +23 -0
- package/dist/services/fibrous/balances.js.map +1 -0
- package/dist/services/fibrous/health.d.ts +5 -0
- package/dist/services/fibrous/health.d.ts.map +1 -0
- package/dist/services/fibrous/health.js +24 -0
- package/dist/services/fibrous/health.js.map +1 -0
- package/dist/services/fibrous/route.d.ts +42 -0
- package/dist/services/fibrous/route.d.ts.map +1 -0
- package/dist/services/fibrous/route.js +41 -0
- package/dist/services/fibrous/route.js.map +1 -0
- package/dist/services/fibrous/tokens.d.ts +6 -0
- package/dist/services/fibrous/tokens.d.ts.map +1 -0
- package/dist/services/fibrous/tokens.js +34 -0
- package/dist/services/fibrous/tokens.js.map +1 -0
- package/dist/services/staking/staking.d.ts +70 -0
- package/dist/services/staking/staking.d.ts.map +1 -0
- package/dist/services/staking/staking.js +170 -0
- package/dist/services/staking/staking.js.map +1 -0
- package/dist/services/staking/validators.d.ts +6 -0
- package/dist/services/staking/validators.d.ts.map +1 -0
- package/dist/services/staking/validators.js +14 -0
- package/dist/services/staking/validators.js.map +1 -0
- package/dist/services/starkzap/client.d.ts +18 -0
- package/dist/services/starkzap/client.d.ts.map +1 -0
- package/dist/services/starkzap/client.js +65 -0
- package/dist/services/starkzap/client.js.map +1 -0
- package/dist/services/tokens/balances.d.ts +8 -0
- package/dist/services/tokens/balances.d.ts.map +1 -0
- package/dist/services/tokens/balances.js +23 -0
- package/dist/services/tokens/balances.js.map +1 -0
- package/dist/services/tokens/tokens.d.ts +5 -0
- package/dist/services/tokens/tokens.d.ts.map +1 -0
- package/dist/services/tokens/tokens.js +24 -0
- package/dist/services/tokens/tokens.js.map +1 -0
- package/dist/services/vesu/index.d.ts +3 -0
- package/dist/services/vesu/index.d.ts.map +1 -0
- package/dist/services/vesu/index.js +3 -0
- package/dist/services/vesu/index.js.map +1 -0
- package/dist/services/vesu/lending.d.ts +17 -0
- package/dist/services/vesu/lending.d.ts.map +1 -0
- package/dist/services/vesu/lending.js +153 -0
- package/dist/services/vesu/lending.js.map +1 -0
- package/dist/services/vesu/pools.d.ts +13 -0
- package/dist/services/vesu/pools.d.ts.map +1 -0
- package/dist/services/vesu/pools.js +35 -0
- package/dist/services/vesu/pools.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAwBX;AAxBD,WAAY,SAAS;IACpB,4CAA+B,CAAA;IAC/B,wCAA2B,CAAA;IAC3B,gDAAmC,CAAA;IACnC,wDAA2C,CAAA;IAC3C,kDAAqC,CAAA;IACrC,0DAA6C,CAAA;IAC7C,oCAAuB,CAAA;IACvB,0CAA6B,CAAA;IAC7B,oDAAuC,CAAA;IACvC,wCAA2B,CAAA;IAC3B,8CAAiC,CAAA;IACjC,oDAAuC,CAAA;IACvC,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,8CAAiC,CAAA;IACjC,4CAA+B,CAAA;IAC/B,0CAA6B,CAAA;IAC7B,gCAAmB,CAAA;AACpB,CAAC,EAxBW,SAAS,KAAT,SAAS,QAwBpB;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IAErB;IAEA;IAHjB,YACiB,IAAe,EAC/B,OAAe,EACC,OAAiB,EACjC,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QALR,SAAI,GAAJ,IAAI,CAAW;QAEf,YAAO,GAAP,OAAO,CAAU;QAIjC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC5B,CAAC;IAED,MAAM;QACL,OAAO;YACN,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function formatResult(data: Record<string, unknown>, options?: {
|
|
2
|
+
json?: boolean;
|
|
3
|
+
}): string;
|
|
4
|
+
export declare function formatError(error: unknown): string;
|
|
5
|
+
export declare function formatTable(headers: string[], rows: string[][]): string;
|
|
6
|
+
export declare function createSpinner(text: string): import("ora").Ora;
|
|
7
|
+
export declare function success(msg: string): string;
|
|
8
|
+
export declare function info(msg: string): string;
|
|
9
|
+
export declare function warn(msg: string): string;
|
|
10
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAehG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAUvE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,qBAEzC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
export function formatResult(data, options) {
|
|
4
|
+
if (options?.json) {
|
|
5
|
+
return JSON.stringify(data, bigintReplacer, 2);
|
|
6
|
+
}
|
|
7
|
+
const lines = [];
|
|
8
|
+
for (const [key, value] of Object.entries(data)) {
|
|
9
|
+
const label = chalk.gray(key.padEnd(20));
|
|
10
|
+
const val = typeof value === "string" || typeof value === "number"
|
|
11
|
+
? chalk.white(String(value))
|
|
12
|
+
: chalk.dim(JSON.stringify(value, bigintReplacer));
|
|
13
|
+
lines.push(` ${label} ${val}`);
|
|
14
|
+
}
|
|
15
|
+
return lines.join("\n");
|
|
16
|
+
}
|
|
17
|
+
export function formatError(error) {
|
|
18
|
+
if (error instanceof Error) {
|
|
19
|
+
return chalk.red(`✖ ${error.message}`);
|
|
20
|
+
}
|
|
21
|
+
return chalk.red(`✖ ${String(error)}`);
|
|
22
|
+
}
|
|
23
|
+
export function formatTable(headers, rows) {
|
|
24
|
+
const colWidths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || "").length)));
|
|
25
|
+
const headerLine = headers.map((h, i) => chalk.bold(h.padEnd(colWidths[i]))).join(" ");
|
|
26
|
+
const separator = colWidths.map((w) => "─".repeat(w)).join("──");
|
|
27
|
+
const dataLines = rows.map((row) => row.map((cell, i) => cell.padEnd(colWidths[i])).join(" "));
|
|
28
|
+
return [headerLine, separator, ...dataLines].join("\n");
|
|
29
|
+
}
|
|
30
|
+
export function createSpinner(text) {
|
|
31
|
+
return ora({ text, spinner: "dots" });
|
|
32
|
+
}
|
|
33
|
+
export function success(msg) {
|
|
34
|
+
return chalk.green(`✔ ${msg}`);
|
|
35
|
+
}
|
|
36
|
+
export function info(msg) {
|
|
37
|
+
return chalk.blue(`ℹ ${msg}`);
|
|
38
|
+
}
|
|
39
|
+
export function warn(msg) {
|
|
40
|
+
return chalk.yellow(`⚠ ${msg}`);
|
|
41
|
+
}
|
|
42
|
+
function bigintReplacer(_key, value) {
|
|
43
|
+
return typeof value === "bigint" ? value.toString() : value;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const NetworkSchema: z.ZodEnum<{
|
|
3
|
+
mainnet: "mainnet";
|
|
4
|
+
sepolia: "sepolia";
|
|
5
|
+
}>;
|
|
6
|
+
export type Network = z.infer<typeof NetworkSchema>;
|
|
7
|
+
export declare const StarknetAddressSchema: z.ZodString;
|
|
8
|
+
export declare const AmountSchema: z.ZodString;
|
|
9
|
+
export declare const TokenSymbolSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
10
|
+
export declare const SlippageSchema: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
export declare function validateAddress(address: string): string;
|
|
12
|
+
export declare function validateAmount(amount: string): string;
|
|
13
|
+
export declare function validateNetwork(network: string): Network;
|
|
14
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa;;;EAAiC,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,qBAAqB,aAE0B,CAAC;AAE7D,eAAO,MAAM,YAAY,aAEiD,CAAC;AAE3E,eAAO,MAAM,iBAAiB,wDAIK,CAAC;AAEpC,eAAO,MAAM,cAAc,2BAIb,CAAC;AAEf,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const NetworkSchema = z.enum(["mainnet", "sepolia"]);
|
|
3
|
+
export const StarknetAddressSchema = z
|
|
4
|
+
.string()
|
|
5
|
+
.regex(/^0x[0-9a-fA-F]{1,64}$/, "Invalid Starknet address");
|
|
6
|
+
export const AmountSchema = z
|
|
7
|
+
.string()
|
|
8
|
+
.regex(/^(\d+\.?\d*|\.\d+|max)$/, "Invalid amount (use number or 'max')");
|
|
9
|
+
export const TokenSymbolSchema = z
|
|
10
|
+
.string()
|
|
11
|
+
.min(1, "Token symbol required")
|
|
12
|
+
.max(20, "Token symbol too long")
|
|
13
|
+
.transform((s) => s.toUpperCase());
|
|
14
|
+
export const SlippageSchema = z
|
|
15
|
+
.number()
|
|
16
|
+
.min(0.01, "Slippage too low")
|
|
17
|
+
.max(50, "Slippage too high")
|
|
18
|
+
.default(0.5);
|
|
19
|
+
export function validateAddress(address) {
|
|
20
|
+
return StarknetAddressSchema.parse(address);
|
|
21
|
+
}
|
|
22
|
+
export function validateAmount(amount) {
|
|
23
|
+
return AmountSchema.parse(amount);
|
|
24
|
+
}
|
|
25
|
+
export function validateNetwork(network) {
|
|
26
|
+
return NetworkSchema.parse(network);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAG5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACpC,MAAM,EAAE;KACR,KAAK,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,KAAK,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,CAAC;AAE3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAChC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;KAC/B,GAAG,CAAC,EAAE,EAAE,uBAAuB,CAAC;KAChC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAC7B,GAAG,CAAC,EAAE,EAAE,mBAAmB,CAAC;KAC5B,OAAO,CAAC,GAAG,CAAC,CAAC;AAEf,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,OAAO,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC5C,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/auth.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB;;;;;GAmBxC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { loadSession } from "../../services/auth/session.js";
|
|
2
|
+
import { checkFibrousHealth } from "../../services/fibrous/health.js";
|
|
3
|
+
import { jsonResult } from "./utils.js";
|
|
4
|
+
export async function handleGetAuthStatus() {
|
|
5
|
+
const session = loadSession();
|
|
6
|
+
const health = await checkFibrousHealth();
|
|
7
|
+
if (!session) {
|
|
8
|
+
return jsonResult({
|
|
9
|
+
authenticated: false,
|
|
10
|
+
fibrous: health,
|
|
11
|
+
message: "Not authenticated. Use 'starkfi auth login' or 'starkfi auth import'.",
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return jsonResult({
|
|
15
|
+
authenticated: true,
|
|
16
|
+
type: session.type,
|
|
17
|
+
network: session.network,
|
|
18
|
+
address: session.address,
|
|
19
|
+
fibrous: health,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/mcp/handlers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACxC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,uEAAuE;SAChF,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;QACjB,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function handleConfigAction(args: {
|
|
2
|
+
action: "set-rpc" | "get-rpc" | "set-network" | "set-gasfree" | "set-gasless" | "set-gas-token" | "list";
|
|
3
|
+
value?: string;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: "text";
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,MAAM,EACH,SAAS,GACT,SAAS,GACT,aAAa,GACb,aAAa,GACb,aAAa,GACb,eAAe,GACf,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;;;;;GAwEA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ConfigService } from "../../services/config/config.js";
|
|
2
|
+
import { GASLESS_SUPPORTED_TOKENS } from "../../lib/config.js";
|
|
3
|
+
import { jsonResult, textResult } from "./utils.js";
|
|
4
|
+
export async function handleConfigAction(args) {
|
|
5
|
+
const configService = ConfigService.getInstance();
|
|
6
|
+
switch (args.action) {
|
|
7
|
+
case "set-rpc": {
|
|
8
|
+
if (!args.value)
|
|
9
|
+
return textResult("RPC URL value is required.");
|
|
10
|
+
configService.set("rpcUrl", args.value);
|
|
11
|
+
return jsonResult({ success: true, rpcUrl: args.value });
|
|
12
|
+
}
|
|
13
|
+
case "get-rpc": {
|
|
14
|
+
const rpcUrl = configService.get("rpcUrl");
|
|
15
|
+
return jsonResult({ rpcUrl: rpcUrl || "default (Cartridge RPC)" });
|
|
16
|
+
}
|
|
17
|
+
case "set-network": {
|
|
18
|
+
if (!args.value || !["mainnet", "sepolia"].includes(args.value)) {
|
|
19
|
+
return textResult("Network must be 'mainnet' or 'sepolia'.");
|
|
20
|
+
}
|
|
21
|
+
configService.set("network", args.value);
|
|
22
|
+
return jsonResult({ success: true, network: args.value });
|
|
23
|
+
}
|
|
24
|
+
case "set-gasless": // deprecated alias
|
|
25
|
+
case "set-gasfree": {
|
|
26
|
+
if (!args.value || !["on", "off"].includes(args.value)) {
|
|
27
|
+
return textResult("Gasfree mode must be 'on' or 'off'.");
|
|
28
|
+
}
|
|
29
|
+
const enabled = args.value === "on";
|
|
30
|
+
configService.set("gasfreeMode", enabled);
|
|
31
|
+
if (enabled)
|
|
32
|
+
configService.delete("gasToken"); // mutually exclusive
|
|
33
|
+
return jsonResult({
|
|
34
|
+
success: true,
|
|
35
|
+
gasfreeMode: enabled,
|
|
36
|
+
note: enabled
|
|
37
|
+
? "Developer sponsors gas via AVNU Paymaster (requires API key + credits)"
|
|
38
|
+
: "Gasfree disabled",
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
case "set-gas-token": {
|
|
42
|
+
if (!args.value)
|
|
43
|
+
return textResult("Token symbol or 'off' is required.");
|
|
44
|
+
if (args.value.toLowerCase() === "off") {
|
|
45
|
+
configService.delete("gasToken");
|
|
46
|
+
return jsonResult({
|
|
47
|
+
success: true,
|
|
48
|
+
gasToken: null,
|
|
49
|
+
note: "Reverted to default STRK gas",
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const upper = args.value.toUpperCase();
|
|
53
|
+
if (!GASLESS_SUPPORTED_TOKENS.includes(upper)) {
|
|
54
|
+
return textResult(`Unsupported token '${args.value}'. Supported: ${GASLESS_SUPPORTED_TOKENS.join(", ")}`);
|
|
55
|
+
}
|
|
56
|
+
configService.delete("gasfreeMode"); // mutually exclusive
|
|
57
|
+
configService.set("gasToken", upper);
|
|
58
|
+
return jsonResult({
|
|
59
|
+
success: true,
|
|
60
|
+
gasToken: upper,
|
|
61
|
+
note: `Gasless mode: user pays gas in ${upper} (no STRK needed, no API key required)`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
case "list": {
|
|
65
|
+
const all = configService.getAll();
|
|
66
|
+
const gasfreeMode = all.gasfreeMode === true;
|
|
67
|
+
const gasToken = all.gasToken;
|
|
68
|
+
let feeMode = "default (pays STRK)";
|
|
69
|
+
if (gasfreeMode)
|
|
70
|
+
feeMode = "gasfree (developer-sponsored via AVNU)";
|
|
71
|
+
else if (gasToken)
|
|
72
|
+
feeMode = `gasless (user pays in ${gasToken})`;
|
|
73
|
+
return jsonResult({ ...all, feeMode });
|
|
74
|
+
}
|
|
75
|
+
default:
|
|
76
|
+
return textResult(`Unknown action: ${args.action}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare function handleListLendingPools(args: {
|
|
2
|
+
name?: string;
|
|
3
|
+
}): Promise<{
|
|
4
|
+
content: {
|
|
5
|
+
type: "text";
|
|
6
|
+
text: string;
|
|
7
|
+
}[];
|
|
8
|
+
}>;
|
|
9
|
+
export declare function handleGetLendingPosition(args: {
|
|
10
|
+
pool: string;
|
|
11
|
+
collateral_token: string;
|
|
12
|
+
debt_token: string;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
}>;
|
|
19
|
+
export declare function handleSupplyAssets(args: {
|
|
20
|
+
pool: string;
|
|
21
|
+
amount: string;
|
|
22
|
+
token: string;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
content: {
|
|
25
|
+
type: "text";
|
|
26
|
+
text: string;
|
|
27
|
+
}[];
|
|
28
|
+
}>;
|
|
29
|
+
export declare function handleWithdrawAssets(args: {
|
|
30
|
+
pool: string;
|
|
31
|
+
amount: string;
|
|
32
|
+
token: string;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
content: {
|
|
35
|
+
type: "text";
|
|
36
|
+
text: string;
|
|
37
|
+
}[];
|
|
38
|
+
}>;
|
|
39
|
+
export declare function handleBorrowAssets(args: {
|
|
40
|
+
pool: string;
|
|
41
|
+
collateral_amount: string;
|
|
42
|
+
collateral_token: string;
|
|
43
|
+
borrow_amount: string;
|
|
44
|
+
borrow_token: string;
|
|
45
|
+
}): Promise<{
|
|
46
|
+
content: {
|
|
47
|
+
type: "text";
|
|
48
|
+
text: string;
|
|
49
|
+
}[];
|
|
50
|
+
}>;
|
|
51
|
+
export declare function handleRepayDebt(args: {
|
|
52
|
+
pool: string;
|
|
53
|
+
amount: string;
|
|
54
|
+
token: string;
|
|
55
|
+
collateral_token: string;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
content: {
|
|
58
|
+
type: "text";
|
|
59
|
+
text: string;
|
|
60
|
+
}[];
|
|
61
|
+
}>;
|
|
62
|
+
//# sourceMappingURL=lending.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/lending.ts"],"names":[],"mappings":"AAWA,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;GAiBnE;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;;;;;GAqBA;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GAgB7F;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GAgB/F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACrB;;;;;GAwBA;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CACzB;;;;;GAsBA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { requireSession } from "../../services/auth/session.js";
|
|
2
|
+
import { initSDKAndWallet } from "../../services/starkzap/client.js";
|
|
3
|
+
import * as lendingService from "../../services/vesu/lending.js";
|
|
4
|
+
import { getVesuPools, findVesuPool } from "../../services/vesu/pools.js";
|
|
5
|
+
import { jsonResult } from "./utils.js";
|
|
6
|
+
function resolvePool(poolQuery, network) {
|
|
7
|
+
const found = findVesuPool(poolQuery, network);
|
|
8
|
+
return found ? found.poolContract : poolQuery;
|
|
9
|
+
}
|
|
10
|
+
export async function handleListLendingPools(args) {
|
|
11
|
+
const session = requireSession();
|
|
12
|
+
let pools = getVesuPools(session.network);
|
|
13
|
+
if (args.name) {
|
|
14
|
+
const lower = args.name.toLowerCase();
|
|
15
|
+
pools = pools.filter((p) => p.name.toLowerCase().includes(lower));
|
|
16
|
+
}
|
|
17
|
+
return jsonResult({
|
|
18
|
+
success: true,
|
|
19
|
+
pools: pools.map((p) => ({
|
|
20
|
+
name: p.name,
|
|
21
|
+
poolContract: p.poolContract,
|
|
22
|
+
pairs: p.pairs.map((pair) => `${pair.collateral}/${pair.debt}`),
|
|
23
|
+
})),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export async function handleGetLendingPosition(args) {
|
|
27
|
+
const session = requireSession();
|
|
28
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
29
|
+
const poolAddress = resolvePool(args.pool, session.network);
|
|
30
|
+
const position = await lendingService.getPosition(wallet, poolAddress, args.collateral_token, args.debt_token);
|
|
31
|
+
if (!position) {
|
|
32
|
+
return jsonResult({
|
|
33
|
+
success: true,
|
|
34
|
+
position: null,
|
|
35
|
+
message: "No active position found for this pool and pair.",
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return jsonResult({ success: true, position });
|
|
39
|
+
}
|
|
40
|
+
export async function handleSupplyAssets(args) {
|
|
41
|
+
const session = requireSession();
|
|
42
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
43
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
44
|
+
const poolAddress = resolvePool(args.pool, session.network);
|
|
45
|
+
const result = await lendingService.supply(wallet, poolAddress, args.token, args.amount);
|
|
46
|
+
return jsonResult({
|
|
47
|
+
success: true,
|
|
48
|
+
action: "supply",
|
|
49
|
+
amount: `${args.amount} ${args.token.toUpperCase()}`,
|
|
50
|
+
pool: poolAddress,
|
|
51
|
+
txHash: result.hash,
|
|
52
|
+
explorerUrl: result.explorerUrl,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export async function handleWithdrawAssets(args) {
|
|
56
|
+
const session = requireSession();
|
|
57
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
58
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
59
|
+
const poolAddress = resolvePool(args.pool, session.network);
|
|
60
|
+
const result = await lendingService.withdraw(wallet, poolAddress, args.token, args.amount);
|
|
61
|
+
return jsonResult({
|
|
62
|
+
success: true,
|
|
63
|
+
action: "withdraw",
|
|
64
|
+
amount: `${args.amount} ${args.token.toUpperCase()}`,
|
|
65
|
+
pool: poolAddress,
|
|
66
|
+
txHash: result.hash,
|
|
67
|
+
explorerUrl: result.explorerUrl,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export async function handleBorrowAssets(args) {
|
|
71
|
+
const session = requireSession();
|
|
72
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
73
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
74
|
+
const poolAddress = resolvePool(args.pool, session.network);
|
|
75
|
+
const result = await lendingService.borrow(wallet, poolAddress, args.collateral_token, args.collateral_amount, args.borrow_token, args.borrow_amount);
|
|
76
|
+
return jsonResult({
|
|
77
|
+
success: true,
|
|
78
|
+
action: "borrow",
|
|
79
|
+
collateral: `${args.collateral_amount} ${args.collateral_token.toUpperCase()}`,
|
|
80
|
+
borrowed: `${args.borrow_amount} ${args.borrow_token.toUpperCase()}`,
|
|
81
|
+
pool: poolAddress,
|
|
82
|
+
txHash: result.hash,
|
|
83
|
+
explorerUrl: result.explorerUrl,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
export async function handleRepayDebt(args) {
|
|
87
|
+
const session = requireSession();
|
|
88
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
89
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
90
|
+
const poolAddress = resolvePool(args.pool, session.network);
|
|
91
|
+
const result = await lendingService.repay(wallet, poolAddress, args.collateral_token, args.token, args.amount);
|
|
92
|
+
return jsonResult({
|
|
93
|
+
success: true,
|
|
94
|
+
action: "repay",
|
|
95
|
+
repaid: `${args.amount} ${args.token.toUpperCase()}`,
|
|
96
|
+
pool: poolAddress,
|
|
97
|
+
txHash: result.hash,
|
|
98
|
+
explorerUrl: result.explorerUrl,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=lending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lending.js","sourceRoot":"","sources":["../../../src/mcp/handlers/lending.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare function handleStakeTokens(args: {
|
|
2
|
+
amount: string;
|
|
3
|
+
pool: string;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: "text";
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
}>;
|
|
10
|
+
export declare function handleUnstakeTokens(args: {
|
|
11
|
+
action: "intent" | "exit";
|
|
12
|
+
pool: string;
|
|
13
|
+
amount?: string;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
content: {
|
|
16
|
+
type: "text";
|
|
17
|
+
text: string;
|
|
18
|
+
}[];
|
|
19
|
+
}>;
|
|
20
|
+
export declare function handleGetStakingInfo(args: {
|
|
21
|
+
pool: string;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
content: {
|
|
24
|
+
type: "text";
|
|
25
|
+
text: string;
|
|
26
|
+
}[];
|
|
27
|
+
}>;
|
|
28
|
+
export declare function handleListPools(args: {
|
|
29
|
+
validator: string;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
content: {
|
|
32
|
+
type: "text";
|
|
33
|
+
text: string;
|
|
34
|
+
}[];
|
|
35
|
+
}>;
|
|
36
|
+
export declare function handleListValidators(): Promise<{
|
|
37
|
+
content: {
|
|
38
|
+
type: "text";
|
|
39
|
+
text: string;
|
|
40
|
+
}[];
|
|
41
|
+
}>;
|
|
42
|
+
export declare function handleCompoundRewards(args: {
|
|
43
|
+
pool: string;
|
|
44
|
+
}): Promise<{
|
|
45
|
+
content: {
|
|
46
|
+
type: "text";
|
|
47
|
+
text: string;
|
|
48
|
+
}[];
|
|
49
|
+
}>;
|
|
50
|
+
export declare function handleGetStakingOverview(): Promise<{
|
|
51
|
+
content: {
|
|
52
|
+
type: "text";
|
|
53
|
+
text: string;
|
|
54
|
+
}[];
|
|
55
|
+
}>;
|
|
56
|
+
//# sourceMappingURL=staking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/staking.ts"],"names":[],"mappings":"AAMA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;GAe7E;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;GA8BA;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;GAwBhE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE;;;;;GAchE;AAED,wBAAsB,oBAAoB;;;;;GAYzC;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;GAcjE;AAED,wBAAsB,wBAAwB;;;;;GAY7C"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { requireSession } from "../../services/auth/session.js";
|
|
2
|
+
import { initSDKAndWallet } from "../../services/starkzap/client.js";
|
|
3
|
+
import * as stakingService from "../../services/staking/staking.js";
|
|
4
|
+
import { getValidators, findValidator } from "../../services/staking/validators.js";
|
|
5
|
+
import { jsonResult, textResult } from "./utils.js";
|
|
6
|
+
export async function handleStakeTokens(args) {
|
|
7
|
+
const session = requireSession();
|
|
8
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
9
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
10
|
+
const result = await stakingService.stake(wallet, args.pool, args.amount);
|
|
11
|
+
return jsonResult({
|
|
12
|
+
success: true,
|
|
13
|
+
txHash: result.hash,
|
|
14
|
+
explorerUrl: result.explorerUrl,
|
|
15
|
+
amount: `${args.amount} STRK`,
|
|
16
|
+
pool: args.pool,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export async function handleUnstakeTokens(args) {
|
|
20
|
+
const session = requireSession();
|
|
21
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
22
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
23
|
+
if (args.action === "intent") {
|
|
24
|
+
if (!args.amount) {
|
|
25
|
+
return textResult("Amount is required for exit intent.");
|
|
26
|
+
}
|
|
27
|
+
const result = await stakingService.exitPoolIntent(wallet, args.pool, args.amount);
|
|
28
|
+
return jsonResult({
|
|
29
|
+
success: true,
|
|
30
|
+
action: "exit_intent",
|
|
31
|
+
txHash: result.hash,
|
|
32
|
+
explorerUrl: result.explorerUrl,
|
|
33
|
+
message: "Exit intent declared. Wait for cooldown period, then call with action='exit'.",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// action === "exit"
|
|
37
|
+
const result = await stakingService.exitPool(wallet, args.pool);
|
|
38
|
+
return jsonResult({
|
|
39
|
+
success: true,
|
|
40
|
+
action: "exit_complete",
|
|
41
|
+
txHash: result.hash,
|
|
42
|
+
explorerUrl: result.explorerUrl,
|
|
43
|
+
message: "Tokens withdrawn from pool.",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export async function handleGetStakingInfo(args) {
|
|
47
|
+
const session = requireSession();
|
|
48
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
49
|
+
const position = await stakingService.getPosition(wallet, args.pool);
|
|
50
|
+
if (!position) {
|
|
51
|
+
return jsonResult({
|
|
52
|
+
isMember: false,
|
|
53
|
+
pool: args.pool,
|
|
54
|
+
message: "Not a member of this pool.",
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return jsonResult({
|
|
58
|
+
isMember: true,
|
|
59
|
+
pool: args.pool,
|
|
60
|
+
staked: position.staked,
|
|
61
|
+
rewards: position.rewards,
|
|
62
|
+
total: position.total,
|
|
63
|
+
unpooling: position.unpooling,
|
|
64
|
+
cooldownEndsAt: position.unpoolTime ? position.unpoolTime.toISOString() : null,
|
|
65
|
+
commissionPercent: position.commissionPercent,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export async function handleListPools(args) {
|
|
69
|
+
const session = requireSession();
|
|
70
|
+
const { sdk, wallet } = await initSDKAndWallet(session);
|
|
71
|
+
const found = findValidator(args.validator, session.network);
|
|
72
|
+
const stakerAddress = found ? found.stakerAddress.toString() : args.validator;
|
|
73
|
+
const pools = await stakingService.getValidatorPools(sdk, stakerAddress, wallet);
|
|
74
|
+
return jsonResult({
|
|
75
|
+
validator: found ? found.name : args.validator,
|
|
76
|
+
stakerAddress,
|
|
77
|
+
pools,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export async function handleListValidators() {
|
|
81
|
+
const session = requireSession();
|
|
82
|
+
const validators = getValidators(session.network);
|
|
83
|
+
return jsonResult({
|
|
84
|
+
network: session.network,
|
|
85
|
+
count: validators.length,
|
|
86
|
+
validators: validators.map((v) => ({
|
|
87
|
+
name: v.name,
|
|
88
|
+
stakerAddress: v.stakerAddress.toString(),
|
|
89
|
+
})),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export async function handleCompoundRewards(args) {
|
|
93
|
+
const session = requireSession();
|
|
94
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
95
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
96
|
+
const result = await stakingService.compoundRewards(wallet, args.pool);
|
|
97
|
+
return jsonResult({
|
|
98
|
+
success: true,
|
|
99
|
+
txHash: result.hash,
|
|
100
|
+
explorerUrl: result.explorerUrl,
|
|
101
|
+
compounded: result.compounded,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
export async function handleGetStakingOverview() {
|
|
105
|
+
const session = requireSession();
|
|
106
|
+
const { sdk, wallet } = await initSDKAndWallet(session);
|
|
107
|
+
const overview = await stakingService.getStakingOverview(sdk, wallet, session.network, session.address);
|
|
108
|
+
return jsonResult(overview);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=staking.js.map
|