@kasarlabs/vesu-mcp 0.1.3 → 0.1.5
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 +564 -17
- 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 +71 -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 +58 -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 +10 -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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kasarlabs/vesu-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -16,17 +16,22 @@
|
|
|
16
16
|
"build"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@
|
|
19
|
+
"@ekubo/starknet-sdk": "^0.0.7",
|
|
20
|
+
"@kasarlabs/ask-starknet-core": "0.1.4",
|
|
20
21
|
"@langchain/core": "^0.3.42",
|
|
21
|
-
"@modelcontextprotocol/sdk": "
|
|
22
|
+
"@modelcontextprotocol/sdk": "1.22.0",
|
|
22
23
|
"dotenv": "^16.4.7",
|
|
23
24
|
"ethers": "^6.13.5",
|
|
24
|
-
"starknet": "
|
|
25
|
+
"starknet": "~8.9.0",
|
|
25
26
|
"winston": "^3.17.0",
|
|
26
27
|
"zod": "^3.24.2"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
30
|
+
"@jest/globals": "^29.7.0",
|
|
31
|
+
"@types/jest": "^29.5.12",
|
|
29
32
|
"@types/node": "^22.13.10",
|
|
33
|
+
"jest": "^29.7.0",
|
|
34
|
+
"ts-jest": "^29.1.2",
|
|
30
35
|
"typescript": "^5.8.2"
|
|
31
36
|
},
|
|
32
37
|
"keywords": [
|
|
@@ -40,5 +45,5 @@
|
|
|
40
45
|
"publishConfig": {
|
|
41
46
|
"access": "public"
|
|
42
47
|
},
|
|
43
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "0799e2b085e950e5d102822d71a6b122290e8c38"
|
|
44
49
|
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
export declare const erc20Abi: readonly [{
|
|
2
|
-
readonly type: "function";
|
|
3
|
-
readonly name: "name";
|
|
4
|
-
readonly inputs: readonly [];
|
|
5
|
-
readonly outputs: readonly [{
|
|
6
|
-
readonly type: "core::felt252";
|
|
7
|
-
}];
|
|
8
|
-
readonly state_mutability: "view";
|
|
9
|
-
}, {
|
|
10
|
-
readonly type: "function";
|
|
11
|
-
readonly name: "symbol";
|
|
12
|
-
readonly inputs: readonly [];
|
|
13
|
-
readonly outputs: readonly [{
|
|
14
|
-
readonly type: "core::felt252";
|
|
15
|
-
}];
|
|
16
|
-
readonly state_mutability: "view";
|
|
17
|
-
}, {
|
|
18
|
-
readonly type: "function";
|
|
19
|
-
readonly name: "decimals";
|
|
20
|
-
readonly inputs: readonly [];
|
|
21
|
-
readonly outputs: readonly [{
|
|
22
|
-
readonly type: "core::integer::u8";
|
|
23
|
-
}];
|
|
24
|
-
readonly state_mutability: "view";
|
|
25
|
-
}, {
|
|
26
|
-
readonly type: "function";
|
|
27
|
-
readonly name: "balance_of";
|
|
28
|
-
readonly inputs: readonly [{
|
|
29
|
-
readonly name: "account";
|
|
30
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
31
|
-
}];
|
|
32
|
-
readonly outputs: readonly [{
|
|
33
|
-
readonly type: "core::integer::u256";
|
|
34
|
-
}];
|
|
35
|
-
readonly state_mutability: "view";
|
|
36
|
-
}, {
|
|
37
|
-
readonly type: "function";
|
|
38
|
-
readonly name: "balanceOf";
|
|
39
|
-
readonly inputs: readonly [{
|
|
40
|
-
readonly name: "account";
|
|
41
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
42
|
-
}];
|
|
43
|
-
readonly outputs: readonly [{
|
|
44
|
-
readonly type: "core::integer::u256";
|
|
45
|
-
}];
|
|
46
|
-
readonly state_mutability: "view";
|
|
47
|
-
}, {
|
|
48
|
-
readonly type: "function";
|
|
49
|
-
readonly name: "allowance";
|
|
50
|
-
readonly inputs: readonly [{
|
|
51
|
-
readonly name: "owner";
|
|
52
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
53
|
-
}, {
|
|
54
|
-
readonly name: "spender";
|
|
55
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
56
|
-
}];
|
|
57
|
-
readonly outputs: readonly [{
|
|
58
|
-
readonly type: "core::integer::u256";
|
|
59
|
-
}];
|
|
60
|
-
readonly state_mutability: "view";
|
|
61
|
-
}, {
|
|
62
|
-
readonly type: "function";
|
|
63
|
-
readonly name: "approve";
|
|
64
|
-
readonly inputs: readonly [{
|
|
65
|
-
readonly name: "spender";
|
|
66
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
67
|
-
}, {
|
|
68
|
-
readonly name: "amount";
|
|
69
|
-
readonly type: "core::integer::u256";
|
|
70
|
-
}];
|
|
71
|
-
readonly outputs: readonly [{
|
|
72
|
-
readonly type: "core::bool";
|
|
73
|
-
}];
|
|
74
|
-
readonly state_mutability: "external";
|
|
75
|
-
}, {
|
|
76
|
-
readonly type: "function";
|
|
77
|
-
readonly name: "transfer";
|
|
78
|
-
readonly inputs: readonly [{
|
|
79
|
-
readonly name: "recipient";
|
|
80
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
81
|
-
}, {
|
|
82
|
-
readonly name: "amount";
|
|
83
|
-
readonly type: "core::integer::u256";
|
|
84
|
-
}];
|
|
85
|
-
readonly outputs: readonly [{
|
|
86
|
-
readonly type: "core::bool";
|
|
87
|
-
}];
|
|
88
|
-
readonly state_mutability: "external";
|
|
89
|
-
}];
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
export const erc20Abi = [
|
|
2
|
-
{
|
|
3
|
-
type: 'function',
|
|
4
|
-
name: 'name',
|
|
5
|
-
inputs: [],
|
|
6
|
-
outputs: [
|
|
7
|
-
{
|
|
8
|
-
type: 'core::felt252',
|
|
9
|
-
},
|
|
10
|
-
],
|
|
11
|
-
state_mutability: 'view',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
type: 'function',
|
|
15
|
-
name: 'symbol',
|
|
16
|
-
inputs: [],
|
|
17
|
-
outputs: [
|
|
18
|
-
{
|
|
19
|
-
type: 'core::felt252',
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
state_mutability: 'view',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
type: 'function',
|
|
26
|
-
name: 'decimals',
|
|
27
|
-
inputs: [],
|
|
28
|
-
outputs: [
|
|
29
|
-
{
|
|
30
|
-
type: 'core::integer::u8',
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
state_mutability: 'view',
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
type: 'function',
|
|
37
|
-
name: 'balance_of',
|
|
38
|
-
inputs: [
|
|
39
|
-
{
|
|
40
|
-
name: 'account',
|
|
41
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
outputs: [
|
|
45
|
-
{
|
|
46
|
-
type: 'core::integer::u256',
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
state_mutability: 'view',
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
type: 'function',
|
|
53
|
-
name: 'balanceOf',
|
|
54
|
-
inputs: [
|
|
55
|
-
{
|
|
56
|
-
name: 'account',
|
|
57
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
outputs: [
|
|
61
|
-
{
|
|
62
|
-
type: 'core::integer::u256',
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
state_mutability: 'view',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
type: 'function',
|
|
69
|
-
name: 'allowance',
|
|
70
|
-
inputs: [
|
|
71
|
-
{
|
|
72
|
-
name: 'owner',
|
|
73
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'spender',
|
|
77
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
outputs: [
|
|
81
|
-
{
|
|
82
|
-
type: 'core::integer::u256',
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
state_mutability: 'view',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'function',
|
|
89
|
-
name: 'approve',
|
|
90
|
-
inputs: [
|
|
91
|
-
{
|
|
92
|
-
name: 'spender',
|
|
93
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: 'amount',
|
|
97
|
-
type: 'core::integer::u256',
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
outputs: [
|
|
101
|
-
{
|
|
102
|
-
type: 'core::bool',
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
state_mutability: 'external',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
type: 'function',
|
|
109
|
-
name: 'transfer',
|
|
110
|
-
inputs: [
|
|
111
|
-
{
|
|
112
|
-
name: 'recipient',
|
|
113
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
name: 'amount',
|
|
117
|
-
type: 'core::integer::u256',
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
outputs: [
|
|
121
|
-
{
|
|
122
|
-
type: 'core::bool',
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
state_mutability: 'external',
|
|
126
|
-
},
|
|
127
|
-
];
|
|
128
|
-
//# sourceMappingURL=erc20Abi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erc20Abi.js","sourceRoot":"","sources":["../../../src/lib/abis/erc20Abi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IAEtB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,eAAe;aACtB;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,eAAe;aACtB;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,mBAAmB;aAC1B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,mDAAmD;aAC1D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,YAAY;aACnB;SACF;QACD,gBAAgB,EAAE,UAAU;KAC7B;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,mDAAmD;aAC1D;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,YAAY;aACnB;SACF;QACD,gBAAgB,EAAE,UAAU;KAC7B;CACO,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Call } from 'starknet';
|
|
2
|
-
import { Address, DepositParams, DepositResult, IBaseToken, IPool, ITokenValue } from '../interfaces/index.js';
|
|
3
|
-
import { Hex } from '../lib/utils/num.js';
|
|
4
|
-
import { onchainWrite } from '@kasarlabs/ask-starknet-core';
|
|
5
|
-
export declare class DepositEarnService {
|
|
6
|
-
private env;
|
|
7
|
-
private walletAddress;
|
|
8
|
-
constructor(env: onchainWrite, walletAddress: string);
|
|
9
|
-
getTokenPrice(token: IBaseToken, poolId: string, poolExtension: Hex): Promise<ITokenValue | undefined>;
|
|
10
|
-
private getPoolAssetsPriceAndRiskMdx;
|
|
11
|
-
getPool(poolId: string): Promise<IPool>;
|
|
12
|
-
approveVTokenCalls(assetAddress: Address, vTokenAddress: Address, amount: bigint): Promise<Call>;
|
|
13
|
-
depositEarnTransaction(params: DepositParams, env: onchainWrite): Promise<DepositResult>;
|
|
14
|
-
}
|
|
15
|
-
export declare const createDepositEarnService: (env: onchainWrite, walletAddress?: string) => DepositEarnService;
|
|
16
|
-
export declare const depositEarnPosition: (env: onchainWrite, params: DepositParams) => Promise<DepositResult | {
|
|
17
|
-
status: string;
|
|
18
|
-
error: string;
|
|
19
|
-
}>;
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { Account } from 'starknet';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { parseUnits } from 'ethers';
|
|
4
|
-
import { poolParser, } from '../interfaces/index.js';
|
|
5
|
-
import { DEFAULT_DECIMALS, GENESIS_POOLID, VESU_API_URL, } from '../lib/constants/index.js';
|
|
6
|
-
import { toBN, toU256 } from '../lib/utils/num.js';
|
|
7
|
-
import { getErc20Contract, getExtensionContract, getVTokenContract, } from '../lib/utils/contracts.js';
|
|
8
|
-
export class DepositEarnService {
|
|
9
|
-
constructor(env, walletAddress) {
|
|
10
|
-
this.env = env;
|
|
11
|
-
this.walletAddress = walletAddress;
|
|
12
|
-
}
|
|
13
|
-
async getTokenPrice(token, poolId, poolExtension) {
|
|
14
|
-
const contract = getExtensionContract(poolExtension);
|
|
15
|
-
try {
|
|
16
|
-
const res = await contract.price(poolId, token.address);
|
|
17
|
-
return res.is_valid && res.value
|
|
18
|
-
? { value: toBN(res.value), decimals: DEFAULT_DECIMALS }
|
|
19
|
-
: undefined;
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
async getPoolAssetsPriceAndRiskMdx(poolId, poolExtensionContractAddress, poolAssets) {
|
|
26
|
-
return await Promise.all(poolAssets.map(async (asset) => {
|
|
27
|
-
const usdPrice = await this.getTokenPrice(asset, poolId, poolExtensionContractAddress);
|
|
28
|
-
return {
|
|
29
|
-
...asset,
|
|
30
|
-
risk: null,
|
|
31
|
-
usdPrice,
|
|
32
|
-
};
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
async getPool(poolId) {
|
|
36
|
-
const data = await fetch(`${VESU_API_URL}/pools/${poolId}`).then((res) => res.json());
|
|
37
|
-
const pool = z
|
|
38
|
-
.object({ data: poolParser })
|
|
39
|
-
.transform(({ data }) => data)
|
|
40
|
-
.parse(data);
|
|
41
|
-
const assets = await this.getPoolAssetsPriceAndRiskMdx(pool.id, pool.extensionContractAddress, pool.assets);
|
|
42
|
-
return { ...pool, assets };
|
|
43
|
-
}
|
|
44
|
-
async approveVTokenCalls(assetAddress, vTokenAddress, amount) {
|
|
45
|
-
const tokenContract = getErc20Contract(assetAddress);
|
|
46
|
-
const approveCall = tokenContract.populateTransaction.approve(vTokenAddress, amount);
|
|
47
|
-
return approveCall;
|
|
48
|
-
}
|
|
49
|
-
async depositEarnTransaction(params, env) {
|
|
50
|
-
try {
|
|
51
|
-
const account = new Account(this.env.provider, this.walletAddress, this.env.account.signer);
|
|
52
|
-
const pool = await this.getPool(GENESIS_POOLID);
|
|
53
|
-
const collateralPoolAsset = pool.assets.find((a) => a.symbol.toLocaleUpperCase() ===
|
|
54
|
-
params.depositTokenSymbol.toLocaleUpperCase());
|
|
55
|
-
if (!collateralPoolAsset) {
|
|
56
|
-
throw new Error('Collateral asset not found in pool');
|
|
57
|
-
}
|
|
58
|
-
const collateralAmount = parseUnits(params.depositAmount, collateralPoolAsset.decimals);
|
|
59
|
-
const vtokenContract = getVTokenContract(collateralPoolAsset.vToken.address);
|
|
60
|
-
const vTokenApproveCall = await this.approveVTokenCalls(collateralPoolAsset.address, collateralPoolAsset.vToken.address, collateralAmount);
|
|
61
|
-
const depositVTokenCall = await vtokenContract.populateTransaction.deposit(toU256(collateralAmount), account.address);
|
|
62
|
-
const provider = env.provider;
|
|
63
|
-
const tx = await account.execute([
|
|
64
|
-
{
|
|
65
|
-
contractAddress: vTokenApproveCall.contractAddress,
|
|
66
|
-
entrypoint: vTokenApproveCall.entrypoint,
|
|
67
|
-
calldata: vTokenApproveCall.calldata,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
contractAddress: depositVTokenCall.contractAddress,
|
|
71
|
-
entrypoint: depositVTokenCall.entrypoint,
|
|
72
|
-
calldata: depositVTokenCall.calldata,
|
|
73
|
-
},
|
|
74
|
-
]);
|
|
75
|
-
await provider.waitForTransaction(tx.transaction_hash);
|
|
76
|
-
const transferResult = {
|
|
77
|
-
status: 'success',
|
|
78
|
-
amount: params.depositAmount,
|
|
79
|
-
symbol: params.depositTokenSymbol,
|
|
80
|
-
recipients_address: account.address,
|
|
81
|
-
transaction_hash: tx.transaction_hash,
|
|
82
|
-
};
|
|
83
|
-
return transferResult;
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
if (error instanceof Error) {
|
|
87
|
-
}
|
|
88
|
-
return {
|
|
89
|
-
status: 'failure',
|
|
90
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
export const createDepositEarnService = (env, walletAddress) => {
|
|
96
|
-
if (!walletAddress) {
|
|
97
|
-
throw new Error('Wallet address not configured');
|
|
98
|
-
}
|
|
99
|
-
return new DepositEarnService(env, walletAddress);
|
|
100
|
-
};
|
|
101
|
-
export const depositEarnPosition = async (env, params) => {
|
|
102
|
-
const accountAddress = env.account?.address;
|
|
103
|
-
try {
|
|
104
|
-
const depositEarnService = createDepositEarnService(env, accountAddress);
|
|
105
|
-
const result = await depositEarnService.depositEarnTransaction(params, env);
|
|
106
|
-
return result;
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
if (error instanceof Error) {
|
|
110
|
-
}
|
|
111
|
-
return {
|
|
112
|
-
status: 'failure',
|
|
113
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=depositService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"depositService.js","sourceRoot":"","sources":["../../src/tools/depositService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAQL,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAO,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAOnC,MAAM,OAAO,kBAAkB;IAM7B,YACU,GAAiB,EACjB,aAAqB;QADrB,QAAG,GAAH,GAAG,CAAc;QACjB,kBAAa,GAAb,aAAa,CAAQ;IAC5B,CAAC;IASG,KAAK,CAAC,aAAa,CACxB,KAAiB,EACjB,MAAc,EACd,aAAkB;QAElB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxD,OAAO,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK;gBAC9B,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE;gBACxD,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAEb,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAUO,KAAK,CAAC,4BAA4B,CACxC,MAAmB,EACnB,4BAA+D,EAC/D,UAAwB;QAExB,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CACvC,KAAK,EACL,MAAM,EACN,4BAA4B,CAC7B,CAAC;YAEF,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,IAAI;gBACV,QAAQ;aACT,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAOM,KAAK,CAAC,OAAO,CAAC,MAAc;QACjC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,UAAU,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACvE,GAAG,CAAC,IAAI,EAAE,CACX,CAAC;QACF,MAAM,IAAI,GAAG,CAAC;aACX,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;aAC5B,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;aAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,4BAA4B,CACpD,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IASD,KAAK,CAAC,kBAAkB,CACtB,YAAqB,EACrB,aAAsB,EACtB,MAAc;QAEd,MAAM,aAAa,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAErD,MAAM,WAAW,GAAG,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAC3D,aAAa,EACb,MAAM,CACP,CAAC;QAEF,OAAO,WAAW,CAAC;IACrB,CAAC;IAQD,KAAK,CAAC,sBAAsB,CAC1B,MAAqB,EACrB,GAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,IAAI,CAAC,GAAG,CAAC,QAAQ,EACjB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAEhD,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBAC5B,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAChD,CAAC;YAEF,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,gBAAgB,GAAG,UAAU,CACjC,MAAM,CAAC,aAAa,EAEpB,mBAAmB,CAAC,QAAQ,CAC7B,CAAC;YAEF,MAAM,cAAc,GAAG,iBAAiB,CACtC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CACnC,CAAC;YAEF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACrD,mBAAmB,CAAC,OAAO,EAC3B,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAClC,gBAAgB,CACjB,CAAC;YAEF,MAAM,iBAAiB,GACrB,MAAM,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAC9C,MAAM,CAAC,gBAAgB,CAAC,EACxB,OAAO,CAAC,OAAO,CAChB,CAAC;YAEJ,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAE9B,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBAC/B;oBACE,eAAe,EAAE,iBAAiB,CAAC,eAAe;oBAClD,UAAU,EAAE,iBAAiB,CAAC,UAAU;oBACxC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;iBACrC;gBACD;oBACE,eAAe,EAAE,iBAAiB,CAAC,eAAe;oBAClD,UAAU,EAAE,iBAAiB,CAAC,UAAU;oBACxC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;iBACrC;aACF,CAAC,CAAC;YAEH,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;YAEvD,MAAM,cAAc,GAAkB;gBACpC,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM,CAAC,aAAa;gBAC5B,MAAM,EAAE,MAAM,CAAC,kBAAkB;gBACjC,kBAAkB,EAAE,OAAO,CAAC,OAAO;gBACnC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;aACtC,CAAC;YAEF,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAI7B,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AASD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,GAAiB,EACjB,aAAsB,EACF,EAAE;IACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,GAAiB,EACjB,MAAqB,EACrB,EAAE;IACF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAI7B,CAAC;QACD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Call } from 'starknet';
|
|
2
|
-
import { Address, WithdrawParams, IBaseToken, IPool, ITokenValue, WithdrawResult } from '../interfaces/index.js';
|
|
3
|
-
import { Hex } from '../lib/utils/num.js';
|
|
4
|
-
import { onchainWrite } from '@kasarlabs/ask-starknet-core';
|
|
5
|
-
export declare class WithdrawEarnService {
|
|
6
|
-
private env;
|
|
7
|
-
private walletAddress;
|
|
8
|
-
constructor(env: onchainWrite, walletAddress: string);
|
|
9
|
-
getTokenPrice(token: IBaseToken, poolId: string, poolExtension: Hex): Promise<ITokenValue | undefined>;
|
|
10
|
-
private getPoolAssetsPriceAndRiskMdx;
|
|
11
|
-
getPool(poolId: string): Promise<IPool>;
|
|
12
|
-
getTokenBalance(baseToken: IBaseToken, walletAddress: Hex): Promise<bigint>;
|
|
13
|
-
approveVTokenCalls(assetAddress: Address, vTokenAddress: Address, amount: bigint): Promise<Call>;
|
|
14
|
-
withdrawEarnTransaction(params: WithdrawParams, env: onchainWrite): Promise<WithdrawResult>;
|
|
15
|
-
}
|
|
16
|
-
export declare const withdrawService: (env: onchainWrite, walletAddress?: string) => WithdrawEarnService;
|
|
17
|
-
export declare const withdrawEarnPosition: (env: onchainWrite, params: WithdrawParams) => Promise<WithdrawResult | {
|
|
18
|
-
status: string;
|
|
19
|
-
error: string;
|
|
20
|
-
}>;
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Account } from 'starknet';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { poolParser, } from '../interfaces/index.js';
|
|
4
|
-
import { DEFAULT_DECIMALS, GENESIS_POOLID, VESU_API_URL, } from '../lib/constants/index.js';
|
|
5
|
-
import { toBN, toU256 } from '../lib/utils/num.js';
|
|
6
|
-
import { getErc20Contract, getExtensionContract, getVTokenContract, } from '../lib/utils/contracts.js';
|
|
7
|
-
export class WithdrawEarnService {
|
|
8
|
-
constructor(env, walletAddress) {
|
|
9
|
-
this.env = env;
|
|
10
|
-
this.walletAddress = walletAddress;
|
|
11
|
-
}
|
|
12
|
-
async getTokenPrice(token, poolId, poolExtension) {
|
|
13
|
-
const contract = getExtensionContract(poolExtension);
|
|
14
|
-
try {
|
|
15
|
-
const res = await contract.price(poolId, token.address);
|
|
16
|
-
return res.is_valid && res.value
|
|
17
|
-
? { value: toBN(res.value), decimals: DEFAULT_DECIMALS }
|
|
18
|
-
: undefined;
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
async getPoolAssetsPriceAndRiskMdx(poolId, poolExtensionContractAddress, poolAssets) {
|
|
25
|
-
return await Promise.all(poolAssets.map(async (asset) => {
|
|
26
|
-
const usdPrice = await this.getTokenPrice(asset, poolId, poolExtensionContractAddress);
|
|
27
|
-
return {
|
|
28
|
-
...asset,
|
|
29
|
-
risk: null,
|
|
30
|
-
usdPrice,
|
|
31
|
-
};
|
|
32
|
-
}));
|
|
33
|
-
}
|
|
34
|
-
async getPool(poolId) {
|
|
35
|
-
const data = await fetch(`${VESU_API_URL}/pools/${poolId}`).then((res) => res.json());
|
|
36
|
-
const pool = z
|
|
37
|
-
.object({ data: poolParser })
|
|
38
|
-
.transform(({ data }) => data)
|
|
39
|
-
.parse(data);
|
|
40
|
-
const assets = await this.getPoolAssetsPriceAndRiskMdx(pool.id, pool.extensionContractAddress, pool.assets);
|
|
41
|
-
return { ...pool, assets };
|
|
42
|
-
}
|
|
43
|
-
async getTokenBalance(baseToken, walletAddress) {
|
|
44
|
-
const tokenContract = getErc20Contract(baseToken.address);
|
|
45
|
-
return await tokenContract
|
|
46
|
-
.balanceOf(walletAddress)
|
|
47
|
-
.then(toBN)
|
|
48
|
-
.catch(() => {
|
|
49
|
-
console.error(new Error(`Failed to get balance of ${baseToken.address}`));
|
|
50
|
-
return 0n;
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
async approveVTokenCalls(assetAddress, vTokenAddress, amount) {
|
|
54
|
-
const tokenContract = getErc20Contract(assetAddress);
|
|
55
|
-
const approveCall = tokenContract.populateTransaction.approve(vTokenAddress, amount);
|
|
56
|
-
return approveCall;
|
|
57
|
-
}
|
|
58
|
-
async withdrawEarnTransaction(params, env) {
|
|
59
|
-
try {
|
|
60
|
-
const account = new Account(this.env.provider, this.walletAddress, this.env.account.signer);
|
|
61
|
-
const pool = await this.getPool(GENESIS_POOLID);
|
|
62
|
-
const collateralPoolAsset = pool.assets.find((a) => a.symbol.toLocaleUpperCase() ===
|
|
63
|
-
params.withdrawTokenSymbol.toLocaleUpperCase());
|
|
64
|
-
if (!collateralPoolAsset) {
|
|
65
|
-
throw new Error('Collateral asset not found in pool');
|
|
66
|
-
}
|
|
67
|
-
const vtokenContract = getVTokenContract(collateralPoolAsset.vToken.address);
|
|
68
|
-
const vTokenShares = await this.getTokenBalance(collateralPoolAsset.vToken, account.address);
|
|
69
|
-
const credentials = env.account;
|
|
70
|
-
const provider = env.provider;
|
|
71
|
-
const wallet = env.account;
|
|
72
|
-
const redeemVTokenCall = await vtokenContract.populateTransaction.redeem(toU256(vTokenShares), account.address, account.address);
|
|
73
|
-
const tx = await wallet.execute([
|
|
74
|
-
{
|
|
75
|
-
contractAddress: redeemVTokenCall.contractAddress,
|
|
76
|
-
entrypoint: redeemVTokenCall.entrypoint,
|
|
77
|
-
calldata: redeemVTokenCall.calldata,
|
|
78
|
-
},
|
|
79
|
-
]);
|
|
80
|
-
await provider.waitForTransaction(tx.transaction_hash);
|
|
81
|
-
const transferResult = {
|
|
82
|
-
status: 'success',
|
|
83
|
-
symbol: params.withdrawTokenSymbol,
|
|
84
|
-
recipients_address: account.address,
|
|
85
|
-
transaction_hash: tx.transaction_hash,
|
|
86
|
-
};
|
|
87
|
-
return transferResult;
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
console.error('Detailed deposit error:', error);
|
|
91
|
-
if (error instanceof Error) {
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
status: 'failure',
|
|
95
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
export const withdrawService = (env, walletAddress) => {
|
|
101
|
-
if (!walletAddress) {
|
|
102
|
-
throw new Error('Wallet address not configured');
|
|
103
|
-
}
|
|
104
|
-
return new WithdrawEarnService(env, walletAddress);
|
|
105
|
-
};
|
|
106
|
-
export const withdrawEarnPosition = async (env, params) => {
|
|
107
|
-
const accountAddress = env.account?.address;
|
|
108
|
-
try {
|
|
109
|
-
const withdrawEarn = withdrawService(env, accountAddress);
|
|
110
|
-
const result = await withdrawEarn.withdrawEarnTransaction(params, env);
|
|
111
|
-
return result;
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
if (error instanceof Error) {
|
|
115
|
-
}
|
|
116
|
-
return {
|
|
117
|
-
status: 'failure',
|
|
118
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
//# sourceMappingURL=withdrawService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawService.js","sourceRoot":"","sources":["../../src/tools/withdrawService.ts"],"names":[],"mappings":"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"}
|