@dripfi/drip-sdk 1.1.9 → 1.1.11
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/dist/DripApi.js +139 -50
- package/dist/DripSdk.d.ts +9 -3
- package/dist/DripSdk.js +85 -40
- package/dist/test.d.ts +2 -0
- package/dist/test.js +55 -0
- package/package.json +1 -1
package/dist/DripApi.js
CHANGED
@@ -21,18 +21,25 @@ class DripApi {
|
|
21
21
|
fetchAllVaults() {
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
23
23
|
const res = yield fetch(`${this.route}/api-be/api/vault`);
|
24
|
-
|
25
|
-
|
24
|
+
if (res.ok) {
|
25
|
+
const data = (yield res.json());
|
26
|
+
return data;
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
throw Error(`${yield res.text()}`);
|
30
|
+
}
|
26
31
|
});
|
27
32
|
}
|
28
33
|
fetchTokenPrice(tokenName) {
|
29
34
|
return __awaiter(this, void 0, void 0, function* () {
|
30
35
|
const res = yield fetch(`${this.route}/api-be/api/tokenPrice?tokenName=${tokenName}`);
|
31
|
-
if (
|
32
|
-
|
36
|
+
if (res.ok) {
|
37
|
+
const data = yield res.json();
|
38
|
+
return data.usdPricePerToken;
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
throw Error(`${yield res.text()}`);
|
33
42
|
}
|
34
|
-
const data = yield res.json();
|
35
|
-
return data.usdPricePerToken;
|
36
43
|
});
|
37
44
|
}
|
38
45
|
getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, token) {
|
@@ -48,12 +55,12 @@ class DripApi {
|
|
48
55
|
const res = yield fetch(`${this.route}/api-be/api/1inch/swap?${queryParams}`, {
|
49
56
|
headers,
|
50
57
|
});
|
51
|
-
const data = yield res.json();
|
52
58
|
if (res.ok) {
|
59
|
+
const data = yield res.json();
|
53
60
|
return data;
|
54
61
|
}
|
55
62
|
else {
|
56
|
-
throw
|
63
|
+
throw Error(`${yield res.text()}`);
|
57
64
|
}
|
58
65
|
});
|
59
66
|
}
|
@@ -67,8 +74,13 @@ class DripApi {
|
|
67
74
|
const res = yield fetch(`${this.route}/api-be/api/user/deposits/${walletAddress}`, {
|
68
75
|
headers: reqHeaders,
|
69
76
|
});
|
70
|
-
|
71
|
-
|
77
|
+
if (res.ok) {
|
78
|
+
const data = yield res.json();
|
79
|
+
return data;
|
80
|
+
}
|
81
|
+
else {
|
82
|
+
throw Error(`${yield res.text()}`);
|
83
|
+
}
|
72
84
|
});
|
73
85
|
}
|
74
86
|
getUserBoostedNfts(walletAddress, vaultAddress, token, headers) {
|
@@ -81,22 +93,37 @@ class DripApi {
|
|
81
93
|
const res = yield fetch(`${this.route}/api-be/api/user/nftBoost/${walletAddress}/${vaultAddress}`, {
|
82
94
|
headers: reqHeaders,
|
83
95
|
});
|
84
|
-
|
85
|
-
|
96
|
+
if (res.ok) {
|
97
|
+
const data = yield res.json();
|
98
|
+
return data;
|
99
|
+
}
|
100
|
+
else {
|
101
|
+
throw Error(`${yield res.text()}`);
|
102
|
+
}
|
86
103
|
});
|
87
104
|
}
|
88
105
|
fetchVaultStats() {
|
89
106
|
return __awaiter(this, void 0, void 0, function* () {
|
90
107
|
const res = yield fetch(`${this.route}/api-be/api/vaultStats`);
|
91
|
-
|
92
|
-
|
108
|
+
if (res.ok) {
|
109
|
+
const data = yield res.json();
|
110
|
+
return data;
|
111
|
+
}
|
112
|
+
else {
|
113
|
+
throw Error(`${yield res.text()}`);
|
114
|
+
}
|
93
115
|
});
|
94
116
|
}
|
95
117
|
fetchVaultDetails(vaultAddress) {
|
96
118
|
return __awaiter(this, void 0, void 0, function* () {
|
97
119
|
const res = yield fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
|
98
|
-
|
99
|
-
|
120
|
+
if (res.ok) {
|
121
|
+
const data = (yield res.json());
|
122
|
+
return data;
|
123
|
+
}
|
124
|
+
else {
|
125
|
+
throw Error(`${yield res.text()}`);
|
126
|
+
}
|
100
127
|
});
|
101
128
|
}
|
102
129
|
fetchRewardsPerHour(vaultAddress, token) {
|
@@ -106,11 +133,13 @@ class DripApi {
|
|
106
133
|
const res = yield fetch(`${this.route}/api-be/api/user/rewardsPerHour/${vaultAddress}`, {
|
107
134
|
headers,
|
108
135
|
});
|
109
|
-
if (
|
110
|
-
|
136
|
+
if (res.ok) {
|
137
|
+
const data = yield res.json();
|
138
|
+
return data.rewardsPerHour;
|
139
|
+
}
|
140
|
+
else {
|
141
|
+
throw Error(`${yield res.text()}`);
|
111
142
|
}
|
112
|
-
const data = yield res.json();
|
113
|
-
return data.rewardsPerHour;
|
114
143
|
});
|
115
144
|
}
|
116
145
|
getSwapInfo(fromTokenAddress, toTokenAddress, amount, fromAddress) {
|
@@ -120,14 +149,19 @@ class DripApi {
|
|
120
149
|
}
|
121
150
|
const url = `${this.route}/oneinch?getRequest=/swap/v5.2/1/swap?fromTokenAddress=${fromTokenAddress}%26toTokenAddress=${toTokenAddress}%26amount=${amount.toString()}%26fromAddress=${fromAddress}%26slippage=0.1%26disableEstimate=true%26allowPartialFill=false%26includeTokensInfo=true`;
|
122
151
|
const res = yield fetch(url);
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
152
|
+
if (res.ok) {
|
153
|
+
const data = (yield res.json());
|
154
|
+
return [
|
155
|
+
{
|
156
|
+
swapTarget: data.tx.to,
|
157
|
+
token: data.fromToken.address,
|
158
|
+
swapCallData: data.tx.data,
|
159
|
+
},
|
160
|
+
];
|
161
|
+
}
|
162
|
+
else {
|
163
|
+
throw Error(`${yield res.text()}`);
|
164
|
+
}
|
131
165
|
});
|
132
166
|
}
|
133
167
|
fetchUserSVTBalance(vaultAddress, walletAddress, token) {
|
@@ -137,8 +171,13 @@ class DripApi {
|
|
137
171
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/svtBalance/${walletAddress}/${vaultAddress}`, {
|
138
172
|
headers,
|
139
173
|
});
|
140
|
-
|
141
|
-
|
174
|
+
if (res.ok) {
|
175
|
+
const data = (yield res.json());
|
176
|
+
return data;
|
177
|
+
}
|
178
|
+
else {
|
179
|
+
throw Error(`${yield res.text()}`);
|
180
|
+
}
|
142
181
|
});
|
143
182
|
}
|
144
183
|
fetchUserBalance(vaultAddress, walletAddress, token) {
|
@@ -148,8 +187,13 @@ class DripApi {
|
|
148
187
|
const res = yield fetch(`${this.route}/api-be/api/spool/userBalance/${walletAddress}/${vaultAddress}`, {
|
149
188
|
headers,
|
150
189
|
});
|
151
|
-
|
152
|
-
|
190
|
+
if (res.ok) {
|
191
|
+
const data = (yield res.json());
|
192
|
+
return data;
|
193
|
+
}
|
194
|
+
else {
|
195
|
+
throw Error(`${yield res.text()}`);
|
196
|
+
}
|
153
197
|
});
|
154
198
|
}
|
155
199
|
fetchEnrichedUserDNFTForVault(vaultAddress, walletAddress, token) {
|
@@ -159,8 +203,13 @@ class DripApi {
|
|
159
203
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/dNft/${walletAddress}/${vaultAddress}`, {
|
160
204
|
headers,
|
161
205
|
});
|
162
|
-
|
163
|
-
|
206
|
+
if (res.ok) {
|
207
|
+
const data = yield res.json();
|
208
|
+
return data;
|
209
|
+
}
|
210
|
+
else {
|
211
|
+
throw Error(`${yield res.text()}`);
|
212
|
+
}
|
164
213
|
});
|
165
214
|
}
|
166
215
|
fetchEnrichedUserWNFTForVault(vaultAddress, walletAddress, token) {
|
@@ -170,8 +219,13 @@ class DripApi {
|
|
170
219
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/wNft/${walletAddress}/${vaultAddress}`, {
|
171
220
|
headers,
|
172
221
|
});
|
173
|
-
|
174
|
-
|
222
|
+
if (res.ok) {
|
223
|
+
const data = yield res.json();
|
224
|
+
return data;
|
225
|
+
}
|
226
|
+
else {
|
227
|
+
throw Error(`${yield res.text()}`);
|
228
|
+
}
|
175
229
|
});
|
176
230
|
}
|
177
231
|
fetchUserSVTFromNfts(vaultAddress, userAddress, dnfts, token) {
|
@@ -181,8 +235,13 @@ class DripApi {
|
|
181
235
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/svtFromNft/${userAddress}/${vaultAddress}?dnfts=${dnfts.join(',')}`, {
|
182
236
|
headers,
|
183
237
|
});
|
184
|
-
|
185
|
-
|
238
|
+
if (res.ok) {
|
239
|
+
const data = (yield res.json());
|
240
|
+
return data;
|
241
|
+
}
|
242
|
+
else {
|
243
|
+
throw Error(`${yield res.text()}`);
|
244
|
+
}
|
186
245
|
});
|
187
246
|
}
|
188
247
|
fetchAllUserWNFTForVault(vaultAddress, walletAddress, token, headers) {
|
@@ -195,8 +254,13 @@ class DripApi {
|
|
195
254
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/allWnft/${walletAddress}/${vaultAddress}`, {
|
196
255
|
headers: reqHeaders,
|
197
256
|
});
|
198
|
-
|
199
|
-
|
257
|
+
if (res.ok) {
|
258
|
+
const data = (yield res.json());
|
259
|
+
return data;
|
260
|
+
}
|
261
|
+
else {
|
262
|
+
throw Error(`${yield res.text()}`);
|
263
|
+
}
|
200
264
|
});
|
201
265
|
}
|
202
266
|
fetchAllUserDNFTForVault(vaultAddress, walletAddress, token, headers) {
|
@@ -209,8 +273,13 @@ class DripApi {
|
|
209
273
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/allDnft/${walletAddress}/${vaultAddress}`, {
|
210
274
|
headers: reqHeaders,
|
211
275
|
});
|
212
|
-
|
213
|
-
|
276
|
+
if (res.ok) {
|
277
|
+
const data = (yield res.json());
|
278
|
+
return data;
|
279
|
+
}
|
280
|
+
else {
|
281
|
+
throw Error(`${yield res.text()}`);
|
282
|
+
}
|
214
283
|
});
|
215
284
|
}
|
216
285
|
fetchAssetPerSvtAtBlock(vaultAddress, blocknumber, token) {
|
@@ -220,8 +289,13 @@ class DripApi {
|
|
220
289
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/assetBalance/${blocknumber}/${vaultAddress}`, {
|
221
290
|
headers,
|
222
291
|
});
|
223
|
-
|
224
|
-
|
292
|
+
if (res.ok) {
|
293
|
+
const data = (yield res.json());
|
294
|
+
return data;
|
295
|
+
}
|
296
|
+
else {
|
297
|
+
throw Error(`${yield res.text()}`);
|
298
|
+
}
|
225
299
|
});
|
226
300
|
}
|
227
301
|
fetchFastWithdrawNFTs(vaultAddress, walletAddress, token, headers) {
|
@@ -234,8 +308,13 @@ class DripApi {
|
|
234
308
|
const res = yield fetch(`${this.route}/api-be/api/spool/user/fastWithdrawNft/${walletAddress}/${vaultAddress}`, {
|
235
309
|
headers: reqHeaders,
|
236
310
|
});
|
237
|
-
|
238
|
-
|
311
|
+
if (res.ok) {
|
312
|
+
const data = (yield res.json());
|
313
|
+
return data;
|
314
|
+
}
|
315
|
+
else {
|
316
|
+
throw Error(`${yield res.text()}`);
|
317
|
+
}
|
239
318
|
});
|
240
319
|
}
|
241
320
|
fetchUserRewards(walletAddress, token, headers) {
|
@@ -248,8 +327,13 @@ class DripApi {
|
|
248
327
|
const res = yield fetch(`${this.route}/api-be/api/user/rewards/${walletAddress}`, {
|
249
328
|
headers: reqHeaders,
|
250
329
|
});
|
251
|
-
|
252
|
-
|
330
|
+
if (res.ok) {
|
331
|
+
const data = yield res.json();
|
332
|
+
return data;
|
333
|
+
}
|
334
|
+
else {
|
335
|
+
throw Error(`${yield res.text()}`);
|
336
|
+
}
|
253
337
|
});
|
254
338
|
}
|
255
339
|
fetchVaultsClaimableData(walletAddress, token, headers) {
|
@@ -262,8 +346,13 @@ class DripApi {
|
|
262
346
|
const res = yield fetch(`${this.route}/api-be/api/user/claimableVaults/${walletAddress}`, {
|
263
347
|
headers: reqHeaders,
|
264
348
|
});
|
265
|
-
|
266
|
-
|
349
|
+
if (res.ok) {
|
350
|
+
const data = yield res.json();
|
351
|
+
return data;
|
352
|
+
}
|
353
|
+
else {
|
354
|
+
throw Error(`${yield res.text()}`);
|
355
|
+
}
|
267
356
|
});
|
268
357
|
}
|
269
358
|
}
|
package/dist/DripSdk.d.ts
CHANGED
@@ -20,7 +20,10 @@ export default class DripSdk {
|
|
20
20
|
updateSigner(newSigner: Signer): void;
|
21
21
|
isUserAuthenticated(): Promise<AuthenticationStatus>;
|
22
22
|
authenticate(): Promise<boolean>;
|
23
|
+
newDeposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
|
23
24
|
deposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
|
25
|
+
private doDeposit;
|
26
|
+
getTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
|
24
27
|
getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
|
25
28
|
getUserBalance(headers?: Headers): Promise<UserBalance>;
|
26
29
|
getUserBoostedNfts(vaultAddress: string, headers?: Headers): Promise<string[]>;
|
@@ -29,10 +32,14 @@ export default class DripSdk {
|
|
29
32
|
getUserVaultBalance(vaultAddress: string, headers?: Headers): Promise<UserVaultBalance>;
|
30
33
|
fastWithdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
|
31
34
|
swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
|
35
|
+
newSwapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
|
36
|
+
private doSwapAndDeposit;
|
32
37
|
withdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
|
33
38
|
claimWithdraws(vaultAddress: string): Promise<string>;
|
34
39
|
getVaultsClaimableData(headers?: Headers): Promise<VaultClaimData>;
|
35
40
|
private generateOldRedeemBagStruct;
|
41
|
+
approveTokenForSwapAndDeposit(tokenAddress: string, amount: string): Promise<void>;
|
42
|
+
approveTokenForDeposit(tokenAddress: string, amount: string): Promise<void>;
|
36
43
|
private generateNewRedeemBagStruct;
|
37
44
|
private getAllSvts;
|
38
45
|
private getERC20Precission;
|
@@ -45,8 +52,7 @@ export default class DripSdk {
|
|
45
52
|
private checkIfUserHasWithdrawsToClaim;
|
46
53
|
private shouldUseNewWithdrawLogic;
|
47
54
|
private calculateAllWithdrawalBalances;
|
48
|
-
private getTokenAllowanceForSwapAndDepositContractAddress;
|
49
|
-
private approveTokenForSwapAndDepositContract;
|
50
55
|
private getTokenAllowanceForDeposit;
|
51
|
-
private
|
56
|
+
private getTokenAllowanceForSwapAndDeposit;
|
57
|
+
private getERC20TokenAllowance;
|
52
58
|
}
|
package/dist/DripSdk.js
CHANGED
@@ -124,19 +124,30 @@ class DripSdk {
|
|
124
124
|
return false;
|
125
125
|
});
|
126
126
|
}
|
127
|
+
newDeposit(tokenAddress, vaultAddress, amount) {
|
128
|
+
return __awaiter(this, void 0, void 0, function* () {
|
129
|
+
return this.doDeposit(tokenAddress, vaultAddress, amount, false);
|
130
|
+
});
|
131
|
+
}
|
127
132
|
deposit(tokenAddress, vaultAddress, amount) {
|
133
|
+
return __awaiter(this, void 0, void 0, function* () {
|
134
|
+
return this.doDeposit(tokenAddress, vaultAddress, amount, true);
|
135
|
+
});
|
136
|
+
}
|
137
|
+
doDeposit(tokenAddress, vaultAddress, amount, checkAllowance) {
|
128
138
|
return __awaiter(this, void 0, void 0, function* () {
|
129
139
|
if (!this.signer) {
|
130
140
|
throw Error('No signer provided');
|
131
141
|
}
|
132
|
-
const currentTokenAllowance = yield this.getTokenAllowanceForDeposit(tokenAddress);
|
133
142
|
const decimals = yield this.getERC20Precission(tokenAddress);
|
134
|
-
const
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
143
|
+
const amountWithDecimals = parseFloat(parseFloat(amount).toFixed(decimals));
|
144
|
+
if (checkAllowance) {
|
145
|
+
const currentTokenAllowance = parseFloat(ethers_1.ethers.utils.formatUnits(yield this.getTokenAllowanceForDeposit(tokenAddress), decimals));
|
146
|
+
if (amountWithDecimals > currentTokenAllowance) {
|
147
|
+
yield this.approveTokenForDeposit(tokenAddress, amountWithDecimals.toString());
|
148
|
+
}
|
139
149
|
}
|
150
|
+
const amountToDeposit = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
|
140
151
|
const signerAddress = yield this.signer.getAddress();
|
141
152
|
if (!signerAddress) {
|
142
153
|
throw Error('Error fetching address');
|
@@ -153,10 +164,19 @@ class DripSdk {
|
|
153
164
|
return txReceipt.transactionHash;
|
154
165
|
});
|
155
166
|
}
|
167
|
+
getTokenAllowanceForCurrency(tokenAddress) {
|
168
|
+
return __awaiter(this, void 0, void 0, function* () {
|
169
|
+
if (!this.signer) {
|
170
|
+
throw Error('No signer provided');
|
171
|
+
}
|
172
|
+
const currentTokenAllowance = yield this.getTokenAllowanceForDeposit(tokenAddress);
|
173
|
+
return currentTokenAllowance.toString();
|
174
|
+
});
|
175
|
+
}
|
156
176
|
getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
|
157
177
|
return __awaiter(this, void 0, void 0, function* () {
|
158
178
|
const userAddress = yield this.signer.getAddress();
|
159
|
-
|
179
|
+
yield this.isUserAuthenticated();
|
160
180
|
// if (!authData.isAuthenticated) {throw Error(`User not authenticated: ${authData.message}`);}
|
161
181
|
return this.dripApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, userAddress);
|
162
182
|
});
|
@@ -260,22 +280,32 @@ class DripSdk {
|
|
260
280
|
});
|
261
281
|
}
|
262
282
|
swapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, ethAmount) {
|
283
|
+
return __awaiter(this, void 0, void 0, function* () {
|
284
|
+
return this.doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, true, ethAmount);
|
285
|
+
});
|
286
|
+
}
|
287
|
+
newSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, ethAmount) {
|
288
|
+
return __awaiter(this, void 0, void 0, function* () {
|
289
|
+
return this.doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, false, ethAmount);
|
290
|
+
});
|
291
|
+
}
|
292
|
+
doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, checkAllowance, ethAmount) {
|
263
293
|
return __awaiter(this, void 0, void 0, function* () {
|
264
294
|
const userAddress = yield this.signer.getAddress();
|
265
|
-
|
295
|
+
yield this.isUserAuthenticated();
|
266
296
|
// if (!authData.isAuthenticated) {throw Error(`User not authenticated: ${authData.message}`);}
|
267
297
|
if (!this.signer) {
|
268
298
|
throw Error('No signer provided');
|
269
299
|
}
|
270
300
|
const decimals = yield this.getERC20Precission(fromTokenAddress);
|
271
|
-
const
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
yield this.approveTokenForSwapAndDepositContract(fromTokenAddress, fromToken.sub(currentTokenAllowance));
|
301
|
+
const amountWithDecimals = parseFloat(parseFloat(fromTokenAmount).toFixed(decimals));
|
302
|
+
if (amountWithDecimals > 0 && checkAllowance) {
|
303
|
+
const currentTokenAllowance = parseFloat(ethers_1.ethers.utils.formatUnits(yield this.getTokenAllowanceForSwapAndDeposit(fromTokenAddress), decimals));
|
304
|
+
if (amountWithDecimals > currentTokenAllowance) {
|
305
|
+
yield this.approveTokenForSwapAndDeposit(fromTokenAddress, amountWithDecimals.toString());
|
277
306
|
}
|
278
307
|
}
|
308
|
+
const fromToken = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
|
279
309
|
const swapInfo = yield this.dripApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, userAddress);
|
280
310
|
const swapDepositBagStruct = {
|
281
311
|
inTokens: [fromTokenAddress],
|
@@ -346,6 +376,9 @@ class DripSdk {
|
|
346
376
|
generateOldRedeemBagStruct(token, vault, signerAddress, amountToWithdraw) {
|
347
377
|
return __awaiter(this, void 0, void 0, function* () {
|
348
378
|
const dnfts = yield this.dripApi.fetchEnrichedUserDNFTForVault(vault.vaultAddress, signerAddress, token);
|
379
|
+
if (dnfts.length === 0) {
|
380
|
+
throw Error('User has no deposits');
|
381
|
+
}
|
349
382
|
const userBalance = yield this.dripApi.fetchUserBalance(vault.vaultAddress, signerAddress, token);
|
350
383
|
const totalTokenBalance = ethers_1.BigNumber.from(userBalance[vault.depositToken.tokenAddress]);
|
351
384
|
const totalSharesFetched = yield this.dripApi.fetchUserSVTBalance(vault.vaultAddress, signerAddress, token);
|
@@ -380,6 +413,32 @@ class DripSdk {
|
|
380
413
|
};
|
381
414
|
});
|
382
415
|
}
|
416
|
+
approveTokenForSwapAndDeposit(tokenAddress, amount) {
|
417
|
+
return __awaiter(this, void 0, void 0, function* () {
|
418
|
+
if (!this.signer) {
|
419
|
+
throw Error('No signer provided');
|
420
|
+
}
|
421
|
+
const decimals = yield this.getERC20Precission(tokenAddress);
|
422
|
+
const amountToApprove = ethers_1.ethers.utils.parseUnits(amount.toString(), decimals);
|
423
|
+
const swapAndDepositContractAddress = yield this.dripConfig.getSwapAndDepositContractAddress(this.signer);
|
424
|
+
const erc20Instance = spool_v2_sdk_1.ERC20__factory.connect(tokenAddress, this.signer);
|
425
|
+
const approveTx = yield erc20Instance.approve(swapAndDepositContractAddress, amountToApprove);
|
426
|
+
yield approveTx.wait();
|
427
|
+
});
|
428
|
+
}
|
429
|
+
approveTokenForDeposit(tokenAddress, amount) {
|
430
|
+
return __awaiter(this, void 0, void 0, function* () {
|
431
|
+
if (!this.signer) {
|
432
|
+
throw Error('No signer provided');
|
433
|
+
}
|
434
|
+
const decimals = yield this.getERC20Precission(tokenAddress);
|
435
|
+
const amountToApprove = ethers_1.ethers.utils.parseUnits(amount.toString(), decimals);
|
436
|
+
const smartVaultManagerAddress = yield this.dripConfig.getSmartVaultManagerAddress(this.signer);
|
437
|
+
const erc20Instance = spool_v2_sdk_1.ERC20__factory.connect(tokenAddress, this.signer);
|
438
|
+
const approveTx = yield erc20Instance.approve(smartVaultManagerAddress, amountToApprove);
|
439
|
+
yield approveTx.wait();
|
440
|
+
});
|
441
|
+
}
|
383
442
|
generateNewRedeemBagStruct(token, vault, signerAddress, amountToWithdraw) {
|
384
443
|
return __awaiter(this, void 0, void 0, function* () {
|
385
444
|
const decimals = yield this.getERC20Precission(vault.depositToken.tokenAddress.toLowerCase());
|
@@ -387,6 +446,9 @@ class DripSdk {
|
|
387
446
|
const initialAmountToWithdraw = ethers_1.ethers.utils.parseUnits(amountToWithdraw || '0', decimals);
|
388
447
|
let totalAmountToWithdraw = initialAmountToWithdraw;
|
389
448
|
let dnfts = yield this.dripApi.fetchEnrichedUserDNFTForVault(vault.vaultAddress.toLowerCase(), signerAddress, token);
|
449
|
+
if (dnfts.length === 0) {
|
450
|
+
throw Error('User has no deposits');
|
451
|
+
}
|
390
452
|
dnfts = yield this.getAllSvts(vault.vaultAddress.toLowerCase(), signerAddress, dnfts, token);
|
391
453
|
let shares = ethers_1.BigNumber.from(0);
|
392
454
|
const nftIds = [];
|
@@ -555,53 +617,36 @@ class DripSdk {
|
|
555
617
|
return [estimatedPendingWithdrawalBalance, estimatedWithdrawableBalance, estimatedWithdrawals];
|
556
618
|
});
|
557
619
|
}
|
558
|
-
|
620
|
+
getTokenAllowanceForDeposit(tokenAddress) {
|
559
621
|
return __awaiter(this, void 0, void 0, function* () {
|
560
622
|
if (!this.signer) {
|
561
623
|
throw Error('No signer provided');
|
562
624
|
}
|
563
|
-
const
|
564
|
-
const
|
565
|
-
const allowance = yield erc20Instance.allowance(userAddress, swapAndDepositAddress);
|
625
|
+
const smartVaultManagerAddress = yield this.dripConfig.getSmartVaultManagerAddress(this.signer);
|
626
|
+
const allowance = yield this.getERC20TokenAllowance(smartVaultManagerAddress, tokenAddress);
|
566
627
|
return allowance;
|
567
628
|
});
|
568
629
|
}
|
569
|
-
|
630
|
+
getTokenAllowanceForSwapAndDeposit(tokenAddress) {
|
570
631
|
return __awaiter(this, void 0, void 0, function* () {
|
571
632
|
if (!this.signer) {
|
572
633
|
throw Error('No signer provided');
|
573
634
|
}
|
574
|
-
const
|
575
|
-
const
|
576
|
-
|
577
|
-
yield approveTx.wait();
|
635
|
+
const swapAndDepositAddress = yield this.dripConfig.getSwapAndDepositContractAddress(this.signer);
|
636
|
+
const allowance = yield this.getERC20TokenAllowance(swapAndDepositAddress, tokenAddress);
|
637
|
+
return allowance;
|
578
638
|
});
|
579
639
|
}
|
580
|
-
|
640
|
+
getERC20TokenAllowance(spender, tokenAddress) {
|
581
641
|
return __awaiter(this, void 0, void 0, function* () {
|
582
642
|
if (!this.signer) {
|
583
643
|
throw Error('No signer provided');
|
584
644
|
}
|
585
645
|
const signerAddress = yield this.signer.getAddress();
|
586
|
-
if (!signerAddress) {
|
587
|
-
throw Error('Error fetching address');
|
588
|
-
}
|
589
646
|
const erc20Instance = spool_v2_sdk_1.ERC20__factory.connect(tokenAddress, this.signer);
|
590
|
-
const
|
591
|
-
const allowance = yield erc20Instance.allowance(signerAddress, smartVaultManagerAddress);
|
647
|
+
const allowance = yield erc20Instance.allowance(signerAddress, spender);
|
592
648
|
return allowance;
|
593
649
|
});
|
594
650
|
}
|
595
|
-
approveTokenForDeposit(tokenAddress, amount) {
|
596
|
-
return __awaiter(this, void 0, void 0, function* () {
|
597
|
-
if (!this.signer) {
|
598
|
-
throw Error('No signer provided');
|
599
|
-
}
|
600
|
-
const smartVaultManagerAddress = yield this.dripConfig.getSmartVaultManagerAddress(this.signer);
|
601
|
-
const erc20Instance = spool_v2_sdk_1.ERC20__factory.connect(tokenAddress, this.signer);
|
602
|
-
const approveTx = yield erc20Instance.approve(smartVaultManagerAddress, amount);
|
603
|
-
yield approveTx.wait();
|
604
|
-
});
|
605
|
-
}
|
606
651
|
}
|
607
652
|
exports.default = DripSdk;
|
package/dist/test.d.ts
ADDED
package/dist/test.js
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.signer = void 0;
|
16
|
+
const ethers_1 = require("ethers");
|
17
|
+
const DripConfig_1 = require("./DripConfig");
|
18
|
+
const DripSdk_1 = __importDefault(require("./DripSdk"));
|
19
|
+
// This is script to test locally the drip sdk methods
|
20
|
+
const privKey = 'b0236d5a72786eb1d256713482103d49ba0fecafaf18da8df45eac8a66bcf1af';
|
21
|
+
const configParams = {
|
22
|
+
subgraphUrl: 'https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2-sepolia/api',
|
23
|
+
priceFeedApiUrl: 'https://pricefeed.dev.spool.fi/',
|
24
|
+
rewardsUrl: 'https://rewards.dev.spool.fi/sepolia',
|
25
|
+
fastRedeemApi: 'https://fastwithdraw.dev.spool.fi/sepolia',
|
26
|
+
contracts: {
|
27
|
+
11155111: {
|
28
|
+
ISmartVaultManager: '0x2638d6c0b4EF6Dee04050fA0B07CA62500435747',
|
29
|
+
IDepositSwap: '0x5FB08e00DE169f041711206A0995410884080177',
|
30
|
+
ISmartVaultFactory: '0x86BB0376929218ba1cb825cE2ebE801bFCcD8149',
|
31
|
+
IDepositManager: '0xfA37dd47F3596681C39D3a1b55474595BB591dc9',
|
32
|
+
IRewardManager: '0xcE7F66BD505a80129Ef25b06207Ac49620A55522',
|
33
|
+
IStrategyRegistry: '0xf978853Db777d00b1130Ea21d8d98E8710b0Bc56',
|
34
|
+
ISpoolLens: '0x33Df6cf08Fbb10047e318989fE687294CD45A7B4',
|
35
|
+
},
|
36
|
+
},
|
37
|
+
};
|
38
|
+
const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider('https://rpc.ankr.com/eth_sepolia', 11155111);
|
39
|
+
exports.signer = new ethers_1.ethers.Wallet(privKey, provider);
|
40
|
+
// const random_address = '0x25dFcFB061956c6f33B1ee032cc33837d0b83257';
|
41
|
+
const vaultAddress = '0x457d29df2449439a86521a1cea1561d24cc67a93'; // USDC AUKI
|
42
|
+
const dripSdk = new DripSdk_1.default(new DripConfig_1.DripConfig(configParams.subgraphUrl, configParams.priceFeedApiUrl, configParams.rewardsUrl, configParams.fastRedeemApi, configParams.contracts, 'http://localhost:3000'), exports.signer);
|
43
|
+
function main() {
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
45
|
+
try {
|
46
|
+
// const res = await dripSdk.deposit('0xa6b92FCD4Ee124353C8A6AcF1Edb574F46F3f8DF',vaultAddress, '1500');
|
47
|
+
const res = yield dripSdk.withdraw(vaultAddress, '150');
|
48
|
+
console.log(res);
|
49
|
+
}
|
50
|
+
catch (error) {
|
51
|
+
console.log(`Main error: ${error}`);
|
52
|
+
}
|
53
|
+
});
|
54
|
+
}
|
55
|
+
main();
|