@kasarlabs/vesu-mcp 0.1.2 → 0.1.4
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/build/index.js +86 -6
- package/build/index.js.map +1 -1
- package/build/interfaces/index.d.ts +661 -8
- package/build/interfaces/index.js +57 -1
- package/build/interfaces/index.js.map +1 -1
- package/build/lib/abis/ekuboCore.d.ts +92 -0
- package/build/lib/abis/ekuboCore.js +1341 -0
- package/build/lib/abis/ekuboCore.js.map +1 -0
- package/build/lib/abis/multiplyAbi.d.ts +245 -0
- package/build/lib/abis/multiplyAbi.js +341 -0
- package/build/lib/abis/multiplyAbi.js.map +1 -0
- package/build/lib/abis/poolAbi.d.ts +289 -0
- package/build/lib/abis/poolAbi.js +402 -0
- package/build/lib/abis/poolAbi.js.map +1 -0
- package/build/lib/abis/routerAbi.d.ts +88 -0
- package/build/lib/abis/routerAbi.js +86 -0
- package/build/lib/abis/routerAbi.js.map +1 -0
- package/build/lib/constants/index.d.ts +9 -3
- package/build/lib/constants/index.js +8 -3
- package/build/lib/constants/index.js.map +1 -1
- package/build/lib/utils/contracts.d.ts +535 -89
- package/build/lib/utils/contracts.js +39 -5
- package/build/lib/utils/contracts.js.map +1 -1
- package/build/lib/utils/ekubo.d.ts +55 -0
- package/build/lib/utils/ekubo.js +81 -0
- package/build/lib/utils/ekubo.js.map +1 -0
- package/build/lib/utils/getEkuboQuote.d.ts +4 -0
- package/build/lib/utils/getEkuboQuote.js +116 -0
- package/build/lib/utils/getEkuboQuote.js.map +1 -0
- package/build/lib/utils/math.d.ts +8 -0
- package/build/lib/utils/math.js +22 -0
- package/build/lib/utils/math.js.map +1 -0
- package/build/lib/utils/multiplyCalls.d.ts +10 -0
- package/build/lib/utils/multiplyCalls.js +248 -0
- package/build/lib/utils/multiplyCalls.js.map +1 -0
- package/build/lib/utils/pools.d.ts +8 -0
- package/build/lib/utils/pools.js +72 -0
- package/build/lib/utils/pools.js.map +1 -0
- package/build/lib/utils/tokens.d.ts +6 -0
- package/build/lib/utils/tokens.js +23 -0
- package/build/lib/utils/tokens.js.map +1 -0
- package/build/schemas/index.d.ts +176 -0
- package/build/schemas/index.js +201 -1
- package/build/schemas/index.js.map +1 -1
- package/build/tools/read/getPools.d.ts +3 -0
- package/build/tools/read/getPools.js +57 -0
- package/build/tools/read/getPools.js.map +1 -0
- package/build/tools/read/getPositions.d.ts +3 -0
- package/build/tools/read/getPositions.js +43 -0
- package/build/tools/read/getPositions.js.map +1 -0
- package/build/tools/read/getTokens.d.ts +3 -0
- package/build/tools/read/getTokens.js +50 -0
- package/build/tools/read/getTokens.js.map +1 -0
- package/build/tools/write/deposit_borrow.d.ts +10 -0
- package/build/tools/write/deposit_borrow.js +312 -0
- package/build/tools/write/deposit_borrow.js.map +1 -0
- package/build/tools/write/deposit_earn.d.ts +10 -0
- package/build/tools/write/deposit_earn.js +82 -0
- package/build/tools/write/deposit_earn.js.map +1 -0
- package/build/tools/write/deposit_multiply.d.ts +10 -0
- package/build/tools/write/deposit_multiply.js +140 -0
- package/build/tools/write/deposit_multiply.js.map +1 -0
- package/build/tools/write/repay_borrow.d.ts +10 -0
- package/build/tools/write/repay_borrow.js +358 -0
- package/build/tools/write/repay_borrow.js.map +1 -0
- package/build/tools/write/update_multiply.d.ts +10 -0
- package/build/tools/write/update_multiply.js +264 -0
- package/build/tools/write/update_multiply.js.map +1 -0
- package/build/tools/write/withdraw_earn.d.ts +10 -0
- package/build/tools/write/withdraw_earn.js +116 -0
- package/build/tools/write/withdraw_earn.js.map +1 -0
- package/build/tools/write/withdraw_multiply.d.ts +9 -0
- package/build/tools/write/withdraw_multiply.js +187 -0
- package/build/tools/write/withdraw_multiply.js.map +1 -0
- package/package.json +6 -5
- package/build/lib/abis/erc20Abi.d.ts +0 -89
- package/build/lib/abis/erc20Abi.js +0 -128
- package/build/lib/abis/erc20Abi.js.map +0 -1
- package/build/tools/depositService.d.ts +0 -19
- package/build/tools/depositService.js +0 -117
- package/build/tools/depositService.js.map +0 -1
- package/build/tools/withdrawService.d.ts +0 -20
- package/build/tools/withdrawService.js +0 -122
- package/build/tools/withdrawService.js.map +0 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { poolParser, } from '../../interfaces/index.js';
|
|
3
|
+
import { DEFAULT_DECIMALS, VESU_API_URL } from '../../lib/constants/index.js';
|
|
4
|
+
import { toBN } from './num.js';
|
|
5
|
+
import { getExtensionContract } from './contracts.js';
|
|
6
|
+
export function getExtensionContractAddress(pool) {
|
|
7
|
+
if (pool.protocolVersion === 'v1') {
|
|
8
|
+
return pool.extensionContractAddress;
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return pool.id;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export async function getSingletonAddress(pool) {
|
|
15
|
+
const extensionContractAddress = getExtensionContractAddress(pool);
|
|
16
|
+
if (!extensionContractAddress) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const extensionContract = getExtensionContract(extensionContractAddress);
|
|
21
|
+
const singletonAddress = (await extensionContract.singleton());
|
|
22
|
+
return singletonAddress;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (pool.protocolVersion === 'v2') {
|
|
26
|
+
console.warn(`Failed to call singleton() on extension contract for v2 pool. Using extension address as fallback: ${extensionContractAddress}`);
|
|
27
|
+
return extensionContractAddress;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new Error(`Failed to get singleton address from extension contract: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function getTokenPrice(token, poolId, poolExtension) {
|
|
35
|
+
const contract = getExtensionContract(poolExtension);
|
|
36
|
+
try {
|
|
37
|
+
const res = await contract.price(poolId, token.address);
|
|
38
|
+
return res.is_valid && res.value
|
|
39
|
+
? { value: toBN(res.value), decimals: DEFAULT_DECIMALS }
|
|
40
|
+
: undefined;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function getPoolAssetsPriceAndRiskMdx(pool, poolAssets) {
|
|
47
|
+
const extensionContractAddress = getExtensionContractAddress(pool);
|
|
48
|
+
return await Promise.all(poolAssets.map(async (asset) => {
|
|
49
|
+
const usdPrice = extensionContractAddress
|
|
50
|
+
? await getTokenPrice(asset, pool.id, extensionContractAddress)
|
|
51
|
+
: undefined;
|
|
52
|
+
return {
|
|
53
|
+
...asset,
|
|
54
|
+
risk: null,
|
|
55
|
+
usdPrice,
|
|
56
|
+
};
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
export async function getPool(poolId) {
|
|
60
|
+
const data = await fetch(`${VESU_API_URL}/pools/${poolId}`).then((res) => res.json());
|
|
61
|
+
const parsedData = z
|
|
62
|
+
.object({ data: poolParser })
|
|
63
|
+
.transform(({ data }) => data)
|
|
64
|
+
.parse(data);
|
|
65
|
+
const pool = {
|
|
66
|
+
...parsedData,
|
|
67
|
+
assets: parsedData.assets || [],
|
|
68
|
+
};
|
|
69
|
+
const assets = await getPoolAssetsPriceAndRiskMdx(pool, pool.assets);
|
|
70
|
+
return { ...pool, assets };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=pools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../src/lib/utils/pools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Call } from 'starknet';
|
|
2
|
+
import { IBaseToken, Address } from '../../interfaces/index.js';
|
|
3
|
+
import { Hex } from './num.js';
|
|
4
|
+
export declare function getTokenBalance(baseToken: IBaseToken, walletAddress: Hex): Promise<bigint>;
|
|
5
|
+
export declare const formatTokenAmount: (amount: string, decimals: number) => string;
|
|
6
|
+
export declare function approveVTokenCalls(assetAddress: Address, vTokenAddress: Address, amount: bigint): Promise<Call>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { toBN } from './num.js';
|
|
2
|
+
import { getErc20Contract } from './contracts.js';
|
|
3
|
+
export async function getTokenBalance(baseToken, walletAddress) {
|
|
4
|
+
const tokenContract = getErc20Contract(baseToken.address);
|
|
5
|
+
return await tokenContract
|
|
6
|
+
.balanceOf(walletAddress)
|
|
7
|
+
.then(toBN)
|
|
8
|
+
.catch(() => {
|
|
9
|
+
console.error(new Error(`Failed to get balance of ${baseToken.address}`));
|
|
10
|
+
return 0n;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export const formatTokenAmount = (amount, decimals) => {
|
|
14
|
+
const [whole, fraction = ''] = amount.split('.');
|
|
15
|
+
const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);
|
|
16
|
+
return whole + paddedFraction;
|
|
17
|
+
};
|
|
18
|
+
export async function approveVTokenCalls(assetAddress, vTokenAddress, amount) {
|
|
19
|
+
const tokenContract = getErc20Contract(assetAddress);
|
|
20
|
+
const approveCall = tokenContract.populateTransaction.approve(vTokenAddress, amount);
|
|
21
|
+
return approveCall;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/lib/utils/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAQlD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAqB,EACrB,aAAkB;IAElB,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1D,OAAO,MAAM,aAAa;SACvB,SAAS,CAAC,aAAa,CAAC;SACxB,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC;AASD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAU,EAAE;IAC5E,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzE,OAAO,KAAK,GAAG,cAAc,CAAC;AAChC,CAAC,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAqB,EACrB,aAAsB,EACtB,MAAc;IAEd,MAAM,aAAa,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAC3D,aAAa,EACb,MAAM,CACP,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/build/schemas/index.d.ts
CHANGED
|
@@ -2,17 +2,193 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const depositEarnSchema: z.ZodObject<{
|
|
3
3
|
depositTokenSymbol: z.ZodString;
|
|
4
4
|
depositAmount: z.ZodString;
|
|
5
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
5
6
|
}, "strip", z.ZodTypeAny, {
|
|
6
7
|
depositTokenSymbol: string;
|
|
7
8
|
depositAmount: string;
|
|
9
|
+
poolId?: string | undefined;
|
|
8
10
|
}, {
|
|
9
11
|
depositTokenSymbol: string;
|
|
10
12
|
depositAmount: string;
|
|
13
|
+
poolId?: string | undefined;
|
|
11
14
|
}>;
|
|
12
15
|
export declare const withdrawEarnSchema: z.ZodObject<{
|
|
13
16
|
withdrawTokenSymbol: z.ZodString;
|
|
17
|
+
withdrawAmount: z.ZodOptional<z.ZodString>;
|
|
18
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
14
19
|
}, "strip", z.ZodTypeAny, {
|
|
15
20
|
withdrawTokenSymbol: string;
|
|
21
|
+
poolId?: string | undefined;
|
|
22
|
+
withdrawAmount?: string | undefined;
|
|
16
23
|
}, {
|
|
17
24
|
withdrawTokenSymbol: string;
|
|
25
|
+
poolId?: string | undefined;
|
|
26
|
+
withdrawAmount?: string | undefined;
|
|
18
27
|
}>;
|
|
28
|
+
export declare const depositMultiplySchema: z.ZodObject<{
|
|
29
|
+
collateralTokenSymbol: z.ZodString;
|
|
30
|
+
debtTokenSymbol: z.ZodString;
|
|
31
|
+
depositAmount: z.ZodString;
|
|
32
|
+
targetLTV: z.ZodString;
|
|
33
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
34
|
+
ekuboFee: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
35
|
+
ekuboTickSpacing: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
36
|
+
ekuboExtension: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
37
|
+
ekuboSlippage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
targetLTV: string;
|
|
40
|
+
depositAmount: string;
|
|
41
|
+
collateralTokenSymbol: string;
|
|
42
|
+
debtTokenSymbol: string;
|
|
43
|
+
ekuboFee: number;
|
|
44
|
+
ekuboTickSpacing: number;
|
|
45
|
+
ekuboExtension: string;
|
|
46
|
+
ekuboSlippage: number;
|
|
47
|
+
poolId?: string | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
targetLTV: string;
|
|
50
|
+
depositAmount: string;
|
|
51
|
+
collateralTokenSymbol: string;
|
|
52
|
+
debtTokenSymbol: string;
|
|
53
|
+
poolId?: string | undefined;
|
|
54
|
+
ekuboFee?: number | undefined;
|
|
55
|
+
ekuboTickSpacing?: number | undefined;
|
|
56
|
+
ekuboExtension?: string | undefined;
|
|
57
|
+
ekuboSlippage?: number | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
export declare const withdrawMultiplySchema: z.ZodObject<{
|
|
60
|
+
collateralTokenSymbol: z.ZodString;
|
|
61
|
+
debtTokenSymbol: z.ZodString;
|
|
62
|
+
withdrawAmount: z.ZodOptional<z.ZodString>;
|
|
63
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
64
|
+
ekuboFee: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
65
|
+
ekuboTickSpacing: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
66
|
+
ekuboExtension: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
67
|
+
ekuboSlippage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
68
|
+
}, "strip", z.ZodTypeAny, {
|
|
69
|
+
collateralTokenSymbol: string;
|
|
70
|
+
debtTokenSymbol: string;
|
|
71
|
+
ekuboFee: number;
|
|
72
|
+
ekuboTickSpacing: number;
|
|
73
|
+
ekuboExtension: string;
|
|
74
|
+
ekuboSlippage: number;
|
|
75
|
+
poolId?: string | undefined;
|
|
76
|
+
withdrawAmount?: string | undefined;
|
|
77
|
+
}, {
|
|
78
|
+
collateralTokenSymbol: string;
|
|
79
|
+
debtTokenSymbol: string;
|
|
80
|
+
poolId?: string | undefined;
|
|
81
|
+
withdrawAmount?: string | undefined;
|
|
82
|
+
ekuboFee?: number | undefined;
|
|
83
|
+
ekuboTickSpacing?: number | undefined;
|
|
84
|
+
ekuboExtension?: string | undefined;
|
|
85
|
+
ekuboSlippage?: number | undefined;
|
|
86
|
+
}>;
|
|
87
|
+
export declare const depositBorrowSchema: z.ZodObject<{
|
|
88
|
+
collateralTokenSymbol: z.ZodString;
|
|
89
|
+
debtTokenSymbol: z.ZodString;
|
|
90
|
+
depositAmount: z.ZodString;
|
|
91
|
+
targetLTV: z.ZodString;
|
|
92
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
targetLTV: string;
|
|
95
|
+
depositAmount: string;
|
|
96
|
+
collateralTokenSymbol: string;
|
|
97
|
+
debtTokenSymbol: string;
|
|
98
|
+
poolId?: string | undefined;
|
|
99
|
+
}, {
|
|
100
|
+
targetLTV: string;
|
|
101
|
+
depositAmount: string;
|
|
102
|
+
collateralTokenSymbol: string;
|
|
103
|
+
debtTokenSymbol: string;
|
|
104
|
+
poolId?: string | undefined;
|
|
105
|
+
}>;
|
|
106
|
+
export declare const repayBorrowSchema: z.ZodObject<{
|
|
107
|
+
collateralTokenSymbol: z.ZodString;
|
|
108
|
+
debtTokenSymbol: z.ZodString;
|
|
109
|
+
repayAmount: z.ZodOptional<z.ZodString>;
|
|
110
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
111
|
+
}, "strip", z.ZodTypeAny, {
|
|
112
|
+
collateralTokenSymbol: string;
|
|
113
|
+
debtTokenSymbol: string;
|
|
114
|
+
poolId?: string | undefined;
|
|
115
|
+
repayAmount?: string | undefined;
|
|
116
|
+
}, {
|
|
117
|
+
collateralTokenSymbol: string;
|
|
118
|
+
debtTokenSymbol: string;
|
|
119
|
+
poolId?: string | undefined;
|
|
120
|
+
repayAmount?: string | undefined;
|
|
121
|
+
}>;
|
|
122
|
+
export declare const updateMultiplySchema: z.ZodObject<{
|
|
123
|
+
collateralTokenSymbol: z.ZodString;
|
|
124
|
+
debtTokenSymbol: z.ZodString;
|
|
125
|
+
targetLTV: z.ZodString;
|
|
126
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
127
|
+
ekuboFee: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
128
|
+
ekuboTickSpacing: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
129
|
+
ekuboExtension: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
130
|
+
ekuboSlippage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
131
|
+
}, "strip", z.ZodTypeAny, {
|
|
132
|
+
targetLTV: string;
|
|
133
|
+
collateralTokenSymbol: string;
|
|
134
|
+
debtTokenSymbol: string;
|
|
135
|
+
ekuboFee: number;
|
|
136
|
+
ekuboTickSpacing: number;
|
|
137
|
+
ekuboExtension: string;
|
|
138
|
+
ekuboSlippage: number;
|
|
139
|
+
poolId?: string | undefined;
|
|
140
|
+
}, {
|
|
141
|
+
targetLTV: string;
|
|
142
|
+
collateralTokenSymbol: string;
|
|
143
|
+
debtTokenSymbol: string;
|
|
144
|
+
poolId?: string | undefined;
|
|
145
|
+
ekuboFee?: number | undefined;
|
|
146
|
+
ekuboTickSpacing?: number | undefined;
|
|
147
|
+
ekuboExtension?: string | undefined;
|
|
148
|
+
ekuboSlippage?: number | undefined;
|
|
149
|
+
}>;
|
|
150
|
+
export declare const getSchema: z.ZodObject<{
|
|
151
|
+
onlyVerified: z.ZodDefault<z.ZodBoolean>;
|
|
152
|
+
onlyEnabledAssets: z.ZodDefault<z.ZodBoolean>;
|
|
153
|
+
poolId: z.ZodOptional<z.ZodString>;
|
|
154
|
+
poolName: z.ZodOptional<z.ZodString>;
|
|
155
|
+
}, "strip", z.ZodTypeAny, {
|
|
156
|
+
onlyVerified: boolean;
|
|
157
|
+
onlyEnabledAssets: boolean;
|
|
158
|
+
poolId?: string | undefined;
|
|
159
|
+
poolName?: string | undefined;
|
|
160
|
+
}, {
|
|
161
|
+
onlyVerified?: boolean | undefined;
|
|
162
|
+
onlyEnabledAssets?: boolean | undefined;
|
|
163
|
+
poolId?: string | undefined;
|
|
164
|
+
poolName?: string | undefined;
|
|
165
|
+
}>;
|
|
166
|
+
export type GetSchemaType = z.infer<typeof getSchema>;
|
|
167
|
+
export declare const getPositionsSchema: z.ZodObject<{
|
|
168
|
+
walletAddress: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, `0x${string}`, string>;
|
|
169
|
+
type: z.ZodOptional<z.ZodArray<z.ZodEnum<["earn", "borrow", "multiply"]>, "many">>;
|
|
170
|
+
maxHealthFactor: z.ZodOptional<z.ZodString>;
|
|
171
|
+
hasRebalancingEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
172
|
+
}, "strip", z.ZodTypeAny, {
|
|
173
|
+
walletAddress: `0x${string}`;
|
|
174
|
+
type?: ("earn" | "borrow" | "multiply")[] | undefined;
|
|
175
|
+
maxHealthFactor?: string | undefined;
|
|
176
|
+
hasRebalancingEnabled?: boolean | undefined;
|
|
177
|
+
}, {
|
|
178
|
+
walletAddress: string;
|
|
179
|
+
type?: ("earn" | "borrow" | "multiply")[] | undefined;
|
|
180
|
+
maxHealthFactor?: string | undefined;
|
|
181
|
+
hasRebalancingEnabled?: boolean | undefined;
|
|
182
|
+
}>;
|
|
183
|
+
export type GetPositionsSchemaType = z.infer<typeof getPositionsSchema>;
|
|
184
|
+
export declare const getTokensSchema: z.ZodObject<{
|
|
185
|
+
address: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, `0x${string}`, string>>;
|
|
186
|
+
symbol: z.ZodOptional<z.ZodString>;
|
|
187
|
+
}, "strip", z.ZodTypeAny, {
|
|
188
|
+
symbol?: string | undefined;
|
|
189
|
+
address?: `0x${string}` | undefined;
|
|
190
|
+
}, {
|
|
191
|
+
symbol?: string | undefined;
|
|
192
|
+
address?: string | undefined;
|
|
193
|
+
}>;
|
|
194
|
+
export type GetTokensSchemaType = z.infer<typeof getTokensSchema>;
|
package/build/schemas/index.js
CHANGED
|
@@ -1,13 +1,213 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { addressSchema } from '../interfaces/index.js';
|
|
2
3
|
export const depositEarnSchema = z.object({
|
|
3
4
|
depositTokenSymbol: z
|
|
4
5
|
.string()
|
|
5
6
|
.describe("Symbol of the token to deposit (e.g., 'ETH', 'USDC')"),
|
|
6
|
-
depositAmount: z
|
|
7
|
+
depositAmount: z
|
|
8
|
+
.string()
|
|
9
|
+
.describe('The amount to deposit in human decimal format (e.g., "1.5" for 1.5 tokens, "0.0001" for 0.0001 tokens)'),
|
|
10
|
+
poolId: z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
7
14
|
});
|
|
8
15
|
export const withdrawEarnSchema = z.object({
|
|
9
16
|
withdrawTokenSymbol: z
|
|
10
17
|
.string()
|
|
11
18
|
.describe("Symbol of the token to withdraw (e.g., 'ETH', 'USDC')"),
|
|
19
|
+
withdrawAmount: z
|
|
20
|
+
.string()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Optional amount to withdraw in human decimal format (e.g., "1.5" for 1.5 tokens). If "0" or not provided, withdraws all available tokens'),
|
|
23
|
+
poolId: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
27
|
+
});
|
|
28
|
+
export const depositMultiplySchema = z.object({
|
|
29
|
+
collateralTokenSymbol: z
|
|
30
|
+
.string()
|
|
31
|
+
.describe("Symbol of the collateral token to deposit (e.g., 'ETH', 'USDC')"),
|
|
32
|
+
debtTokenSymbol: z
|
|
33
|
+
.string()
|
|
34
|
+
.describe("Symbol of the debt token to borrow (e.g., 'ETH', 'USDC')"),
|
|
35
|
+
depositAmount: z
|
|
36
|
+
.string()
|
|
37
|
+
.describe('Amount of collateral to deposit in human decimal format (e.g., "1.5" for 1.5 tokens)'),
|
|
38
|
+
targetLTV: z
|
|
39
|
+
.string()
|
|
40
|
+
.describe('Target LTV (Loan-to-Value) ratio as a percentage (e.g., "75" for 75%). This is mandatory'),
|
|
41
|
+
poolId: z
|
|
42
|
+
.string()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
45
|
+
ekuboFee: z
|
|
46
|
+
.number()
|
|
47
|
+
.optional()
|
|
48
|
+
.default(0.05)
|
|
49
|
+
.describe('Optional Ekubo pool fee tier as a percentage (e.g., 0.05 for 0.05%, 0.3 for 0.3%, 1 for 1%, defaults to 0.05)'),
|
|
50
|
+
ekuboTickSpacing: z
|
|
51
|
+
.number()
|
|
52
|
+
.optional()
|
|
53
|
+
.default(0.1)
|
|
54
|
+
.describe('Optional Ekubo pool tick spacing as a percentage (e.g., 0.01 for 0.01%, 0.1 for 0.1%, 1 for 1%, defaults to 0.1)'),
|
|
55
|
+
ekuboExtension: z
|
|
56
|
+
.string()
|
|
57
|
+
.optional()
|
|
58
|
+
.default('0x0')
|
|
59
|
+
.describe('Optional Ekubo pool extension contract address (default: "0x0")'),
|
|
60
|
+
ekuboSlippage: z
|
|
61
|
+
.number()
|
|
62
|
+
.optional()
|
|
63
|
+
.default(50)
|
|
64
|
+
.describe('Optional slippage tolerance in basis points (e.g., 50 for 0.5%, 100 for 1%, defaults to 50 for 0.5%)'),
|
|
65
|
+
});
|
|
66
|
+
export const withdrawMultiplySchema = z.object({
|
|
67
|
+
collateralTokenSymbol: z
|
|
68
|
+
.string()
|
|
69
|
+
.describe("Symbol of the collateral token to withdraw (e.g., 'ETH', 'USDC')"),
|
|
70
|
+
debtTokenSymbol: z
|
|
71
|
+
.string()
|
|
72
|
+
.describe("Symbol of the debt token to repay (e.g., 'ETH', 'USDC')"),
|
|
73
|
+
withdrawAmount: z
|
|
74
|
+
.string()
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('Optional amount of collateral to withdraw in human decimal format (e.g., "1.5" for 1.5 tokens). If "0" or not provided, closes the entire position'),
|
|
77
|
+
poolId: z
|
|
78
|
+
.string()
|
|
79
|
+
.optional()
|
|
80
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
81
|
+
ekuboFee: z
|
|
82
|
+
.number()
|
|
83
|
+
.optional()
|
|
84
|
+
.default(0.05)
|
|
85
|
+
.describe('Optional Ekubo pool fee tier as a percentage (e.g., 0.05 for 0.05%, 0.3 for 0.3%, 1 for 1%, defaults to 0.05)'),
|
|
86
|
+
ekuboTickSpacing: z
|
|
87
|
+
.number()
|
|
88
|
+
.optional()
|
|
89
|
+
.default(0.1)
|
|
90
|
+
.describe('Optional Ekubo pool tick spacing as a percentage (e.g., 0.01 for 0.01%, 0.1 for 0.1%, 1 for 1%, defaults to 0.1)'),
|
|
91
|
+
ekuboExtension: z
|
|
92
|
+
.string()
|
|
93
|
+
.optional()
|
|
94
|
+
.default('0x0')
|
|
95
|
+
.describe('Optional Ekubo pool extension contract address (default: "0x0")'),
|
|
96
|
+
ekuboSlippage: z
|
|
97
|
+
.number()
|
|
98
|
+
.optional()
|
|
99
|
+
.default(50)
|
|
100
|
+
.describe('Optional slippage tolerance in basis points (e.g., 50 for 0.5%, 100 for 1%, defaults to 50 for 0.5%)'),
|
|
101
|
+
});
|
|
102
|
+
export const depositBorrowSchema = z.object({
|
|
103
|
+
collateralTokenSymbol: z
|
|
104
|
+
.string()
|
|
105
|
+
.describe("Symbol of the collateral token to deposit (e.g., 'ETH', 'USDC')"),
|
|
106
|
+
debtTokenSymbol: z
|
|
107
|
+
.string()
|
|
108
|
+
.describe("Symbol of the debt token to borrow (e.g., 'ETH', 'USDC')"),
|
|
109
|
+
depositAmount: z
|
|
110
|
+
.string()
|
|
111
|
+
.describe('Amount of collateral to deposit in human decimal format (e.g., "1.5" for 1.5 tokens)'),
|
|
112
|
+
targetLTV: z
|
|
113
|
+
.string()
|
|
114
|
+
.describe('Target LTV (Loan-to-Value) ratio as a percentage (e.g., "75" for 75%). This is mandatory'),
|
|
115
|
+
poolId: z
|
|
116
|
+
.string()
|
|
117
|
+
.optional()
|
|
118
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
119
|
+
});
|
|
120
|
+
export const repayBorrowSchema = z.object({
|
|
121
|
+
collateralTokenSymbol: z
|
|
122
|
+
.string()
|
|
123
|
+
.describe("Symbol of the collateral token (e.g., 'ETH', 'USDC')"),
|
|
124
|
+
debtTokenSymbol: z
|
|
125
|
+
.string()
|
|
126
|
+
.describe("Symbol of the debt token to repay (e.g., 'ETH', 'USDC')"),
|
|
127
|
+
repayAmount: z
|
|
128
|
+
.string()
|
|
129
|
+
.optional()
|
|
130
|
+
.describe('Optional amount of debt to repay in human decimal format (e.g., "1.5" for 1.5 tokens). If not provided, repays all debt'),
|
|
131
|
+
poolId: z
|
|
132
|
+
.string()
|
|
133
|
+
.optional()
|
|
134
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
135
|
+
});
|
|
136
|
+
export const updateMultiplySchema = z.object({
|
|
137
|
+
collateralTokenSymbol: z
|
|
138
|
+
.string()
|
|
139
|
+
.describe("Symbol of the collateral token in the position (e.g., 'ETH', 'USDC')"),
|
|
140
|
+
debtTokenSymbol: z
|
|
141
|
+
.string()
|
|
142
|
+
.describe("Symbol of the debt token in the position (e.g., 'ETH', 'USDC')"),
|
|
143
|
+
targetLTV: z
|
|
144
|
+
.string()
|
|
145
|
+
.describe('Target LTV (Loan-to-Value) ratio as a percentage (e.g., "75" for 75%). This is mandatory and will update the position to this LTV'),
|
|
146
|
+
poolId: z
|
|
147
|
+
.string()
|
|
148
|
+
.optional()
|
|
149
|
+
.describe('Optional pool ID. If not provided, GENESIS_POOLID will be used'),
|
|
150
|
+
ekuboFee: z
|
|
151
|
+
.number()
|
|
152
|
+
.optional()
|
|
153
|
+
.default(0.05)
|
|
154
|
+
.describe('Optional Ekubo pool fee tier as a percentage (e.g., 0.05 for 0.05%, 0.3 for 0.3%, 1 for 1%, defaults to 0.05)'),
|
|
155
|
+
ekuboTickSpacing: z
|
|
156
|
+
.number()
|
|
157
|
+
.optional()
|
|
158
|
+
.default(0.1)
|
|
159
|
+
.describe('Optional Ekubo pool tick spacing as a percentage (e.g., 0.01 for 0.01%, 0.1 for 0.1%, 1 for 1%, defaults to 0.1)'),
|
|
160
|
+
ekuboExtension: z
|
|
161
|
+
.string()
|
|
162
|
+
.optional()
|
|
163
|
+
.default('0x0')
|
|
164
|
+
.describe('Optional Ekubo pool extension contract address (default: "0x0")'),
|
|
165
|
+
ekuboSlippage: z
|
|
166
|
+
.number()
|
|
167
|
+
.optional()
|
|
168
|
+
.default(50)
|
|
169
|
+
.describe('Optional slippage tolerance in basis points (e.g., 50 for 0.5%, 100 for 1%, defaults to 50 for 0.5%)'),
|
|
170
|
+
});
|
|
171
|
+
export const getSchema = z.object({
|
|
172
|
+
onlyVerified: z
|
|
173
|
+
.boolean()
|
|
174
|
+
.default(true)
|
|
175
|
+
.describe('Filter to only show verified pools'),
|
|
176
|
+
onlyEnabledAssets: z
|
|
177
|
+
.boolean()
|
|
178
|
+
.default(true)
|
|
179
|
+
.describe('Filter to only show pools with enabled assets'),
|
|
180
|
+
poolId: z
|
|
181
|
+
.string()
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('Optional pool ID to fetch a specific pool'),
|
|
184
|
+
poolName: z
|
|
185
|
+
.string()
|
|
186
|
+
.optional()
|
|
187
|
+
.describe('Optional pool name to filter pools by name'),
|
|
188
|
+
});
|
|
189
|
+
export const getPositionsSchema = z.object({
|
|
190
|
+
walletAddress: addressSchema.describe('Wallet address to fetch positions for'),
|
|
191
|
+
type: z
|
|
192
|
+
.array(z.enum(['earn', 'borrow', 'multiply']))
|
|
193
|
+
.optional()
|
|
194
|
+
.describe('Optional array of position types to filter (earn, borrow, multiply)'),
|
|
195
|
+
maxHealthFactor: z
|
|
196
|
+
.string()
|
|
197
|
+
.optional()
|
|
198
|
+
.describe('Optional filter to return positions with health factor less than or equal to this value'),
|
|
199
|
+
hasRebalancingEnabled: z
|
|
200
|
+
.boolean()
|
|
201
|
+
.optional()
|
|
202
|
+
.describe('Optional filter to return positions that have rebalancing enabled or not'),
|
|
203
|
+
});
|
|
204
|
+
export const getTokensSchema = z.object({
|
|
205
|
+
address: addressSchema
|
|
206
|
+
.optional()
|
|
207
|
+
.describe('Optional token address to check if a specific token is supported'),
|
|
208
|
+
symbol: z
|
|
209
|
+
.string()
|
|
210
|
+
.optional()
|
|
211
|
+
.describe("Optional token symbol to check if a specific token is supported (e.g., 'ETH', 'USDC')"),
|
|
12
212
|
});
|
|
13
213
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { VESU_API_URL } from '../../lib/constants/index.js';
|
|
3
|
+
import { poolParser } from '../../interfaces/index.js';
|
|
4
|
+
export const getPools = async (env, params) => {
|
|
5
|
+
try {
|
|
6
|
+
let pools;
|
|
7
|
+
if (params.poolId) {
|
|
8
|
+
const response = await fetch(`${VESU_API_URL}/pools/${params.poolId}?onlyEnabledAssets=${params.onlyEnabledAssets}`);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
11
|
+
}
|
|
12
|
+
const data = await response.json();
|
|
13
|
+
const parsedPool = z
|
|
14
|
+
.object({ data: poolParser })
|
|
15
|
+
.transform(({ data }) => data)
|
|
16
|
+
.parse(data);
|
|
17
|
+
pools = [
|
|
18
|
+
{
|
|
19
|
+
...parsedPool,
|
|
20
|
+
assets: parsedPool.assets || [],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const response = await fetch(`${VESU_API_URL}/pools?onlyVerified=${params.onlyVerified}&onlyEnabledAssets=${params.onlyEnabledAssets}`);
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
28
|
+
}
|
|
29
|
+
const data = await response.json();
|
|
30
|
+
const parsedPools = z
|
|
31
|
+
.object({ data: z.array(poolParser) })
|
|
32
|
+
.transform(({ data }) => data)
|
|
33
|
+
.parse(data);
|
|
34
|
+
pools = parsedPools.map((pool) => ({
|
|
35
|
+
...pool,
|
|
36
|
+
assets: pool.assets || [],
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
if (params.poolName) {
|
|
40
|
+
pools = pools.filter((pool) => pool.name.toLowerCase() === params.poolName.toLowerCase());
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
status: 'success',
|
|
44
|
+
data: pools,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('Error fetching pools:', error);
|
|
49
|
+
return {
|
|
50
|
+
status: 'failure',
|
|
51
|
+
error: error instanceof Error
|
|
52
|
+
? `Failed to fetch pools: ${error.message}`
|
|
53
|
+
: 'Failed to fetch pools: Unknown error',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=getPools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPools.js","sourceRoot":"","sources":["../../../src/tools/read/getPools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAS,MAAM,2BAA2B,CAAC;AAS9D,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,GAAgB,EAChB,MAAqB,EACA,EAAE;IACvB,IAAI,CAAC;QACH,IAAI,KAAc,CAAC;QAGnB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,YAAY,UAAU,MAAM,CAAC,MAAM,sBAAsB,MAAM,CAAC,iBAAiB,EAAE,CACvF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAGnC,MAAM,UAAU,GAAG,CAAC;iBACjB,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC5B,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;iBAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;YAEf,KAAK,GAAG;gBACN;oBACE,GAAG,UAAU;oBACb,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,EAAE;iBAChC;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YAEN,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,YAAY,uBAAuB,MAAM,CAAC,YAAY,sBAAsB,MAAM,CAAC,iBAAiB,EAAE,CAC1G,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAGnC,MAAM,WAAW,GAAG,CAAC;iBAClB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;iBACrC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;iBAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;YAGf,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjC,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;aAC1B,CAAC,CAAC,CAAC;QACN,CAAC;QAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,GAAG,KAAK,CAAC,MAAM,CAClB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,QAAS,CAAC,WAAW,EAAE,CACrE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EACH,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE;gBAC3C,CAAC,CAAC,sCAAsC;SAC7C,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { VESU_API_URL } from '../../lib/constants/index.js';
|
|
3
|
+
import { positionParser } from '../../interfaces/index.js';
|
|
4
|
+
export const getPositions = async (env, params) => {
|
|
5
|
+
try {
|
|
6
|
+
const queryParams = new URLSearchParams();
|
|
7
|
+
queryParams.append('walletAddress', params.walletAddress);
|
|
8
|
+
if (params.type && params.type.length > 0) {
|
|
9
|
+
params.type.forEach((t) => {
|
|
10
|
+
queryParams.append('type', t);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
if (params.maxHealthFactor) {
|
|
14
|
+
queryParams.append('maxHealthFactor', params.maxHealthFactor);
|
|
15
|
+
}
|
|
16
|
+
if (params.hasRebalancingEnabled !== undefined) {
|
|
17
|
+
queryParams.append('hasRebalancingEnabled', params.hasRebalancingEnabled.toString());
|
|
18
|
+
}
|
|
19
|
+
const response = await fetch(`${VESU_API_URL}/positions?${queryParams.toString()}`);
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
22
|
+
}
|
|
23
|
+
const data = await response.json();
|
|
24
|
+
const parsedPositions = z
|
|
25
|
+
.object({ data: z.array(positionParser) })
|
|
26
|
+
.transform(({ data }) => data)
|
|
27
|
+
.parse(data);
|
|
28
|
+
return {
|
|
29
|
+
status: 'success',
|
|
30
|
+
data: parsedPositions,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error('Error fetching positions:', error);
|
|
35
|
+
return {
|
|
36
|
+
status: 'failure',
|
|
37
|
+
error: error instanceof Error
|
|
38
|
+
? `Failed to fetch positions: ${error.message}`
|
|
39
|
+
: 'Failed to fetch positions: Unknown error',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=getPositions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPositions.js","sourceRoot":"","sources":["../../../src/tools/read/getPositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAa,MAAM,2BAA2B,CAAC;AAQtE,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,GAAgB,EAChB,MAA8B,EACT,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,MAAM,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC/C,WAAW,CAAC,MAAM,CAChB,uBAAuB,EACvB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CACxC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,YAAY,cAAc,WAAW,CAAC,QAAQ,EAAE,EAAE,CACtD,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAGnC,MAAM,eAAe,GAAG,CAAC;aACtB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;aACzC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;aAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;QAEf,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EACH,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE;gBAC/C,CAAC,CAAC,0CAA0C;SACjD,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|