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":"staking.js","sourceRoot":"","sources":["../../../src/services/staking/staking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Validator } from "starkzap";
|
|
2
|
+
type Network = "mainnet" | "sepolia";
|
|
3
|
+
export declare function getValidators(network: Network): Validator[];
|
|
4
|
+
export declare function findValidator(query: string, network: Network): Validator | null;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/services/staking/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAEhF,KAAK,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAGrC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAG3D;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAW/E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { mainnetValidators, sepoliaValidators } from "starkzap";
|
|
2
|
+
// Returns all validator presets for the given network.
|
|
3
|
+
export function getValidators(network) {
|
|
4
|
+
const presets = network === "mainnet" ? mainnetValidators : sepoliaValidators;
|
|
5
|
+
return Object.values(presets);
|
|
6
|
+
}
|
|
7
|
+
// Resolves a validator by display name (case-insensitive prefix) or raw staker address.
|
|
8
|
+
export function findValidator(query, network) {
|
|
9
|
+
const validators = getValidators(network);
|
|
10
|
+
const lower = query.toLowerCase();
|
|
11
|
+
return (validators.find((v) => v.stakerAddress.toString().toLowerCase() === lower ||
|
|
12
|
+
v.name.toLowerCase().startsWith(lower)) ?? null);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/services/staking/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAkB,MAAM,UAAU,CAAC;AAIhF,uDAAuD;AACvD,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC7C,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAgB;IAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAElC,OAAO,CACN,UAAU,CAAC,IAAI,CACd,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK;QAClD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CACvC,IAAI,IAAI,CACT,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Wallet } from "starkzap";
|
|
2
|
+
import { StarkZap, type FeeMode } from "starkzap";
|
|
3
|
+
import type { Session } from "../auth/session.js";
|
|
4
|
+
export type StarkZapWallet = Wallet;
|
|
5
|
+
export declare function resolveFeeModeConfig(gasfreeMode: boolean, gasToken: string | undefined): {
|
|
6
|
+
feeMode: FeeMode;
|
|
7
|
+
gasTokenAddress: string | undefined;
|
|
8
|
+
needsPaymaster: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function createSDK(network?: "mainnet" | "sepolia", rpcUrl?: string, needsPaymaster?: boolean, paymasterUrl?: string): StarkZap;
|
|
11
|
+
export declare function connectWallet(sdk: StarkZap, session: Session): Promise<Wallet>;
|
|
12
|
+
export interface SDKAndWallet {
|
|
13
|
+
sdk: StarkZap;
|
|
14
|
+
wallet: Wallet;
|
|
15
|
+
gasTokenAddress: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare function initSDKAndWallet(session: Session): Promise<SDKAndWallet>;
|
|
18
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAA+C,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAQlD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAGpC,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC1B;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;CACxB,CAYA;AAID,wBAAgB,SAAS,CACxB,OAAO,GAAE,SAAS,GAAG,SAAqB,EAC1C,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,UAAQ,EACtB,YAAY,CAAC,EAAE,MAAM,GACnB,QAAQ,CAYV;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBpF;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB9E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { StarkZap, StarkSigner, PrivySigner, ArgentXV050Preset } from "starkzap";
|
|
2
|
+
import { ConfigService } from "../config/config.js";
|
|
3
|
+
import { AVNU_PAYMASTER_URL, AVNU_PAYMASTER_SEPOLIA_URL, GAS_TOKEN_ADDRESSES, } from "../../lib/config.js";
|
|
4
|
+
// Fee mode priority: gasfreeMode (sponsored) → gasToken (gasless) → default (user pays STRK)
|
|
5
|
+
export function resolveFeeModeConfig(gasfreeMode, gasToken) {
|
|
6
|
+
if (gasfreeMode) {
|
|
7
|
+
return { feeMode: "sponsored", gasTokenAddress: undefined, needsPaymaster: true };
|
|
8
|
+
}
|
|
9
|
+
if (gasToken) {
|
|
10
|
+
const gasTokenAddress = GAS_TOKEN_ADDRESSES[gasToken.toUpperCase()];
|
|
11
|
+
if (gasTokenAddress) {
|
|
12
|
+
// user_pays at wallet connect-level; gasToken is injected at execute-time
|
|
13
|
+
return { feeMode: "user_pays", gasTokenAddress, needsPaymaster: true };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return { feeMode: "user_pays", gasTokenAddress: undefined, needsPaymaster: false };
|
|
17
|
+
}
|
|
18
|
+
let sdkInstance = null;
|
|
19
|
+
export function createSDK(network = "mainnet", rpcUrl, needsPaymaster = false, paymasterUrl) {
|
|
20
|
+
const config = { network };
|
|
21
|
+
if (rpcUrl)
|
|
22
|
+
config.rpcUrl = rpcUrl;
|
|
23
|
+
if (needsPaymaster) {
|
|
24
|
+
const defaultUrl = network === "sepolia" ? AVNU_PAYMASTER_SEPOLIA_URL : AVNU_PAYMASTER_URL;
|
|
25
|
+
config.paymaster = { nodeUrl: paymasterUrl ?? defaultUrl };
|
|
26
|
+
}
|
|
27
|
+
sdkInstance = new StarkZap(config);
|
|
28
|
+
return sdkInstance;
|
|
29
|
+
}
|
|
30
|
+
export async function connectWallet(sdk, session) {
|
|
31
|
+
const configService = ConfigService.getInstance();
|
|
32
|
+
const gasfreeMode = configService.get("gasfreeMode") === true;
|
|
33
|
+
const gasToken = configService.get("gasToken");
|
|
34
|
+
const { feeMode } = resolveFeeModeConfig(gasfreeMode, gasToken);
|
|
35
|
+
if (session.type === "local") {
|
|
36
|
+
return sdk.connectWallet({
|
|
37
|
+
account: { signer: new StarkSigner(session.privateKey) },
|
|
38
|
+
feeMode,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const signer = new PrivySigner({
|
|
42
|
+
walletId: session.walletId,
|
|
43
|
+
publicKey: session.publicKey,
|
|
44
|
+
serverUrl: session.serverUrl,
|
|
45
|
+
headers: { Authorization: `Bearer ${session.token}` },
|
|
46
|
+
});
|
|
47
|
+
return sdk.connectWallet({
|
|
48
|
+
account: { signer, accountClass: ArgentXV050Preset },
|
|
49
|
+
feeMode,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export async function initSDKAndWallet(session) {
|
|
53
|
+
const configService = ConfigService.getInstance();
|
|
54
|
+
const rpcUrl = configService.get("rpcUrl");
|
|
55
|
+
const gasfreeMode = configService.get("gasfreeMode") === true;
|
|
56
|
+
const gasToken = configService.get("gasToken");
|
|
57
|
+
const { gasTokenAddress, needsPaymaster } = resolveFeeModeConfig(gasfreeMode, gasToken);
|
|
58
|
+
const paymasterUrl = session.type === "privy" && session.serverUrl
|
|
59
|
+
? session.serverUrl.replace("/sign/hash", "/paymaster")
|
|
60
|
+
: undefined;
|
|
61
|
+
const sdk = createSDK(session.network, rpcUrl, needsPaymaster, paymasterUrl);
|
|
62
|
+
const wallet = await connectWallet(sdk, session);
|
|
63
|
+
return { sdk, wallet, gasTokenAddress };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/starkzap/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WalletInterface } from "starkzap";
|
|
2
|
+
export interface TokenBalance {
|
|
3
|
+
symbol: string;
|
|
4
|
+
name: string;
|
|
5
|
+
balance: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function getBalances(wallet: WalletInterface): Promise<TokenBalance[]>;
|
|
8
|
+
//# sourceMappingURL=balances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balances.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/balances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAsBlF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { fetchTokens } from "./tokens.js";
|
|
2
|
+
export async function getBalances(wallet) {
|
|
3
|
+
const tokens = await fetchTokens();
|
|
4
|
+
const results = [];
|
|
5
|
+
const balancePromises = tokens.map(async (token) => {
|
|
6
|
+
try {
|
|
7
|
+
const amount = await wallet.balanceOf(token);
|
|
8
|
+
if (amount.isPositive()) {
|
|
9
|
+
results.push({
|
|
10
|
+
symbol: token.symbol,
|
|
11
|
+
name: token.name,
|
|
12
|
+
balance: amount.toUnit(),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// Silently fail for individual token checks that might error due to contract issues.
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
await Promise.all(balancePromises);
|
|
21
|
+
return results;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=balances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../src/services/tokens/balances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAuB;IACxD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAClD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;iBACxB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,qFAAqF;QACtF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Token } from "starkzap";
|
|
2
|
+
export declare function fetchTokens(): Promise<Token[]>;
|
|
3
|
+
export declare function resolveToken(symbol: string): Promise<Token>;
|
|
4
|
+
export declare function resolveTokenByAddress(address: string): Promise<Token | null>;
|
|
5
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAG3D,wBAAsB,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAIpD;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAiBjE;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAGlF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChainId, getPresets } from "starkzap";
|
|
2
|
+
import { ErrorCode, StarkfiError } from "../../lib/errors.js";
|
|
3
|
+
export async function fetchTokens() {
|
|
4
|
+
// getPresets returns a Record<string, Token>. We convert it to an array.
|
|
5
|
+
const presetTokens = getPresets(ChainId.MAINNET);
|
|
6
|
+
return Object.values(presetTokens);
|
|
7
|
+
}
|
|
8
|
+
export async function resolveToken(symbol) {
|
|
9
|
+
const tokens = await fetchTokens();
|
|
10
|
+
const upperSymbol = symbol.toUpperCase();
|
|
11
|
+
const token = tokens.find((t) => t.symbol.toUpperCase() === upperSymbol);
|
|
12
|
+
if (!token) {
|
|
13
|
+
throw new StarkfiError(ErrorCode.NO_ROUTE_FOUND, `Token not found: ${symbol}. Available tokens: ${tokens
|
|
14
|
+
.slice(0, 15)
|
|
15
|
+
.map((t) => t.symbol)
|
|
16
|
+
.join(", ")}...`);
|
|
17
|
+
}
|
|
18
|
+
return token;
|
|
19
|
+
}
|
|
20
|
+
export async function resolveTokenByAddress(address) {
|
|
21
|
+
const tokens = await fetchTokens();
|
|
22
|
+
return tokens.find((t) => t.address.toLowerCase() === address.toLowerCase()) ?? null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/services/tokens/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,WAAW;IAChC,yEAAyE;IACzE,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,CAAC;IAEzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,YAAY,CACrB,SAAS,CAAC,cAAc,EACxB,oBAAoB,MAAM,uBAAuB,MAAM;aACrD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CACjB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe;IAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/vesu/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StarkZapWallet } from "../starkzap/client.js";
|
|
2
|
+
export interface LendingPosition {
|
|
3
|
+
collateralAsset: string;
|
|
4
|
+
debtAsset: string;
|
|
5
|
+
collateralAmount: string;
|
|
6
|
+
debtAmount: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TxResult {
|
|
9
|
+
hash: string;
|
|
10
|
+
explorerUrl: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function supply(wallet: StarkZapWallet, poolAddress: string, tokenSymbol: string, amount: string): Promise<TxResult>;
|
|
13
|
+
export declare function withdraw(wallet: StarkZapWallet, poolAddress: string, tokenSymbol: string, amount: string): Promise<TxResult>;
|
|
14
|
+
export declare function borrow(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, collateralAmount: string, debtTokenSymbol: string, debtAmount: string): Promise<TxResult>;
|
|
15
|
+
export declare function repay(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, debtTokenSymbol: string, repayAmount: string): Promise<TxResult>;
|
|
16
|
+
export declare function getPosition(wallet: StarkZapWallet, poolAddress: string, collateralTokenSymbol: string, debtTokenSymbol: string): Promise<LendingPosition | null>;
|
|
17
|
+
//# sourceMappingURL=lending.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/lending.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAsB,MAAM,CAC3B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAGD,wBAAsB,QAAQ,CAC7B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAGD,wBAAsB,MAAM,CAC3B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CA4BnB;AAGD,wBAAsB,KAAK,CAC1B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CA2BnB;AAGD,wBAAsB,WAAW,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAiCjC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Amount, fromAddress } from "starkzap";
|
|
2
|
+
import { resolveToken } from "../tokens/tokens.js";
|
|
3
|
+
import { ErrorCode, StarkfiError } from "../../lib/errors.js";
|
|
4
|
+
// AmountDenomination::Assets = 1
|
|
5
|
+
const DENOMINATION_ASSETS = 1;
|
|
6
|
+
const POOL_FACTORY_ADDRESS = "0x05d1b22e63dc47c8b3b7d19a38e8fb3977069099f8dabb72bd0e5ff1f0b18e6c";
|
|
7
|
+
// Vesu Amount struct: { denomination: enum, value: i257 }
|
|
8
|
+
// i257 → (mag: u256(low128, high128), sign: bool) → 4 felts total.
|
|
9
|
+
function encodeVesuAmount(denomination, value) {
|
|
10
|
+
const isNegative = value < 0n;
|
|
11
|
+
const mag = isNegative ? -value : value;
|
|
12
|
+
const low = mag & ((1n << 128n) - 1n);
|
|
13
|
+
const high = mag >> 128n;
|
|
14
|
+
return [
|
|
15
|
+
`0x${denomination.toString(16)}`,
|
|
16
|
+
`0x${low.toString(16)}`,
|
|
17
|
+
`0x${high.toString(16)}`,
|
|
18
|
+
isNegative ? "0x1" : "0x0",
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
function encodeZeroAmount() {
|
|
22
|
+
return encodeVesuAmount(DENOMINATION_ASSETS, 0n);
|
|
23
|
+
}
|
|
24
|
+
// Supply via vToken ERC-4626: approve + vToken.deposit(assets, receiver)
|
|
25
|
+
export async function supply(wallet, poolAddress, tokenSymbol, amount) {
|
|
26
|
+
const token = await resolveToken(tokenSymbol);
|
|
27
|
+
const parsedAmount = Amount.parse(amount, token);
|
|
28
|
+
const vTokenAddress = await getVTokenAddress(wallet, poolAddress, token);
|
|
29
|
+
const userAddress = wallet.address.toString();
|
|
30
|
+
const tx = await wallet
|
|
31
|
+
.tx()
|
|
32
|
+
.approve(token, fromAddress(vTokenAddress), parsedAmount)
|
|
33
|
+
.add({
|
|
34
|
+
contractAddress: fromAddress(vTokenAddress),
|
|
35
|
+
entrypoint: "deposit",
|
|
36
|
+
calldata: [parsedAmount.toBase().toString(), "0", userAddress],
|
|
37
|
+
})
|
|
38
|
+
.send();
|
|
39
|
+
await tx.wait();
|
|
40
|
+
return { hash: tx.hash, explorerUrl: tx.explorerUrl };
|
|
41
|
+
}
|
|
42
|
+
// Withdraw via vToken ERC-4626: vToken.withdraw(assets, receiver, owner)
|
|
43
|
+
export async function withdraw(wallet, poolAddress, tokenSymbol, amount) {
|
|
44
|
+
const token = await resolveToken(tokenSymbol);
|
|
45
|
+
const parsedAmount = Amount.parse(amount, token);
|
|
46
|
+
const vTokenAddress = await getVTokenAddress(wallet, poolAddress, token);
|
|
47
|
+
const userAddress = wallet.address.toString();
|
|
48
|
+
const tx = await wallet
|
|
49
|
+
.tx()
|
|
50
|
+
.add({
|
|
51
|
+
contractAddress: fromAddress(vTokenAddress),
|
|
52
|
+
entrypoint: "withdraw",
|
|
53
|
+
calldata: [parsedAmount.toBase().toString(), "0", userAddress, userAddress],
|
|
54
|
+
})
|
|
55
|
+
.send();
|
|
56
|
+
await tx.wait();
|
|
57
|
+
return { hash: tx.hash, explorerUrl: tx.explorerUrl };
|
|
58
|
+
}
|
|
59
|
+
// Borrow via pool.manage_position: approve collateral + positive collateral & positive debt.
|
|
60
|
+
export async function borrow(wallet, poolAddress, collateralTokenSymbol, collateralAmount, debtTokenSymbol, debtAmount) {
|
|
61
|
+
const collateralToken = await resolveToken(collateralTokenSymbol);
|
|
62
|
+
const debtToken = await resolveToken(debtTokenSymbol);
|
|
63
|
+
const parsedCollateral = Amount.parse(collateralAmount, collateralToken);
|
|
64
|
+
const parsedDebt = Amount.parse(debtAmount, debtToken);
|
|
65
|
+
const userAddress = wallet.address.toString();
|
|
66
|
+
const calldata = [
|
|
67
|
+
collateralToken.address.toString(),
|
|
68
|
+
debtToken.address.toString(),
|
|
69
|
+
userAddress,
|
|
70
|
+
...encodeVesuAmount(DENOMINATION_ASSETS, parsedCollateral.toBase()),
|
|
71
|
+
...encodeVesuAmount(DENOMINATION_ASSETS, parsedDebt.toBase()),
|
|
72
|
+
];
|
|
73
|
+
const tx = await wallet
|
|
74
|
+
.tx()
|
|
75
|
+
.approve(collateralToken, fromAddress(poolAddress), parsedCollateral)
|
|
76
|
+
.add({
|
|
77
|
+
contractAddress: fromAddress(poolAddress),
|
|
78
|
+
entrypoint: "manage_position",
|
|
79
|
+
calldata,
|
|
80
|
+
})
|
|
81
|
+
.send();
|
|
82
|
+
await tx.wait();
|
|
83
|
+
return { hash: tx.hash, explorerUrl: tx.explorerUrl };
|
|
84
|
+
}
|
|
85
|
+
// Repay via pool.manage_position: approve debt token + zero collateral & negative debt.
|
|
86
|
+
export async function repay(wallet, poolAddress, collateralTokenSymbol, debtTokenSymbol, repayAmount) {
|
|
87
|
+
const collateralToken = await resolveToken(collateralTokenSymbol);
|
|
88
|
+
const debtToken = await resolveToken(debtTokenSymbol);
|
|
89
|
+
const parsedRepay = Amount.parse(repayAmount, debtToken);
|
|
90
|
+
const userAddress = wallet.address.toString();
|
|
91
|
+
const calldata = [
|
|
92
|
+
collateralToken.address.toString(),
|
|
93
|
+
debtToken.address.toString(),
|
|
94
|
+
userAddress,
|
|
95
|
+
...encodeZeroAmount(),
|
|
96
|
+
...encodeVesuAmount(DENOMINATION_ASSETS, -parsedRepay.toBase()),
|
|
97
|
+
];
|
|
98
|
+
const tx = await wallet
|
|
99
|
+
.tx()
|
|
100
|
+
.approve(debtToken, fromAddress(poolAddress), parsedRepay)
|
|
101
|
+
.add({
|
|
102
|
+
contractAddress: fromAddress(poolAddress),
|
|
103
|
+
entrypoint: "manage_position",
|
|
104
|
+
calldata,
|
|
105
|
+
})
|
|
106
|
+
.send();
|
|
107
|
+
await tx.wait();
|
|
108
|
+
return { hash: tx.hash, explorerUrl: tx.explorerUrl };
|
|
109
|
+
}
|
|
110
|
+
// Query pool.position(collateral, debt, user) → extract last 4 felts as u256 pair.
|
|
111
|
+
export async function getPosition(wallet, poolAddress, collateralTokenSymbol, debtTokenSymbol) {
|
|
112
|
+
const collateralToken = await resolveToken(collateralTokenSymbol);
|
|
113
|
+
const debtToken = await resolveToken(debtTokenSymbol);
|
|
114
|
+
const userAddress = wallet.address.toString();
|
|
115
|
+
const result = await wallet.callContract({
|
|
116
|
+
contractAddress: poolAddress,
|
|
117
|
+
entrypoint: "position",
|
|
118
|
+
calldata: [collateralToken.address.toString(), debtToken.address.toString(), userAddress],
|
|
119
|
+
});
|
|
120
|
+
const feltCount = result.length;
|
|
121
|
+
if (feltCount < 4)
|
|
122
|
+
return null;
|
|
123
|
+
const collLow = BigInt(result[feltCount - 4]);
|
|
124
|
+
const collHigh = BigInt(result[feltCount - 3]);
|
|
125
|
+
const debtLow = BigInt(result[feltCount - 2]);
|
|
126
|
+
const debtHigh = BigInt(result[feltCount - 1]);
|
|
127
|
+
const collateralRaw = collLow + (collHigh << 128n);
|
|
128
|
+
const debtRaw = debtLow + (debtHigh << 128n);
|
|
129
|
+
if (collateralRaw === 0n && debtRaw === 0n)
|
|
130
|
+
return null;
|
|
131
|
+
const collFormatted = Amount.fromRaw(collateralRaw, collateralToken).toFormatted(true);
|
|
132
|
+
const debtFormatted = Amount.fromRaw(debtRaw, debtToken).toFormatted(true);
|
|
133
|
+
return {
|
|
134
|
+
collateralAsset: collateralTokenSymbol.toUpperCase(),
|
|
135
|
+
debtAsset: debtTokenSymbol.toUpperCase(),
|
|
136
|
+
collateralAmount: collFormatted,
|
|
137
|
+
debtAmount: debtFormatted,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// Queries PoolFactory for vToken address of a pool+asset pair.
|
|
141
|
+
async function getVTokenAddress(wallet, poolAddress, token) {
|
|
142
|
+
const result = await wallet.callContract({
|
|
143
|
+
contractAddress: POOL_FACTORY_ADDRESS,
|
|
144
|
+
entrypoint: "v_token",
|
|
145
|
+
calldata: [poolAddress, token.address.toString()],
|
|
146
|
+
});
|
|
147
|
+
if (!result || result.length === 0 || result[0] === "0x0") {
|
|
148
|
+
throw new StarkfiError(ErrorCode.LENDING_FAILED, `No vToken found for ${token.symbol} in pool ${poolAddress}. ` +
|
|
149
|
+
`This asset may not be supported by this pool.`);
|
|
150
|
+
}
|
|
151
|
+
return result[0];
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=lending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lending.js","sourceRoot":"","sources":["../../../src/services/vesu/lending.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface VesuPool {
|
|
2
|
+
name: string;
|
|
3
|
+
poolContract: string;
|
|
4
|
+
pairs: {
|
|
5
|
+
collateral: string;
|
|
6
|
+
debt: string;
|
|
7
|
+
}[];
|
|
8
|
+
}
|
|
9
|
+
type Network = "mainnet" | "sepolia";
|
|
10
|
+
export declare function getVesuPools(network: Network): VesuPool[];
|
|
11
|
+
export declare function findVesuPool(query: string, network: Network): VesuPool | null;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=pools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pools.d.ts","sourceRoot":"","sources":["../../../src/services/vesu/pools.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9C;AA2BD,KAAK,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAErC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,CAEzD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAS7E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Curated Vesu V2 pool registry — mirrors the staking validators.ts pattern.
|
|
2
|
+
// Pool addresses sourced from https://docs.vesu.xyz/developers/contract-addresses
|
|
3
|
+
const mainnetPools = [
|
|
4
|
+
{
|
|
5
|
+
name: "Genesis",
|
|
6
|
+
poolContract: "0x04dc0aba5cd1eb9e2e8e1cd615e5e1d3e97aab44c1585a8243a75c4bde4de806",
|
|
7
|
+
pairs: [
|
|
8
|
+
{ collateral: "ETH", debt: "USDC" },
|
|
9
|
+
{ collateral: "ETH", debt: "USDT" },
|
|
10
|
+
{ collateral: "STRK", debt: "USDC" },
|
|
11
|
+
{ collateral: "STRK", debt: "USDT" },
|
|
12
|
+
{ collateral: "STRK", debt: "ETH" },
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "Re7 Labs",
|
|
17
|
+
poolContract: "0x05e74e13095c20746947990ab359bd3e2a3a9e19e44e5e247dc58e57e0480a66",
|
|
18
|
+
pairs: [
|
|
19
|
+
{ collateral: "ETH", debt: "USDC" },
|
|
20
|
+
{ collateral: "STRK", debt: "USDC" },
|
|
21
|
+
{ collateral: "STRK", debt: "ETH" },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
const sepoliaPools = [];
|
|
26
|
+
export function getVesuPools(network) {
|
|
27
|
+
return network === "mainnet" ? mainnetPools : sepoliaPools;
|
|
28
|
+
}
|
|
29
|
+
// Resolve pool by display name (case-insensitive prefix) or contract address.
|
|
30
|
+
export function findVesuPool(query, network) {
|
|
31
|
+
const pools = getVesuPools(network);
|
|
32
|
+
const lower = query.toLowerCase();
|
|
33
|
+
return (pools.find((p) => p.poolContract.toLowerCase() === lower || p.name.toLowerCase().startsWith(lower)) ?? null);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=pools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../src/services/vesu/pools.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,kFAAkF;AAQlF,MAAM,YAAY,GAAe;IAChC;QACC,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,oEAAoE;QAClF,KAAK,EAAE;YACN,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YACnC,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YACnC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YACpC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YACpC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;SACnC;KACD;IACD;QACC,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,oEAAoE;QAClF,KAAK,EAAE;YACN,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;YACnC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YACpC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;SACnC;KACD;CACD,CAAC;AAEF,MAAM,YAAY,GAAe,EAAE,CAAC;AAIpC,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC5C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAAgB;IAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAElC,OAAO,CACN,KAAK,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CACvF,IAAI,IAAI,CACT,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "starkfi",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Starknet DeFi CLI + MCP Server — Token swaps, staking, lending, gasless transactions",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"starkfi": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"starknet",
|
|
23
|
+
"defi",
|
|
24
|
+
"cli",
|
|
25
|
+
"mcp",
|
|
26
|
+
"mcp-server",
|
|
27
|
+
"starkzap",
|
|
28
|
+
"swap",
|
|
29
|
+
"staking",
|
|
30
|
+
"lending",
|
|
31
|
+
"vesu",
|
|
32
|
+
"fibrous",
|
|
33
|
+
"web3",
|
|
34
|
+
"l2"
|
|
35
|
+
],
|
|
36
|
+
"author": "ahmetenesdur",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "git+https://github.com/ahmetenesdur/starkfi.git"
|
|
41
|
+
},
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/ahmetenesdur/starkfi/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/ahmetenesdur/starkfi#readme",
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
51
|
+
"chalk": "^5.6.2",
|
|
52
|
+
"commander": "^14.0.3",
|
|
53
|
+
"env-paths": "^3.0.0",
|
|
54
|
+
"inquirer": "^13.3.0",
|
|
55
|
+
"ora": "^9.3.0",
|
|
56
|
+
"starknet": "^9.2.1",
|
|
57
|
+
"starkzap": "^1.0.0",
|
|
58
|
+
"zod": "^4.3.6"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@eslint/js": "^10.0.1",
|
|
62
|
+
"@types/node": "^22.19.11",
|
|
63
|
+
"eslint": "^10.0.2",
|
|
64
|
+
"eslint-config-prettier": "^10.1.8",
|
|
65
|
+
"globals": "^17.3.0",
|
|
66
|
+
"jiti": "^2.6.1",
|
|
67
|
+
"prettier": "^3.8.1",
|
|
68
|
+
"tsx": "^4.21.0",
|
|
69
|
+
"typescript": "^5.9.3",
|
|
70
|
+
"typescript-eslint": "^8.56.1"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsc",
|
|
74
|
+
"dev": "node --import tsx/esm src/index.ts",
|
|
75
|
+
"typecheck": "tsc --noEmit",
|
|
76
|
+
"lint": "eslint src/",
|
|
77
|
+
"lint:fix": "eslint src/ --fix",
|
|
78
|
+
"format": "prettier --write src/",
|
|
79
|
+
"format:check": "prettier --check src/",
|
|
80
|
+
"start": "node dist/index.js",
|
|
81
|
+
"mcp-start": "node dist/index.js mcp-start"
|
|
82
|
+
}
|
|
83
|
+
}
|