starkfi 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MCP.md +70 -0
- package/README.md +120 -58
- package/dist/commands/auth/login.js +2 -2
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/verify.d.ts.map +1 -1
- package/dist/commands/auth/verify.js +2 -2
- package/dist/commands/auth/verify.js.map +1 -1
- package/dist/commands/batch/batch.d.ts +3 -0
- package/dist/commands/batch/batch.d.ts.map +1 -0
- package/dist/commands/batch/batch.js +143 -0
- package/dist/commands/batch/batch.js.map +1 -0
- package/dist/commands/chain/tx-status.js +2 -2
- package/dist/commands/chain/tx-status.js.map +1 -1
- package/dist/commands/config/config.d.ts.map +1 -1
- package/dist/commands/config/config.js +14 -31
- package/dist/commands/config/config.js.map +1 -1
- package/dist/commands/lending/lending.d.ts +1 -0
- package/dist/commands/lending/lending.d.ts.map +1 -1
- package/dist/commands/lending/lending.js +187 -48
- package/dist/commands/lending/lending.js.map +1 -1
- package/dist/commands/portfolio/portfolio.d.ts +3 -0
- package/dist/commands/portfolio/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio/portfolio.js +76 -0
- package/dist/commands/portfolio/portfolio.js.map +1 -0
- package/dist/commands/staking/staking.d.ts +1 -1
- package/dist/commands/staking/staking.d.ts.map +1 -1
- package/dist/commands/staking/staking.js +142 -61
- package/dist/commands/staking/staking.js.map +1 -1
- package/dist/commands/trade/multi-swap.d.ts +3 -0
- package/dist/commands/trade/multi-swap.d.ts.map +1 -0
- package/dist/commands/trade/multi-swap.js +140 -0
- package/dist/commands/trade/multi-swap.js.map +1 -0
- package/dist/commands/trade/status.js +2 -2
- package/dist/commands/trade/status.js.map +1 -1
- package/dist/commands/trade/swap.d.ts.map +1 -1
- package/dist/commands/trade/swap.js +45 -10
- package/dist/commands/trade/swap.js.map +1 -1
- package/dist/commands/wallet/balance.d.ts.map +1 -1
- package/dist/commands/wallet/balance.js +19 -2
- package/dist/commands/wallet/balance.js.map +1 -1
- package/dist/commands/wallet/deploy.d.ts.map +1 -1
- package/dist/commands/wallet/deploy.js +2 -1
- package/dist/commands/wallet/deploy.js.map +1 -1
- package/dist/commands/wallet/send.d.ts.map +1 -1
- package/dist/commands/wallet/send.js +45 -8
- package/dist/commands/wallet/send.js.map +1 -1
- package/dist/index.js +22 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/banner.d.ts +6 -0
- package/dist/lib/banner.d.ts.map +1 -0
- package/dist/lib/banner.js +78 -0
- package/dist/lib/banner.js.map +1 -0
- package/dist/lib/config.d.ts +0 -11
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +0 -20
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +2 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +2 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/format.d.ts +43 -2
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +51 -5
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/retry.d.ts +15 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +29 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/validation.d.ts +0 -12
- package/dist/lib/validation.d.ts.map +1 -1
- package/dist/lib/validation.js +1 -23
- package/dist/lib/validation.js.map +1 -1
- package/dist/mcp/handlers/batch.d.ts +13 -0
- package/dist/mcp/handlers/batch.d.ts.map +1 -0
- package/dist/mcp/handlers/batch.js +33 -0
- package/dist/mcp/handlers/batch.js.map +1 -0
- package/dist/mcp/handlers/config.d.ts +1 -1
- package/dist/mcp/handlers/config.d.ts.map +1 -1
- package/dist/mcp/handlers/config.js +11 -12
- package/dist/mcp/handlers/config.js.map +1 -1
- package/dist/mcp/handlers/index.d.ts +3 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -1
- package/dist/mcp/handlers/index.js +3 -0
- package/dist/mcp/handlers/index.js.map +1 -1
- package/dist/mcp/handlers/lending.d.ts +12 -1
- package/dist/mcp/handlers/lending.d.ts.map +1 -1
- package/dist/mcp/handlers/lending.js +67 -23
- package/dist/mcp/handlers/lending.js.map +1 -1
- package/dist/mcp/handlers/multi-swap.d.ts +27 -0
- package/dist/mcp/handlers/multi-swap.d.ts.map +1 -0
- package/dist/mcp/handlers/multi-swap.js +73 -0
- package/dist/mcp/handlers/multi-swap.js.map +1 -0
- package/dist/mcp/handlers/portfolio.d.ts +7 -0
- package/dist/mcp/handlers/portfolio.d.ts.map +1 -0
- package/dist/mcp/handlers/portfolio.js +11 -0
- package/dist/mcp/handlers/portfolio.js.map +1 -0
- package/dist/mcp/handlers/staking.d.ts +13 -1
- package/dist/mcp/handlers/staking.d.ts.map +1 -1
- package/dist/mcp/handlers/staking.js +18 -5
- package/dist/mcp/handlers/staking.js.map +1 -1
- package/dist/mcp/handlers/trade.d.ts +1 -0
- package/dist/mcp/handlers/trade.d.ts.map +1 -1
- package/dist/mcp/handlers/trade.js +23 -9
- package/dist/mcp/handlers/trade.js.map +1 -1
- package/dist/mcp/handlers/wallet.d.ts +1 -0
- package/dist/mcp/handlers/wallet.d.ts.map +1 -1
- package/dist/mcp/handlers/wallet.js +16 -1
- package/dist/mcp/handlers/wallet.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +102 -33
- package/dist/mcp/tools.js.map +1 -1
- package/dist/services/api/client.d.ts +0 -12
- package/dist/services/api/client.d.ts.map +1 -1
- package/dist/services/api/client.js +3 -8
- package/dist/services/api/client.js.map +1 -1
- package/dist/services/auth/session.d.ts +1 -7
- package/dist/services/auth/session.d.ts.map +1 -1
- package/dist/services/auth/session.js +20 -0
- package/dist/services/auth/session.js.map +1 -1
- package/dist/services/batch/batch.d.ts +36 -0
- package/dist/services/batch/batch.d.ts.map +1 -0
- package/dist/services/batch/batch.js +111 -0
- package/dist/services/batch/batch.js.map +1 -0
- package/dist/services/config/config.d.ts +4 -0
- package/dist/services/config/config.d.ts.map +1 -1
- package/dist/services/config/config.js +31 -1
- package/dist/services/config/config.js.map +1 -1
- package/dist/services/fibrous/config.d.ts +4 -0
- package/dist/services/fibrous/config.d.ts.map +1 -0
- package/dist/services/fibrous/config.js +4 -0
- package/dist/services/fibrous/config.js.map +1 -0
- package/dist/services/fibrous/health.js +1 -1
- package/dist/services/fibrous/health.js.map +1 -1
- package/dist/services/fibrous/route.d.ts +19 -6
- package/dist/services/fibrous/route.d.ts.map +1 -1
- package/dist/services/fibrous/route.js +64 -3
- package/dist/services/fibrous/route.js.map +1 -1
- package/dist/services/portfolio/portfolio.d.ts +35 -0
- package/dist/services/portfolio/portfolio.d.ts.map +1 -0
- package/dist/services/portfolio/portfolio.js +106 -0
- package/dist/services/portfolio/portfolio.js.map +1 -0
- package/dist/services/simulate/simulate.d.ts +18 -0
- package/dist/services/simulate/simulate.d.ts.map +1 -0
- package/dist/services/simulate/simulate.js +61 -0
- package/dist/services/simulate/simulate.js.map +1 -0
- package/dist/services/staking/staking.d.ts +5 -13
- package/dist/services/staking/staking.d.ts.map +1 -1
- package/dist/services/staking/staking.js +44 -52
- package/dist/services/staking/staking.js.map +1 -1
- package/dist/services/starkzap/client.d.ts.map +1 -1
- package/dist/services/starkzap/client.js +38 -18
- package/dist/services/starkzap/client.js.map +1 -1
- package/dist/services/starkzap/config.d.ts +6 -0
- package/dist/services/starkzap/config.d.ts.map +1 -0
- package/dist/services/starkzap/config.js +13 -0
- package/dist/services/starkzap/config.js.map +1 -0
- package/dist/services/tokens/balances.d.ts.map +1 -1
- package/dist/services/tokens/balances.js +26 -14
- package/dist/services/tokens/balances.js.map +1 -1
- package/dist/services/tokens/tokens.d.ts +2 -3
- package/dist/services/tokens/tokens.d.ts.map +1 -1
- package/dist/services/tokens/tokens.js +3 -8
- package/dist/services/tokens/tokens.js.map +1 -1
- package/dist/services/vesu/api.d.ts +28 -0
- package/dist/services/vesu/api.d.ts.map +1 -0
- package/dist/services/vesu/api.js +97 -0
- package/dist/services/vesu/api.js.map +1 -0
- package/dist/services/vesu/config.d.ts +9 -0
- package/dist/services/vesu/config.d.ts.map +1 -0
- package/dist/services/vesu/config.js +32 -0
- package/dist/services/vesu/config.js.map +1 -0
- package/dist/services/vesu/index.d.ts +2 -0
- package/dist/services/vesu/index.d.ts.map +1 -1
- package/dist/services/vesu/index.js +2 -0
- package/dist/services/vesu/index.js.map +1 -1
- package/dist/services/vesu/lending.d.ts +8 -1
- package/dist/services/vesu/lending.d.ts.map +1 -1
- package/dist/services/vesu/lending.js +171 -52
- package/dist/services/vesu/lending.js.map +1 -1
- package/dist/services/vesu/pools.d.ts +5 -11
- package/dist/services/vesu/pools.d.ts.map +1 -1
- package/dist/services/vesu/pools.js +11 -31
- package/dist/services/vesu/pools.js.map +1 -1
- package/package.json +88 -82
- package/skills/README.md +63 -0
- package/skills/authenticate-wallet/SKILL.md +119 -0
- package/skills/balance/SKILL.md +80 -0
- package/skills/batch/SKILL.md +118 -0
- package/skills/config/SKILL.md +144 -0
- package/skills/lending/SKILL.md +209 -0
- package/skills/multi-swap/SKILL.md +95 -0
- package/skills/portfolio/SKILL.md +82 -0
- package/skills/send/SKILL.md +82 -0
- package/skills/staking/SKILL.md +188 -0
- package/skills/trade/SKILL.md +92 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import readline from "node:readline";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
// A stylish ASCII representation of STARKFI
|
|
4
|
+
// We'll create a simple horizontal wiping animation to reveal it,
|
|
5
|
+
// combined with some color shifting.
|
|
6
|
+
const ASCII_LOGO = [
|
|
7
|
+
" ____ _ _ __ _ ",
|
|
8
|
+
" / ___|| |_ __ _ _ __| | __ / _(_) ",
|
|
9
|
+
" \\___ \\| __/ _` | '__| |/ /| |_| | ",
|
|
10
|
+
" ___) | || (_| | | | < | _| | ",
|
|
11
|
+
" |____/ \\__\\__,_|_| |_|\\_\\|_| |_| ",
|
|
12
|
+
" ",
|
|
13
|
+
" Defi CLI for Starknet ",
|
|
14
|
+
];
|
|
15
|
+
// Colors for the animation, moving from a subtle blue to a vivid starknet dark blue/purple
|
|
16
|
+
const COLORS = [
|
|
17
|
+
chalk.hex("#1E3A8A"), // tail
|
|
18
|
+
chalk.hex("#3B82F6"),
|
|
19
|
+
chalk.hex("#60A5FA"),
|
|
20
|
+
chalk.hex("#93C5FD"), // head
|
|
21
|
+
chalk.white.bold, // lead
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Renders the animated ASCII banner by wiping it in from left to right.
|
|
25
|
+
* Only blocks for ~1 second total to respect user startup expectations.
|
|
26
|
+
*/
|
|
27
|
+
export async function showBanner() {
|
|
28
|
+
// Only run if stdout is a TTY (interactive terminal)
|
|
29
|
+
if (!process.stdout.isTTY)
|
|
30
|
+
return;
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
// Hide the cursor during animation
|
|
33
|
+
process.stdout.write("\x1B[?25l");
|
|
34
|
+
let frame = 0;
|
|
35
|
+
// Width of the longest line
|
|
36
|
+
const maxWidth = Math.max(...ASCII_LOGO.map((line) => line.length));
|
|
37
|
+
// Ensure we add enough frames to fully reveal the logo plus leave it for a moment
|
|
38
|
+
const totalFrames = maxWidth + 10;
|
|
39
|
+
// Target 60fps (1000/60 ms per frame), keeping total time ~1.2 seconds max.
|
|
40
|
+
const frameRateMs = 20;
|
|
41
|
+
const interval = setInterval(() => {
|
|
42
|
+
// Clear the screen starting from where we are
|
|
43
|
+
readline.cursorTo(process.stdout, 0, 0);
|
|
44
|
+
readline.clearScreenDown(process.stdout);
|
|
45
|
+
let output = "\n"; // Padding at the top
|
|
46
|
+
for (const line of ASCII_LOGO) {
|
|
47
|
+
let lineOutput = "";
|
|
48
|
+
for (let i = 0; i < line.length; i++) {
|
|
49
|
+
const char = line[i] || " ";
|
|
50
|
+
// Calculate distance from the 'wipe' front
|
|
51
|
+
const distance = frame - i;
|
|
52
|
+
if (distance < 0) {
|
|
53
|
+
// Not revealed yet
|
|
54
|
+
lineOutput += " ";
|
|
55
|
+
}
|
|
56
|
+
else if (distance < COLORS.length) {
|
|
57
|
+
// Highlight tip of the wipe
|
|
58
|
+
lineOutput += COLORS[distance](char);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Fully revealed (base color)
|
|
62
|
+
lineOutput += chalk.hex("#4F46E5")(char); // Indigo
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
output += lineOutput + "\n";
|
|
66
|
+
}
|
|
67
|
+
process.stdout.write(output);
|
|
68
|
+
frame++;
|
|
69
|
+
if (frame >= totalFrames) {
|
|
70
|
+
clearInterval(interval);
|
|
71
|
+
// Restore cursor
|
|
72
|
+
process.stdout.write("\x1B[?25h");
|
|
73
|
+
resolve();
|
|
74
|
+
}
|
|
75
|
+
}, frameRateMs);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/lib/banner.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
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
1
|
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
2
|
export declare const DATA_DIR: string;
|
|
12
|
-
export declare const CACHE_DIR: string;
|
|
13
3
|
export declare const CONFIG_DIR: string;
|
|
14
|
-
export declare const CACHE_TTL: number;
|
|
15
4
|
export declare function explorerUrl(hash: string, network: "mainnet" | "sepolia"): string;
|
|
16
5
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D,eAAO,MAAM,QAAQ,QAAa,CAAC;AACnC,eAAO,MAAM,UAAU,QAAe,CAAC;AAEvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAIhF"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,28 +1,8 @@
|
|
|
1
1
|
import envPaths from "env-paths";
|
|
2
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
3
|
export const STARKFI_API_URL_DEFAULT = "http://localhost:3001";
|
|
19
|
-
export const DEFAULT_NETWORK = "mainnet";
|
|
20
|
-
export const FIBROUS_ROUTER_ADDRESS = "0x00f6f4CF62E3C010E0aC2451cC7807b5eEc19a40b0FaaCd00CCA3914280FDf5a";
|
|
21
4
|
export const DATA_DIR = paths.data;
|
|
22
|
-
export const CACHE_DIR = paths.cache;
|
|
23
5
|
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
6
|
export function explorerUrl(hash, network) {
|
|
27
7
|
const base = network === "mainnet" ? "https://voyager.online" : "https://sepolia.voyager.online";
|
|
28
8
|
return `${base}/tx/${hash}`;
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +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,
|
|
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,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAEvC,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"}
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export declare enum ErrorCode {
|
|
|
21
21
|
INVALID_AMOUNT = "INVALID_AMOUNT",
|
|
22
22
|
NETWORK_ERROR = "NETWORK_ERROR",
|
|
23
23
|
RATE_LIMITED = "RATE_LIMITED",
|
|
24
|
+
VALIDATOR_NOT_FOUND = "VALIDATOR_NOT_FOUND",
|
|
25
|
+
BATCH_LIMIT_EXCEEDED = "BATCH_LIMIT_EXCEEDED",
|
|
24
26
|
UNKNOWN = "UNKNOWN"
|
|
25
27
|
}
|
|
26
28
|
export declare class StarkfiError extends Error {
|
package/dist/lib/errors.d.ts.map
CHANGED
|
@@ -1 +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"}
|
|
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,mBAAmB,wBAAwB;IAC3C,oBAAoB,yBAAyB;IAC7C,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"}
|
package/dist/lib/errors.js
CHANGED
|
@@ -22,6 +22,8 @@ export var ErrorCode;
|
|
|
22
22
|
ErrorCode["INVALID_AMOUNT"] = "INVALID_AMOUNT";
|
|
23
23
|
ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
24
24
|
ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
|
|
25
|
+
ErrorCode["VALIDATOR_NOT_FOUND"] = "VALIDATOR_NOT_FOUND";
|
|
26
|
+
ErrorCode["BATCH_LIMIT_EXCEEDED"] = "BATCH_LIMIT_EXCEEDED";
|
|
25
27
|
ErrorCode["UNKNOWN"] = "UNKNOWN";
|
|
26
28
|
})(ErrorCode || (ErrorCode = {}));
|
|
27
29
|
export class StarkfiError extends Error {
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SA0BX;AA1BD,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,wDAA2C,CAAA;IAC3C,0DAA6C,CAAA;IAC7C,gCAAmB,CAAA;AACpB,CAAC,EA1BW,SAAS,KAAT,SAAS,QA0BpB;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"}
|
package/dist/lib/format.d.ts
CHANGED
|
@@ -3,8 +3,49 @@ export declare function formatResult(data: Record<string, unknown>, options?: {
|
|
|
3
3
|
}): string;
|
|
4
4
|
export declare function formatError(error: unknown): string;
|
|
5
5
|
export declare function formatTable(headers: string[], rows: string[][]): string;
|
|
6
|
-
export declare function createSpinner(text: string): import("ora").Ora
|
|
6
|
+
export declare function createSpinner(text: string): import("ora").Ora | {
|
|
7
|
+
start(): {
|
|
8
|
+
start(): /*elided*/ any;
|
|
9
|
+
stop(): /*elided*/ any;
|
|
10
|
+
succeed(msg: string): /*elided*/ any;
|
|
11
|
+
fail(msg: string): /*elided*/ any;
|
|
12
|
+
info(msg: string): /*elided*/ any;
|
|
13
|
+
text: string;
|
|
14
|
+
};
|
|
15
|
+
stop(): {
|
|
16
|
+
start(): /*elided*/ any;
|
|
17
|
+
stop(): /*elided*/ any;
|
|
18
|
+
succeed(msg: string): /*elided*/ any;
|
|
19
|
+
fail(msg: string): /*elided*/ any;
|
|
20
|
+
info(msg: string): /*elided*/ any;
|
|
21
|
+
text: string;
|
|
22
|
+
};
|
|
23
|
+
succeed(msg: string): {
|
|
24
|
+
start(): /*elided*/ any;
|
|
25
|
+
stop(): /*elided*/ any;
|
|
26
|
+
succeed(msg: string): /*elided*/ any;
|
|
27
|
+
fail(msg: string): /*elided*/ any;
|
|
28
|
+
info(msg: string): /*elided*/ any;
|
|
29
|
+
text: string;
|
|
30
|
+
};
|
|
31
|
+
fail(msg: string): {
|
|
32
|
+
start(): /*elided*/ any;
|
|
33
|
+
stop(): /*elided*/ any;
|
|
34
|
+
succeed(msg: string): /*elided*/ any;
|
|
35
|
+
fail(msg: string): /*elided*/ any;
|
|
36
|
+
info(msg: string): /*elided*/ any;
|
|
37
|
+
text: string;
|
|
38
|
+
};
|
|
39
|
+
info(msg: string): {
|
|
40
|
+
start(): /*elided*/ any;
|
|
41
|
+
stop(): /*elided*/ any;
|
|
42
|
+
succeed(msg: string): /*elided*/ any;
|
|
43
|
+
fail(msg: string): /*elided*/ any;
|
|
44
|
+
info(msg: string): /*elided*/ any;
|
|
45
|
+
text: string;
|
|
46
|
+
};
|
|
47
|
+
text: string;
|
|
48
|
+
};
|
|
7
49
|
export declare function success(msg: string): string;
|
|
8
|
-
export declare function info(msg: string): string;
|
|
9
50
|
export declare function warn(msg: string): string;
|
|
10
51
|
//# sourceMappingURL=format.d.ts.map
|
package/dist/lib/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAmBA,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;;;;qBAU1B,MAAM;kBAIT,MAAM;kBAIN,MAAM;cAIJ,MAAM;;;;;qBAZL,MAAM;kBAIT,MAAM;kBAIN,MAAM;cAIJ,MAAM;;iBAZL,MAAM;;;qBAAN,MAAM;kBAIT,MAAM;kBAIN,MAAM;cAIJ,MAAM;;cARR,MAAM;;;qBAJH,MAAM;kBAIT,MAAM;kBAIN,MAAM;cAIJ,MAAM;;cAJR,MAAM;;;qBARH,MAAM;kBAIT,MAAM;kBAIN,MAAM;cAIJ,MAAM;;UAAN,MAAM;EASpB;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC"}
|
package/dist/lib/format.js
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import ora from "ora";
|
|
3
|
+
/** ANSI terminal hyperlink (iTerm2, Wezterm, Windows Terminal). Graceful fallback in unsupported terminals. */
|
|
4
|
+
function hyperlink(text, url) {
|
|
5
|
+
return `\x1b]8;;${url}\x07${text}\x1b]8;;\x07`;
|
|
6
|
+
}
|
|
7
|
+
/** Apply semantic coloring based on key name. */
|
|
8
|
+
function colorizeValue(key, value) {
|
|
9
|
+
if (key === "explorer")
|
|
10
|
+
return chalk.dim(hyperlink(value, value));
|
|
11
|
+
if (key === "txHash")
|
|
12
|
+
return chalk.dim(value);
|
|
13
|
+
if (key === "revertReason")
|
|
14
|
+
return chalk.red(value);
|
|
15
|
+
if (key === "mode" && value.includes("SIMULATION"))
|
|
16
|
+
return chalk.yellow(value);
|
|
17
|
+
if (/fee/i.test(key) && !/usd/i.test(key))
|
|
18
|
+
return chalk.yellow(value);
|
|
19
|
+
if (/usd/i.test(key))
|
|
20
|
+
return chalk.green(value);
|
|
21
|
+
return chalk.white(value);
|
|
22
|
+
}
|
|
3
23
|
export function formatResult(data, options) {
|
|
4
24
|
if (options?.json) {
|
|
5
25
|
return JSON.stringify(data, bigintReplacer, 2);
|
|
@@ -8,7 +28,7 @@ export function formatResult(data, options) {
|
|
|
8
28
|
for (const [key, value] of Object.entries(data)) {
|
|
9
29
|
const label = chalk.gray(key.padEnd(20));
|
|
10
30
|
const val = typeof value === "string" || typeof value === "number"
|
|
11
|
-
?
|
|
31
|
+
? colorizeValue(key, String(value))
|
|
12
32
|
: chalk.dim(JSON.stringify(value, bigintReplacer));
|
|
13
33
|
lines.push(` ${label} ${val}`);
|
|
14
34
|
}
|
|
@@ -28,13 +48,39 @@ export function formatTable(headers, rows) {
|
|
|
28
48
|
return [headerLine, separator, ...dataLines].join("\n");
|
|
29
49
|
}
|
|
30
50
|
export function createSpinner(text) {
|
|
51
|
+
if (!process.stdout.isTTY) {
|
|
52
|
+
let currentText = text;
|
|
53
|
+
return {
|
|
54
|
+
start() {
|
|
55
|
+
return this;
|
|
56
|
+
},
|
|
57
|
+
stop() {
|
|
58
|
+
return this;
|
|
59
|
+
},
|
|
60
|
+
succeed(msg) {
|
|
61
|
+
console.log(success(msg));
|
|
62
|
+
return this;
|
|
63
|
+
},
|
|
64
|
+
fail(msg) {
|
|
65
|
+
console.error(chalk.red(`✖ ${msg}`));
|
|
66
|
+
return this;
|
|
67
|
+
},
|
|
68
|
+
info(msg) {
|
|
69
|
+
console.log(chalk.blue(`ℹ ${msg}`));
|
|
70
|
+
return this;
|
|
71
|
+
},
|
|
72
|
+
set text(t) {
|
|
73
|
+
currentText = t;
|
|
74
|
+
},
|
|
75
|
+
get text() {
|
|
76
|
+
return currentText;
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
31
80
|
return ora({ text, spinner: "dots" });
|
|
32
81
|
}
|
|
33
82
|
export function success(msg) {
|
|
34
|
-
return chalk.green(`✔ ${msg}`);
|
|
35
|
-
}
|
|
36
|
-
export function info(msg) {
|
|
37
|
-
return chalk.blue(`ℹ ${msg}`);
|
|
83
|
+
return chalk.green.bold(`✔ ${msg}`);
|
|
38
84
|
}
|
|
39
85
|
export function warn(msg) {
|
|
40
86
|
return chalk.yellow(`⚠ ${msg}`);
|
package/dist/lib/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,YAAY,CAAC,IAA6B,EAAE,OAA4B;IACvF,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,GAAG,GACR,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;YACrD,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ErrorCode } from "./errors.js";
|
|
2
|
+
export interface RetryOptions {
|
|
3
|
+
/** Maximum number of retry attempts (default: 2). */
|
|
4
|
+
maxRetries?: number;
|
|
5
|
+
/** Base delay in ms before first retry, doubles each attempt (default: 500). */
|
|
6
|
+
baseDelayMs?: number;
|
|
7
|
+
/** Only retry on these error codes. If empty/undefined, retries all errors. */
|
|
8
|
+
retryOnCodes?: ErrorCode[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Wraps an async function with exponential-backoff retry logic.
|
|
12
|
+
* Skips retry for non-retryable StarkfiError codes (e.g. AUTH_REQUIRED, INSUFFICIENT_BALANCE).
|
|
13
|
+
*/
|
|
14
|
+
export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
15
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/lib/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC5B,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAyB3F"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { StarkfiError } from "./errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Wraps an async function with exponential-backoff retry logic.
|
|
4
|
+
* Skips retry for non-retryable StarkfiError codes (e.g. AUTH_REQUIRED, INSUFFICIENT_BALANCE).
|
|
5
|
+
*/
|
|
6
|
+
export async function withRetry(fn, options) {
|
|
7
|
+
const { maxRetries = 2, baseDelayMs = 500, retryOnCodes } = options ?? {};
|
|
8
|
+
let lastError;
|
|
9
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
10
|
+
try {
|
|
11
|
+
return await fn();
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
lastError = error;
|
|
15
|
+
// Don't retry non-retryable domain errors
|
|
16
|
+
if (error instanceof StarkfiError && retryOnCodes?.length) {
|
|
17
|
+
if (!retryOnCodes.includes(error.code)) {
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (attempt < maxRetries) {
|
|
22
|
+
const delay = baseDelayMs * 2 ** attempt;
|
|
23
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw lastError;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/lib/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAW3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB,EAAE,OAAsB;IAC9E,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1E,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,OAAO,MAAM,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,SAAS,GAAG,KAAK,CAAC;YAElB,0CAA0C;YAC1C,IAAI,KAAK,YAAY,YAAY,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;YAED,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC;gBACzC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,SAAS,CAAC;AACjB,CAAC"}
|
package/dist/lib/validation.d.ts
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
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
1
|
export declare function validateAddress(address: string): string;
|
|
12
|
-
export declare function validateAmount(amount: string): string;
|
|
13
|
-
export declare function validateNetwork(network: string): Network;
|
|
14
2
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
package/dist/lib/validation.js
CHANGED
|
@@ -1,28 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
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);
|
|
2
|
+
const StarknetAddressSchema = z.string().regex(/^0x[0-9a-fA-F]{1,64}$/, "Invalid Starknet address");
|
|
19
3
|
export function validateAddress(address) {
|
|
20
4
|
return StarknetAddressSchema.parse(address);
|
|
21
5
|
}
|
|
22
|
-
export function validateAmount(amount) {
|
|
23
|
-
return AmountSchema.parse(amount);
|
|
24
|
-
}
|
|
25
|
-
export function validateNetwork(network) {
|
|
26
|
-
return NetworkSchema.parse(network);
|
|
27
|
-
}
|
|
28
6
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC;AAEpG,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,OAAO,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function handleBatchExecute(args: {
|
|
2
|
+
operations: {
|
|
3
|
+
type: "swap" | "stake" | "supply" | "send";
|
|
4
|
+
params: Record<string, string>;
|
|
5
|
+
}[];
|
|
6
|
+
simulate?: boolean;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
content: {
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}[];
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/batch.ts"],"names":[],"mappings":"AAOA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;;;;;GAgCA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { requireSession } from "../../services/auth/session.js";
|
|
2
|
+
import { initSDKAndWallet } from "../../services/starkzap/client.js";
|
|
3
|
+
import { buildBatch } from "../../services/batch/batch.js";
|
|
4
|
+
import { simulateTransaction } from "../../services/simulate/simulate.js";
|
|
5
|
+
import { jsonResult } from "./utils.js";
|
|
6
|
+
export async function handleBatchExecute(args) {
|
|
7
|
+
const session = requireSession();
|
|
8
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
9
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
10
|
+
const operations = args.operations;
|
|
11
|
+
const { builder, summary } = await buildBatch(wallet, session, operations);
|
|
12
|
+
if (args.simulate) {
|
|
13
|
+
const sim = await simulateTransaction(builder);
|
|
14
|
+
return jsonResult({
|
|
15
|
+
success: sim.success,
|
|
16
|
+
mode: "SIMULATION (no TX sent)",
|
|
17
|
+
operations: summary,
|
|
18
|
+
estimatedFee: sim.estimatedFee,
|
|
19
|
+
estimatedFeeUsd: sim.estimatedFeeUsd,
|
|
20
|
+
callCount: sim.callCount,
|
|
21
|
+
...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const tx = await builder.send();
|
|
25
|
+
await tx.wait();
|
|
26
|
+
return jsonResult({
|
|
27
|
+
success: true,
|
|
28
|
+
txHash: tx.hash,
|
|
29
|
+
explorerUrl: tx.explorerUrl,
|
|
30
|
+
operations: summary,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/mcp/handlers/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAGxC;IACA,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAyC,CAAC;IAElE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAE3E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC;YACjB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,yBAAyB;YAC/B,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAEhB,OAAO,UAAU,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE,CAAC,IAAI;QACf,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,UAAU,EAAE,OAAO;KACnB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare function handleConfigAction(args: {
|
|
2
|
-
action: "set-rpc" | "get-rpc" | "set-network" | "set-gasfree" | "set-
|
|
2
|
+
action: "set-rpc" | "get-rpc" | "set-network" | "set-gasfree" | "set-gas-token" | "list";
|
|
3
3
|
value?: string;
|
|
4
4
|
}): Promise<{
|
|
5
5
|
content: {
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,GAAG,MAAM,CAAC;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;;;;;GAuEA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConfigService } from "../../services/config/config.js";
|
|
2
|
-
import { GASLESS_SUPPORTED_TOKENS } from "../../
|
|
2
|
+
import { GASLESS_SUPPORTED_TOKENS } from "../../services/starkzap/config.js";
|
|
3
3
|
import { jsonResult, textResult } from "./utils.js";
|
|
4
4
|
export async function handleConfigAction(args) {
|
|
5
5
|
const configService = ConfigService.getInstance();
|
|
@@ -21,7 +21,6 @@ export async function handleConfigAction(args) {
|
|
|
21
21
|
configService.set("network", args.value);
|
|
22
22
|
return jsonResult({ success: true, network: args.value });
|
|
23
23
|
}
|
|
24
|
-
case "set-gasless": // deprecated alias
|
|
25
24
|
case "set-gasfree": {
|
|
26
25
|
if (!args.value || !["on", "off"].includes(args.value)) {
|
|
27
26
|
return textResult("Gasfree mode must be 'on' or 'off'.");
|
|
@@ -34,19 +33,19 @@ export async function handleConfigAction(args) {
|
|
|
34
33
|
success: true,
|
|
35
34
|
gasfreeMode: enabled,
|
|
36
35
|
note: enabled
|
|
37
|
-
? "Developer sponsors gas via
|
|
38
|
-
: "Gasfree disabled",
|
|
36
|
+
? "Developer sponsors gas via Paymaster (requires API key + credits)"
|
|
37
|
+
: "Gasfree disabled — using gasless mode (default: STRK)",
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
40
|
case "set-gas-token": {
|
|
42
41
|
if (!args.value)
|
|
43
|
-
return textResult("Token symbol or '
|
|
44
|
-
if (args.value.toLowerCase()
|
|
42
|
+
return textResult("Token symbol or 'reset' is required.");
|
|
43
|
+
if (["off", "reset", "default"].includes(args.value.toLowerCase())) {
|
|
45
44
|
configService.delete("gasToken");
|
|
46
45
|
return jsonResult({
|
|
47
46
|
success: true,
|
|
48
|
-
gasToken:
|
|
49
|
-
note: "
|
|
47
|
+
gasToken: "STRK",
|
|
48
|
+
note: "Gas token reset to default: STRK",
|
|
50
49
|
});
|
|
51
50
|
}
|
|
52
51
|
const upper = args.value.toUpperCase();
|
|
@@ -58,18 +57,18 @@ export async function handleConfigAction(args) {
|
|
|
58
57
|
return jsonResult({
|
|
59
58
|
success: true,
|
|
60
59
|
gasToken: upper,
|
|
61
|
-
note: `
|
|
60
|
+
note: `Gas paid in ${upper} via Paymaster`,
|
|
62
61
|
});
|
|
63
62
|
}
|
|
64
63
|
case "list": {
|
|
65
64
|
const all = configService.getAll();
|
|
66
65
|
const gasfreeMode = all.gasfreeMode === true;
|
|
67
66
|
const gasToken = all.gasToken;
|
|
68
|
-
let feeMode = "
|
|
67
|
+
let feeMode = "gasless (pays STRK via Paymaster)";
|
|
69
68
|
if (gasfreeMode)
|
|
70
|
-
feeMode = "gasfree (developer-sponsored via
|
|
69
|
+
feeMode = "gasfree (developer-sponsored via Paymaster)";
|
|
71
70
|
else if (gasToken)
|
|
72
|
-
feeMode = `gasless (
|
|
71
|
+
feeMode = `gasless (pays ${gasToken} via Paymaster)`;
|
|
73
72
|
return jsonResult({ ...all, feeMode });
|
|
74
73
|
}
|
|
75
74
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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"}
|
|
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;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|