@dripfi/drip-sdk 1.4.3-yelay-lite → 1.4.3-yelay-lite-2
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/CHANGELOG.md +37 -0
- package/dist/PerqApi.d.ts +13 -16
- package/dist/PerqApi.js +80 -74
- package/dist/PerqSdk.d.ts +22 -11
- package/dist/PerqSdk.js +81 -67
- package/dist/types/DeployedProject.d.ts +1 -0
- package/dist/types/DetailedProjectData.d.ts +33 -0
- package/dist/types/DetailedProjectData.js +2 -0
- package/dist/types/LinkWalletPayload.d.ts +4 -0
- package/dist/types/LinkWalletPayload.js +2 -0
- package/dist/types/MyPerqData.d.ts +10 -5
- package/dist/types/PerqConfig.d.ts +6 -3
- package/dist/types/PerqConfig.js +15 -9
- package/dist/types/ReducedProjectData.d.ts +20 -0
- package/dist/types/ReducedProjectData.js +2 -0
- package/dist/types/VaultData.d.ts +31 -0
- package/dist/types/VaultData.js +2 -0
- package/dist/types/index.d.ts +5 -1
- package/dist/utils/chains.d.ts +2 -0
- package/dist/utils/chains.js +5 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
@@ -72,3 +72,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
72
72
|
### Changed
|
73
73
|
|
74
74
|
- Export the `PerqConfig` from index.ts like recommended
|
75
|
+
|
76
|
+
## [1.4.3] - 2025-02-02
|
77
|
+
|
78
|
+
### Fixed
|
79
|
+
|
80
|
+
- Instantiation of the `SpoolSDK`
|
81
|
+
|
82
|
+
## [1.4.3] - 2025-02-02
|
83
|
+
|
84
|
+
### Fixed
|
85
|
+
|
86
|
+
- Calculation of users vault balance in vaults with extracted strategies by using the `getUserBalanceBreakdown` method in the `SpoolSDK`
|
87
|
+
|
88
|
+
## [1.4.6] - 2025-02-13
|
89
|
+
|
90
|
+
### Changed
|
91
|
+
|
92
|
+
- Upgraded version of `SpoolSDK` to `2.0.53` in order to fix potential issues with the generation of the redeem bag structure
|
93
|
+
|
94
|
+
## [1.4.7] - 2025-02-13
|
95
|
+
|
96
|
+
### Added
|
97
|
+
|
98
|
+
- Added method `getSwapAndDepositTokenAllowanceForCurrency` to the `PerqSdk`
|
99
|
+
|
100
|
+
## [1.4.8] - 2025-02-14
|
101
|
+
|
102
|
+
### Changed
|
103
|
+
|
104
|
+
- Updated `PerqApi` to use the new 1inch API endpoint
|
105
|
+
|
106
|
+
## [1.4.9] - 2025-02-14
|
107
|
+
|
108
|
+
### Added
|
109
|
+
|
110
|
+
- Added method `linkSuiWalletWithEthWallet` to the `PerqSdk`
|
111
|
+
- Added method `getLinkedSuiWallet` to the `PerqSdk`
|
package/dist/PerqApi.d.ts
CHANGED
@@ -1,25 +1,22 @@
|
|
1
1
|
import { BigNumber } from 'ethers';
|
2
|
-
import {
|
2
|
+
import { SwapInfo, UserRewards, VaultStats, MyPerqData, LoyaltyCard, BeansBalance, PerqToBeansSwapInfo, BeanEntry, NonceEnrichedSignedPayload, NonceEnrichedPayload, UpgradeLoyaltyCardPayload, ReducedProjectData, DetailedProjectData, LinkWalletPayload, UserVaultBalance } from './types';
|
3
|
+
import CachedVaultData from './types/VaultData';
|
3
4
|
export default class PerqApi {
|
4
5
|
route: string;
|
5
6
|
constructor(route: string);
|
6
|
-
fetchAllVaults(): Promise<
|
7
|
-
|
8
|
-
|
7
|
+
fetchAllVaults(): Promise<CachedVaultData[]>;
|
8
|
+
fetchVaultV2Details(vaultAddress: string): Promise<CachedVaultData>;
|
9
|
+
fetchVaultLiteDetails(vaultAddress: string, onChainProjectId: number): Promise<CachedVaultData>;
|
10
|
+
fetchAllProjects(): Promise<ReducedProjectData[]>;
|
11
|
+
fetchProjetctDetails(projectName: string): Promise<DetailedProjectData>;
|
9
12
|
fetchTokenPrice(tokenName: string): Promise<number>;
|
10
|
-
getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
|
13
|
+
getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number, chainId: string): Promise<string>;
|
11
14
|
getUserBoostedNfts(walletAddress: string, vaultAddress: string): Promise<string[]>;
|
12
15
|
fetchVaultStats(): Promise<VaultStats>;
|
13
|
-
fetchVaultDetails(vaultAddress: string): Promise<Vault>;
|
14
16
|
fetchRewardsPerHour(walletAddress: string, vaultAddress: string): Promise<number>;
|
15
|
-
getSwapInfo(fromTokenAddress: string, toTokenAddress: string, amount: BigNumber, fromAddress: string): Promise<SwapInfo[]>;
|
16
|
-
fetchUserSVTBalance(vaultAddress: string, walletAddress: string): Promise<BigNumber>;
|
17
|
-
fetchUserBalance(vaultAddress: string, walletAddress: string): Promise<Record<string, string>>;
|
17
|
+
getSwapInfo(fromTokenAddress: string, toTokenAddress: string, amount: BigNumber, fromAddress: string, chainId: number): Promise<SwapInfo[]>;
|
18
18
|
fetchEnrichedUserWNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
|
19
|
-
fetchAllUserWNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
|
20
|
-
fetchAllUserDNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
|
21
19
|
fetchAssetPerSvtAtBlock(vaultAddress: string, blocknumber: number): Promise<BigNumber>;
|
22
|
-
fetchFastWithdrawNFTs(vaultAddress: string, walletAddress: string): Promise<QLFastRedeem[]>;
|
23
20
|
fetchUserRewards(walletAddress: string): Promise<UserRewards>;
|
24
21
|
fetchAllLoyaltyCards(): Promise<LoyaltyCard[]>;
|
25
22
|
fetchOwnedLoyaltyCard(walletAddress: string): Promise<LoyaltyCard>;
|
@@ -28,9 +25,9 @@ export default class PerqApi {
|
|
28
25
|
fetchMyPerqData(userAddress: string): Promise<MyPerqData[]>;
|
29
26
|
getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
|
30
27
|
fetchBeansHistory(walletAddress: string): Promise<BeanEntry[]>;
|
28
|
+
linkSuiWalletWithEthWallet(signedPayload: NonceEnrichedSignedPayload<LinkWalletPayload>): Promise<boolean>;
|
29
|
+
getLinkedSuiWallet(walletAddress: string): Promise<string>;
|
31
30
|
getNonceEnrichedPayload<T>(payload: T): Promise<NonceEnrichedPayload<T>>;
|
32
|
-
|
33
|
-
|
34
|
-
deposited: number;
|
35
|
-
}>;
|
31
|
+
fetchV2VaultUserBalance(userAddress: string, vaultAddress: string): Promise<UserVaultBalance>;
|
32
|
+
fetchLiteVaultUserBalance(userAddress: string, vaultAddress: string, onChainProjectId: number): Promise<UserVaultBalance>;
|
36
33
|
}
|
package/dist/PerqApi.js
CHANGED
@@ -18,18 +18,18 @@ class PerqApi {
|
|
18
18
|
throw Error(`${await res.text()}`);
|
19
19
|
}
|
20
20
|
}
|
21
|
-
async
|
22
|
-
const res = await fetch(`${this.route}/api-be/api/vault
|
21
|
+
async fetchVaultV2Details(vaultAddress) {
|
22
|
+
const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
|
23
23
|
if (res.ok) {
|
24
|
-
const
|
25
|
-
return
|
24
|
+
const data = (await res.json());
|
25
|
+
return data;
|
26
26
|
}
|
27
27
|
else {
|
28
28
|
throw Error(`${await res.text()}`);
|
29
29
|
}
|
30
30
|
}
|
31
|
-
async
|
32
|
-
const res = await fetch(`${this.route}/api-be/api/vault
|
31
|
+
async fetchVaultLiteDetails(vaultAddress, onChainProjectId) {
|
32
|
+
const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}?onChainProjectId=${onChainProjectId}`);
|
33
33
|
if (res.ok) {
|
34
34
|
const data = (await res.json());
|
35
35
|
return data;
|
@@ -38,6 +38,26 @@ class PerqApi {
|
|
38
38
|
throw Error(`${await res.text()}`);
|
39
39
|
}
|
40
40
|
}
|
41
|
+
async fetchAllProjects() {
|
42
|
+
const res = await fetch(`${this.route}/api-be/api/projects`);
|
43
|
+
if (res.ok) {
|
44
|
+
const data = await res.json();
|
45
|
+
return data;
|
46
|
+
}
|
47
|
+
else {
|
48
|
+
throw Error(`${await res.text()}`);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
async fetchProjetctDetails(projectName) {
|
52
|
+
const res = await fetch(`${this.route}/api-be/api/projects/${projectName}`);
|
53
|
+
if (res.ok) {
|
54
|
+
const data = await res.json();
|
55
|
+
return data;
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
throw Error(`${await res.text()}`);
|
59
|
+
}
|
60
|
+
}
|
41
61
|
async fetchTokenPrice(tokenName) {
|
42
62
|
const res = await fetch(`${this.route}/api-be/api/tokenPrice?tokenName=${tokenName}`);
|
43
63
|
if (res.ok) {
|
@@ -48,12 +68,13 @@ class PerqApi {
|
|
48
68
|
throw Error(`${await res.text()}`);
|
49
69
|
}
|
50
70
|
}
|
51
|
-
async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
|
71
|
+
async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, chainId) {
|
52
72
|
const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
53
73
|
const queryParams = new URLSearchParams({
|
54
74
|
from: fromTokenAddress,
|
55
75
|
to: toTokenAddress,
|
56
76
|
amount: parsedAmount.toString(),
|
77
|
+
chainId: chainId,
|
57
78
|
});
|
58
79
|
const res = await fetch(`${this.route}/api-be/api/1inch/swap?${queryParams}`);
|
59
80
|
if (res.ok) {
|
@@ -84,16 +105,6 @@ class PerqApi {
|
|
84
105
|
throw Error(`${await res.text()}`);
|
85
106
|
}
|
86
107
|
}
|
87
|
-
async fetchVaultDetails(vaultAddress) {
|
88
|
-
const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
|
89
|
-
if (res.ok) {
|
90
|
-
const data = (await res.json());
|
91
|
-
return data;
|
92
|
-
}
|
93
|
-
else {
|
94
|
-
throw Error(`${await res.text()}`);
|
95
|
-
}
|
96
|
-
}
|
97
108
|
async fetchRewardsPerHour(walletAddress, vaultAddress) {
|
98
109
|
const res = await fetch(`${this.route}/api-be/api/user/${walletAddress}/rewardsPerHour/${vaultAddress}`);
|
99
110
|
if (res.ok) {
|
@@ -104,18 +115,18 @@ class PerqApi {
|
|
104
115
|
throw Error(`${await res.text()}`);
|
105
116
|
}
|
106
117
|
}
|
107
|
-
async getSwapInfo(fromTokenAddress, toTokenAddress, amount, fromAddress) {
|
118
|
+
async getSwapInfo(fromTokenAddress, toTokenAddress, amount, fromAddress, chainId) {
|
108
119
|
if (fromTokenAddress === toTokenAddress && fromTokenAddress === WETH_TOKEN_ADDRESS) {
|
109
120
|
return [];
|
110
121
|
}
|
111
|
-
const url = `${this.route}/oneinch?getRequest=/swap/
|
122
|
+
const url = `${this.route}/oneinch?getRequest=/swap/v6.0/${chainId}/swap?fromTokenAddress=${fromTokenAddress}%26toTokenAddress=${toTokenAddress}%26amount=${amount.toString()}%26fromAddress=${fromAddress}%26slippage=0.1%26disableEstimate=true%26allowPartialFill=false%26includeTokensInfo=true`;
|
112
123
|
const res = await fetch(url);
|
113
124
|
if (res.ok) {
|
114
125
|
const data = (await res.json());
|
115
126
|
return [
|
116
127
|
{
|
117
128
|
swapTarget: data.tx.to,
|
118
|
-
token: data.
|
129
|
+
token: data.srcToken.address,
|
119
130
|
swapCallData: data.tx.data,
|
120
131
|
},
|
121
132
|
];
|
@@ -124,26 +135,6 @@ class PerqApi {
|
|
124
135
|
throw Error(`${await res.text()}`);
|
125
136
|
}
|
126
137
|
}
|
127
|
-
async fetchUserSVTBalance(vaultAddress, walletAddress) {
|
128
|
-
const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/svtBalance/${vaultAddress}`);
|
129
|
-
if (res.ok) {
|
130
|
-
const data = (await res.json());
|
131
|
-
return data;
|
132
|
-
}
|
133
|
-
else {
|
134
|
-
throw Error(`${await res.text()}`);
|
135
|
-
}
|
136
|
-
}
|
137
|
-
async fetchUserBalance(vaultAddress, walletAddress) {
|
138
|
-
const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/balance/${vaultAddress}`);
|
139
|
-
if (res.ok) {
|
140
|
-
const data = (await res.json());
|
141
|
-
return data;
|
142
|
-
}
|
143
|
-
else {
|
144
|
-
throw Error(`${await res.text()}`);
|
145
|
-
}
|
146
|
-
}
|
147
138
|
async fetchEnrichedUserWNFTForVault(vaultAddress, walletAddress) {
|
148
139
|
const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/wNft/${vaultAddress}`);
|
149
140
|
if (res.ok) {
|
@@ -154,26 +145,6 @@ class PerqApi {
|
|
154
145
|
throw Error(`${await res.text()}`);
|
155
146
|
}
|
156
147
|
}
|
157
|
-
async fetchAllUserWNFTForVault(vaultAddress, walletAddress) {
|
158
|
-
const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/allWnft/${vaultAddress}`);
|
159
|
-
if (res.ok) {
|
160
|
-
const data = (await res.json());
|
161
|
-
return data;
|
162
|
-
}
|
163
|
-
else {
|
164
|
-
throw Error(`${await res.text()}`);
|
165
|
-
}
|
166
|
-
}
|
167
|
-
async fetchAllUserDNFTForVault(vaultAddress, walletAddress) {
|
168
|
-
const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/allDnft/${vaultAddress}`);
|
169
|
-
if (res.ok) {
|
170
|
-
const data = (await res.json());
|
171
|
-
return data;
|
172
|
-
}
|
173
|
-
else {
|
174
|
-
throw Error(`${await res.text()}`);
|
175
|
-
}
|
176
|
-
}
|
177
148
|
async fetchAssetPerSvtAtBlock(vaultAddress, blocknumber) {
|
178
149
|
const res = await fetch(`${this.route}/api-be/api/spool/assetBalance/${blocknumber}/${vaultAddress}`);
|
179
150
|
if (res.ok) {
|
@@ -184,16 +155,6 @@ class PerqApi {
|
|
184
155
|
throw Error(`${await res.text()}`);
|
185
156
|
}
|
186
157
|
}
|
187
|
-
async fetchFastWithdrawNFTs(vaultAddress, walletAddress) {
|
188
|
-
const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/fastWithdrawNft/${vaultAddress}`);
|
189
|
-
if (res.ok) {
|
190
|
-
const data = (await res.json());
|
191
|
-
return data;
|
192
|
-
}
|
193
|
-
else {
|
194
|
-
throw Error(`${await res.text()}`);
|
195
|
-
}
|
196
|
-
}
|
197
158
|
async fetchUserRewards(walletAddress) {
|
198
159
|
const res = await fetch(`${this.route}/api-be/api/user/${walletAddress}/rewards`);
|
199
160
|
if (res.ok) {
|
@@ -320,6 +281,31 @@ class PerqApi {
|
|
320
281
|
throw Error(`${await res.text()}`);
|
321
282
|
}
|
322
283
|
}
|
284
|
+
async linkSuiWalletWithEthWallet(signedPayload) {
|
285
|
+
const res = await fetch(`${this.route}/api-be/api/user/suiWallet`, {
|
286
|
+
method: 'POST',
|
287
|
+
headers: {
|
288
|
+
'Content-Type': 'application/json',
|
289
|
+
},
|
290
|
+
body: JSON.stringify(signedPayload),
|
291
|
+
});
|
292
|
+
if (res.ok) {
|
293
|
+
return true;
|
294
|
+
}
|
295
|
+
else {
|
296
|
+
throw Error(`${await res.text()}`);
|
297
|
+
}
|
298
|
+
}
|
299
|
+
async getLinkedSuiWallet(walletAddress) {
|
300
|
+
const res = await fetch(`${this.route}/api-be/api/user/suiWallet/${walletAddress}`);
|
301
|
+
if (res.ok) {
|
302
|
+
const data = await res.json();
|
303
|
+
return data.suiWalletAddr;
|
304
|
+
}
|
305
|
+
else {
|
306
|
+
throw Error(`${await res.text()}`);
|
307
|
+
}
|
308
|
+
}
|
323
309
|
async getNonceEnrichedPayload(payload) {
|
324
310
|
const res = await fetch(`${this.route}/api-be/api/nonce`, {
|
325
311
|
method: 'POST',
|
@@ -335,10 +321,30 @@ class PerqApi {
|
|
335
321
|
// Return the enriched payload without the extra nesting
|
336
322
|
return enrichedPayload.payload;
|
337
323
|
}
|
338
|
-
async
|
339
|
-
const
|
340
|
-
|
341
|
-
|
324
|
+
async fetchV2VaultUserBalance(userAddress, vaultAddress) {
|
325
|
+
const res = await fetch(`${this.route}/api-be/api/user/v2/balance/${userAddress}/${vaultAddress}`);
|
326
|
+
if (res.ok) {
|
327
|
+
return await res.json();
|
328
|
+
}
|
329
|
+
else {
|
330
|
+
throw Error(`${await res.text()}`);
|
331
|
+
}
|
332
|
+
}
|
333
|
+
async fetchLiteVaultUserBalance(userAddress, vaultAddress, onChainProjectId) {
|
334
|
+
const res = await fetch(`${this.route}/api-be/api/user/lite/balance/${userAddress}/${vaultAddress}/${onChainProjectId}`);
|
335
|
+
if (res.ok) {
|
336
|
+
const data = await res.json();
|
337
|
+
return {
|
338
|
+
hasWithdrawsToClaim: false,
|
339
|
+
userBalance: data.userBalance,
|
340
|
+
pendingUserBalance: '0',
|
341
|
+
pendingWithdrawalBalance: '0',
|
342
|
+
claimableBalance: '0',
|
343
|
+
};
|
344
|
+
}
|
345
|
+
else {
|
346
|
+
throw Error(`${await res.text()}`);
|
347
|
+
}
|
342
348
|
}
|
343
349
|
}
|
344
350
|
exports.default = PerqApi;
|
package/dist/PerqSdk.d.ts
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
import { BigNumber, Signer, ethers } from 'ethers';
|
2
|
-
import {
|
2
|
+
import { UserRewards, VaultStats, UserVaultBalance, LoyaltyCard, NonceEnrichedSignedPayload, MyPerqData, BeansBalance, BeanEntry, PerqToBeansSwapInfo, VestingInfo, PerqConfig, ReducedProjectData } from './types';
|
3
|
+
import DetailedProjectData from './types/DetailedProjectData';
|
4
|
+
import VaultData from './types/VaultData';
|
3
5
|
export default class PerqSdk {
|
4
6
|
private perqApi;
|
5
7
|
private perqConfig;
|
@@ -11,33 +13,39 @@ export default class PerqSdk {
|
|
11
13
|
private signer?;
|
12
14
|
private yelayLiteSdk?;
|
13
15
|
constructor(perqConfig: PerqConfig, provider?: ethers.providers.JsonRpcProvider);
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
getAllProjects(): Promise<ReducedProjectData[]>;
|
17
|
+
getProjectDetails(projectName: string): Promise<DetailedProjectData>;
|
18
|
+
getAllVaults(): Promise<VaultData[]>;
|
19
|
+
getV2VaultDetails(vaultAddress: string): Promise<VaultData>;
|
20
|
+
getLiteVaultDetails(vaultAddress: string, onChainProjectId: number): Promise<VaultData>;
|
18
21
|
getVaultStats(): Promise<VaultStats>;
|
19
22
|
getTokenPrice(tokenName: string): Promise<number>;
|
20
23
|
updateSigner(newSigner: Signer): Promise<void>;
|
21
|
-
yelayLiteDeposit(tokenAddress: string, vaultAddress: string,
|
24
|
+
yelayLiteDeposit(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>;
|
22
25
|
newDeposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
|
23
26
|
deposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
|
24
27
|
private doDeposit;
|
25
28
|
getTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
|
29
|
+
getSwapAndDepositTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
|
26
30
|
getTokenAllowanceForRecycler(tokenAddress: string): Promise<BigNumber>;
|
27
31
|
getTokenAllowanceForSwapAndRecycler(tokenAddress: string): Promise<BigNumber>;
|
28
32
|
getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
|
33
|
+
getExpectedYelayLiteSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
|
29
34
|
getUserBoostedNfts(vaultAddress: string): Promise<string[]>;
|
30
35
|
getRewardsPerHour(vaultAddress: string): Promise<number>;
|
31
36
|
getRewards(): Promise<UserRewards>;
|
32
37
|
getMyPerqBalance(): Promise<MyPerqData[]>;
|
33
|
-
getYelayLiteUserVaultBalance(vaultAddress: string,
|
38
|
+
getYelayLiteUserVaultBalance(vaultAddress: string, onChainProjectId: number): Promise<UserVaultBalance>;
|
34
39
|
getUserVaultBalance(vaultAddress: string): Promise<UserVaultBalance>;
|
35
40
|
fastWithdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
|
36
41
|
swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
|
37
42
|
newSwapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
|
38
43
|
private doSwapAndDeposit;
|
39
44
|
withdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
|
40
|
-
|
45
|
+
getYelayLiteSwapAndDepositAllowance(tokenAddress: string): Promise<string>;
|
46
|
+
approveYelayLiteSwapAndDeposit(tokenAddress: string, amount: string): Promise<string>;
|
47
|
+
yelayLiteSwapAndDeposit(fromTokenAddress: string, toTokenAddress: string, amount: string, vaultAddress: string, projectId: number): Promise<string>;
|
48
|
+
yelayLiteWithdraw(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>;
|
41
49
|
claimWithdraws(vaultAddress: string): Promise<string>;
|
42
50
|
getBeansBalance(): Promise<BeansBalance>;
|
43
51
|
getBeansHistory(): Promise<BeanEntry[]>;
|
@@ -53,7 +61,7 @@ export default class PerqSdk {
|
|
53
61
|
approveTokenForDeposit(tokenAddress: string, amount: string): Promise<string>;
|
54
62
|
getPerqTokenContractAddress(): string;
|
55
63
|
getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
|
56
|
-
getAllowance(tokenAddress: string, spender: string): Promise<
|
64
|
+
getAllowance(tokenAddress: string, spender: string): Promise<string>;
|
57
65
|
approveAllowance(tokenAddress: string, amount: string, spenderAddress: string): Promise<string>;
|
58
66
|
transferErc20Token(tokenAddress: string, amount: string, receiver: string): Promise<string>;
|
59
67
|
wrapEther(amount: string, tokenAddress: string): Promise<string>;
|
@@ -65,12 +73,15 @@ export default class PerqSdk {
|
|
65
73
|
getAllVestingInfo(beneficiaryAddress: string): Promise<VestingInfo>;
|
66
74
|
claimVestedPerq(amount: string): Promise<string>;
|
67
75
|
burnVestedPerq(amount: string, price: string, deadline: string, signature: string): Promise<string>;
|
76
|
+
linkSuiWalletWithEthWallet(suiWalletAddress: string): Promise<boolean>;
|
77
|
+
getLinkedSuiWallet(): Promise<string>;
|
68
78
|
signPayload<T>(payload: T): Promise<NonceEnrichedSignedPayload<T>>;
|
69
79
|
private getEnrichedPayload;
|
70
80
|
private generateRedeemBagStruct;
|
71
81
|
private getERC20Precission;
|
72
82
|
private getTokenAllowanceForDeposit;
|
73
83
|
private getTokenAllowanceForSwapAndDeposit;
|
74
|
-
|
75
|
-
|
84
|
+
getERC20TokenAllowance(spender: string, tokenAddress: string): Promise<BigNumber>;
|
85
|
+
approveToken(tokenAddress: string, amount: string, spender: string): Promise<string>;
|
86
|
+
yelayLiteWrapAndDepositEth(vaultAddress: string, onChainProjectId: number, amount: string): Promise<any>;
|
76
87
|
}
|
package/dist/PerqSdk.js
CHANGED
@@ -10,6 +10,8 @@ const PerqApi_1 = __importDefault(require("./PerqApi"));
|
|
10
10
|
const contracts_1 = require("./contracts");
|
11
11
|
const WethTokenAbi_json_1 = __importDefault(require("./abi/WethTokenAbi.json"));
|
12
12
|
const sdk_1 = require("@yelay-lite/sdk");
|
13
|
+
const chains_1 = require("./utils/chains");
|
14
|
+
const WETH_DECIMAL_PRECISION = 18;
|
13
15
|
class PerqSdk {
|
14
16
|
perqApi;
|
15
17
|
perqConfig;
|
@@ -24,10 +26,7 @@ class PerqSdk {
|
|
24
26
|
const newSigner = provider?.getSigner();
|
25
27
|
if (provider && newSigner) {
|
26
28
|
this.signer = newSigner;
|
27
|
-
this.yelayLiteSdk = new sdk_1.YelayLiteSdk(
|
28
|
-
backendUrl: perqConfig.yelayLiteBackendUrl,
|
29
|
-
provider: provider,
|
30
|
-
});
|
29
|
+
this.yelayLiteSdk = new sdk_1.YelayLiteSdk(newSigner, perqConfig.yelayLiteSdkConfig);
|
31
30
|
this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(perqConfig.spoolSdkConfig, newSigner);
|
32
31
|
}
|
33
32
|
this.perqConfig = perqConfig;
|
@@ -37,17 +36,20 @@ class PerqSdk {
|
|
37
36
|
this.perqSwapAndRecyclerContract = new contracts_1.PerqSwapAndRecyclerContract(perqConfig.perqSwapAndRecyclerAddress, newSigner);
|
38
37
|
this.perqVestingContract = new contracts_1.PerqVestingContract(perqConfig.perqVestingAddress, newSigner);
|
39
38
|
}
|
40
|
-
async
|
41
|
-
return this.perqApi.
|
39
|
+
async getAllProjects() {
|
40
|
+
return this.perqApi.fetchAllProjects();
|
41
|
+
}
|
42
|
+
async getProjectDetails(projectName) {
|
43
|
+
return this.perqApi.fetchProjetctDetails(projectName);
|
42
44
|
}
|
43
45
|
async getAllVaults() {
|
44
46
|
return this.perqApi.fetchAllVaults();
|
45
47
|
}
|
46
|
-
async
|
47
|
-
return this.perqApi.
|
48
|
+
async getV2VaultDetails(vaultAddress) {
|
49
|
+
return this.perqApi.fetchVaultV2Details(vaultAddress);
|
48
50
|
}
|
49
|
-
async
|
50
|
-
return this.perqApi.
|
51
|
+
async getLiteVaultDetails(vaultAddress, onChainProjectId) {
|
52
|
+
return this.perqApi.fetchVaultLiteDetails(vaultAddress, onChainProjectId);
|
51
53
|
}
|
52
54
|
async getVaultStats() {
|
53
55
|
return this.perqApi.fetchVaultStats();
|
@@ -58,26 +60,19 @@ class PerqSdk {
|
|
58
60
|
async updateSigner(newSigner) {
|
59
61
|
this.signer = newSigner;
|
60
62
|
this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(this.perqConfig.spoolSdkConfig, newSigner);
|
63
|
+
this.yelayLiteSdk = new sdk_1.YelayLiteSdk(newSigner, this.perqConfig.yelayLiteSdkConfig);
|
61
64
|
this.perqTokenContract.updateSigner(newSigner);
|
62
65
|
this.perqTokenRecyclerContract.updateSigner(newSigner);
|
63
66
|
this.perqSwapAndRecyclerContract.updateSigner(newSigner);
|
64
67
|
this.perqVestingContract.updateSigner(newSigner);
|
65
68
|
}
|
66
|
-
async yelayLiteDeposit(tokenAddress, vaultAddress,
|
69
|
+
async yelayLiteDeposit(tokenAddress, vaultAddress, onChainProjectId, amount) {
|
67
70
|
if (!this.signer) {
|
68
71
|
throw Error('No signer provided');
|
69
72
|
}
|
70
73
|
const decimals = await this.getERC20Precission(tokenAddress);
|
71
|
-
const
|
72
|
-
const
|
73
|
-
if (amountWithDecimals > currentTokenAllowance) {
|
74
|
-
await this.approveToken(tokenAddress, amountWithDecimals.toString(), vaultAddress);
|
75
|
-
}
|
76
|
-
const amountToDeposit = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
|
77
|
-
const res = await this.yelayLiteSdk.deposit(this.signer, vaultAddress, yliteProjectId, BigInt(amountToDeposit.toString()));
|
78
|
-
if (!res.success || !res.hash) {
|
79
|
-
throw Error('Error depositing into vault');
|
80
|
-
}
|
74
|
+
const parsedAmountToDeposit = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
75
|
+
const res = await this.yelayLiteSdk.vaults.deposit(vaultAddress, onChainProjectId, BigInt(parsedAmountToDeposit.toString()));
|
81
76
|
return res.hash;
|
82
77
|
}
|
83
78
|
async newDeposit(tokenAddress, vaultAddress, amount) {
|
@@ -121,6 +116,13 @@ class PerqSdk {
|
|
121
116
|
const currentTokenAllowance = await this.getTokenAllowanceForDeposit(tokenAddress);
|
122
117
|
return currentTokenAllowance.toString();
|
123
118
|
}
|
119
|
+
async getSwapAndDepositTokenAllowanceForCurrency(tokenAddress) {
|
120
|
+
if (!this.signer) {
|
121
|
+
throw Error('No signer provided');
|
122
|
+
}
|
123
|
+
const currentTokenAllowance = await this.getTokenAllowanceForSwapAndDeposit(tokenAddress);
|
124
|
+
return currentTokenAllowance.toString();
|
125
|
+
}
|
124
126
|
async getTokenAllowanceForRecycler(tokenAddress) {
|
125
127
|
if (!this.signer) {
|
126
128
|
throw Error('No signer provided');
|
@@ -136,7 +138,10 @@ class PerqSdk {
|
|
136
138
|
return allowance;
|
137
139
|
}
|
138
140
|
async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
|
139
|
-
return this.perqApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals);
|
141
|
+
return this.perqApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, chains_1.ETHEREUM_CHAIN_ID.toString());
|
142
|
+
}
|
143
|
+
async getExpectedYelayLiteSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
|
144
|
+
return this.perqApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, chains_1.BASE_CHAIN_ID.toString());
|
140
145
|
}
|
141
146
|
async getUserBoostedNfts(vaultAddress) {
|
142
147
|
const userAddress = await this.signer.getAddress();
|
@@ -156,51 +161,19 @@ class PerqSdk {
|
|
156
161
|
const myPerqBalance = this.perqApi.fetchMyPerqData(userAddress);
|
157
162
|
return myPerqBalance;
|
158
163
|
}
|
159
|
-
async getYelayLiteUserVaultBalance(vaultAddress,
|
164
|
+
async getYelayLiteUserVaultBalance(vaultAddress, onChainProjectId) {
|
160
165
|
if (!this.signer) {
|
161
166
|
throw Error('No signer provided');
|
162
167
|
}
|
163
168
|
const userAddress = await this.signer.getAddress();
|
164
|
-
|
165
|
-
return balance;
|
169
|
+
return await this.perqApi.fetchLiteVaultUserBalance(userAddress.toLowerCase(), vaultAddress.toLowerCase(), onChainProjectId);
|
166
170
|
}
|
167
171
|
async getUserVaultBalance(vaultAddress) {
|
168
172
|
if (!this.signer) {
|
169
173
|
throw Error('No signer provided');
|
170
174
|
}
|
171
175
|
const userAddress = await this.signer.getAddress();
|
172
|
-
|
173
|
-
const [vault, userVaultBalance, userWnftsForVault] = await Promise.all([
|
174
|
-
this.getVaultDetails(vaultAddress),
|
175
|
-
this.perqApi.fetchUserVaultDeposits(userAddress, vaultAddress),
|
176
|
-
this.perqApi.fetchAllUserWNFTForVault(vaultAddress, userAddress),
|
177
|
-
]);
|
178
|
-
const decimals = await this.getERC20Precission(vault.depositToken.tokenAddress);
|
179
|
-
// Calculate withdrawals
|
180
|
-
let pendingWithdraws = ethers_1.BigNumber.from(0);
|
181
|
-
let claimable = ethers_1.BigNumber.from(0);
|
182
|
-
for (const wnft of userWnftsForVault) {
|
183
|
-
if (!wnft.isBurned && wnft.svtWithdrawn) {
|
184
|
-
const currentBlockNumber = wnft.blockNumber - 1;
|
185
|
-
const assetsPerSvtAtBlock = await this.perqApi.fetchAssetPerSvtAtBlock(vaultAddress, currentBlockNumber);
|
186
|
-
const estimatedValueOfNFT = ethers_1.BigNumber.from(ethers_1.ethers.utils.formatUnits(ethers_1.BigNumber.from(wnft.svtWithdrawn).mul(assetsPerSvtAtBlock), 36).split('.')[0]);
|
187
|
-
if (wnft.isDHWFinished) {
|
188
|
-
// Processed and claimable
|
189
|
-
claimable = claimable.add(estimatedValueOfNFT);
|
190
|
-
}
|
191
|
-
else {
|
192
|
-
// Not processed, pending withdrawal
|
193
|
-
pendingWithdraws = pendingWithdraws.add(estimatedValueOfNFT);
|
194
|
-
}
|
195
|
-
}
|
196
|
-
}
|
197
|
-
return {
|
198
|
-
hasWithdrawsToClaim: claimable.gt(0),
|
199
|
-
userBalance: userVaultBalance.deposited?.toString() || '0',
|
200
|
-
pendingUserBalance: userVaultBalance.pending?.toString() || '0',
|
201
|
-
pendingWithdrawalBalance: ethers_1.ethers.utils.formatUnits(pendingWithdraws, decimals) || '0',
|
202
|
-
claimableBalance: ethers_1.ethers.utils.formatUnits(claimable, decimals) || '0',
|
203
|
-
};
|
176
|
+
return await this.perqApi.fetchV2VaultUserBalance(userAddress.toLowerCase(), vaultAddress.toLowerCase());
|
204
177
|
}
|
205
178
|
async fastWithdraw(vaultAddress, amountToWithdraw) {
|
206
179
|
if (!this.signer) {
|
@@ -210,7 +183,7 @@ class PerqSdk {
|
|
210
183
|
if (!this.signer) {
|
211
184
|
throw Error('No signer provided');
|
212
185
|
}
|
213
|
-
const vault = await this.
|
186
|
+
const vault = await this.getV2VaultDetails(vaultAddress);
|
214
187
|
const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
|
215
188
|
const currentBlockNumber = await this.signer.provider?.getBlockNumber();
|
216
189
|
if (!currentBlockNumber) {
|
@@ -240,7 +213,7 @@ class PerqSdk {
|
|
240
213
|
}
|
241
214
|
}
|
242
215
|
const fromToken = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
|
243
|
-
const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken,
|
216
|
+
const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, this.perqConfig.ethereumSwapperAddress, chains_1.ETHEREUM_CHAIN_ID);
|
244
217
|
const swapDepositBagStruct = {
|
245
218
|
inTokens: [fromTokenAddress],
|
246
219
|
inAmounts: [fromToken],
|
@@ -264,22 +237,41 @@ class PerqSdk {
|
|
264
237
|
if (!this.signer) {
|
265
238
|
throw Error('No signer provided');
|
266
239
|
}
|
267
|
-
const vault = await this.
|
240
|
+
const vault = await this.getV2VaultDetails(vaultAddress);
|
268
241
|
const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
|
269
242
|
const redeemTx = await this.spoolSdk.redeem(redeemBagStruct, userAddress, false);
|
270
243
|
const redeemTxReceipt = await redeemTx.wait();
|
271
244
|
return redeemTxReceipt.transactionHash;
|
272
245
|
}
|
273
|
-
async
|
246
|
+
async getYelayLiteSwapAndDepositAllowance(tokenAddress) {
|
247
|
+
const res = await this.yelayLiteSdk.vaults.vaultWrapperAllowance(tokenAddress);
|
248
|
+
return res.toString();
|
249
|
+
}
|
250
|
+
async approveYelayLiteSwapAndDeposit(tokenAddress, amount) {
|
251
|
+
const decimals = await this.getERC20Precission(tokenAddress);
|
252
|
+
const parsedAmountToApprove = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
253
|
+
const res = await this.yelayLiteSdk.vaults.approveVaultWrapper(tokenAddress, parsedAmountToApprove.toBigInt());
|
254
|
+
return res.hash;
|
255
|
+
}
|
256
|
+
async yelayLiteSwapAndDeposit(fromTokenAddress, toTokenAddress, amount, vaultAddress, projectId) {
|
257
|
+
const decimals = await this.getERC20Precission(fromTokenAddress);
|
258
|
+
const parsedAmountToSwapAndDeposit = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
259
|
+
const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, parsedAmountToSwapAndDeposit, this.perqConfig.baseSwapperAddress, chains_1.BASE_CHAIN_ID);
|
260
|
+
const swapArgsStruct = {
|
261
|
+
tokenIn: swapInfo[0].token,
|
262
|
+
swapTarget: swapInfo[0].swapTarget,
|
263
|
+
swapCallData: swapInfo[0].swapCallData,
|
264
|
+
};
|
265
|
+
const res = await this.yelayLiteSdk.vaults.swapAndDeposit(vaultAddress.toLowerCase(), projectId, parsedAmountToSwapAndDeposit.toBigInt(), swapArgsStruct);
|
266
|
+
return res.hash;
|
267
|
+
}
|
268
|
+
async yelayLiteWithdraw(tokenAddress, vaultAddress, onChainProjectId, amount) {
|
274
269
|
if (!this.signer) {
|
275
270
|
throw Error('No signer provided');
|
276
271
|
}
|
277
272
|
const decimals = await this.getERC20Precission(tokenAddress);
|
278
|
-
const
|
279
|
-
const res = await this.yelayLiteSdk.redeem(
|
280
|
-
if (!res.success || !res.hash) {
|
281
|
-
throw Error('Error withdrawing from vault');
|
282
|
-
}
|
273
|
+
const parsedAmountToWithdraw = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
274
|
+
const res = await this.yelayLiteSdk.vaults.redeem(vaultAddress, onChainProjectId, BigInt(parsedAmountToWithdraw.toString()));
|
283
275
|
return res.hash;
|
284
276
|
}
|
285
277
|
async claimWithdraws(vaultAddress) {
|
@@ -379,7 +371,7 @@ class PerqSdk {
|
|
379
371
|
}
|
380
372
|
async getAllowance(tokenAddress, spender) {
|
381
373
|
const allowance = await this.getERC20TokenAllowance(spender, tokenAddress);
|
382
|
-
return allowance;
|
374
|
+
return allowance.toString();
|
383
375
|
}
|
384
376
|
async approveAllowance(tokenAddress, amount, spenderAddress) {
|
385
377
|
const decimals = await this.getERC20Precission(tokenAddress);
|
@@ -509,6 +501,20 @@ class PerqSdk {
|
|
509
501
|
throw new Error('Failed to get total releasable amount: Unknown error');
|
510
502
|
}
|
511
503
|
}
|
504
|
+
async linkSuiWalletWithEthWallet(suiWalletAddress) {
|
505
|
+
const payload = {
|
506
|
+
suiWalletAddr: suiWalletAddress,
|
507
|
+
};
|
508
|
+
const signedPayload = await this.signPayload(payload);
|
509
|
+
return this.perqApi.linkSuiWalletWithEthWallet(signedPayload);
|
510
|
+
}
|
511
|
+
async getLinkedSuiWallet() {
|
512
|
+
if (!this.signer) {
|
513
|
+
throw new Error('No signer provided');
|
514
|
+
}
|
515
|
+
const walletAddr = await this.signer.getAddress();
|
516
|
+
return this.perqApi.getLinkedSuiWallet(walletAddr);
|
517
|
+
}
|
512
518
|
async signPayload(payload) {
|
513
519
|
if (!this.signer) {
|
514
520
|
throw new Error('No signer provided');
|
@@ -585,5 +591,13 @@ class PerqSdk {
|
|
585
591
|
const receipt = await approveTx.wait();
|
586
592
|
return receipt.transactionHash;
|
587
593
|
}
|
594
|
+
async yelayLiteWrapAndDepositEth(vaultAddress, onChainProjectId, amount) {
|
595
|
+
if (!this.signer) {
|
596
|
+
throw Error('No signer provided');
|
597
|
+
}
|
598
|
+
const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, WETH_DECIMAL_PRECISION);
|
599
|
+
const res = await this.yelayLiteSdk.vaults.depositEth(vaultAddress, onChainProjectId, BigInt(parsedAmount.toString()));
|
600
|
+
return res.hash;
|
601
|
+
}
|
588
602
|
}
|
589
603
|
exports.default = PerqSdk;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { ProjectBacker } from './DeployedProject';
|
2
|
+
import { ReducedProjectData } from './ReducedProjectData';
|
3
|
+
import StretchGoal from './StretchGoal';
|
4
|
+
import VaultData from './VaultData';
|
5
|
+
type DetailedProjectData = ReducedProjectData & {
|
6
|
+
content: string;
|
7
|
+
telegramLink: string;
|
8
|
+
twitterLink: string;
|
9
|
+
mediumLink: string;
|
10
|
+
deckLink: string;
|
11
|
+
roadmapLink: string;
|
12
|
+
economicsLink: string;
|
13
|
+
discordLink: string;
|
14
|
+
docsLink: string;
|
15
|
+
whitepaperLink: string;
|
16
|
+
litepaperLink: string;
|
17
|
+
websiteLink: string;
|
18
|
+
networks: string[];
|
19
|
+
supplyAtLaunch: number;
|
20
|
+
fdv: number;
|
21
|
+
totalSupply: number;
|
22
|
+
projectType: string;
|
23
|
+
yelayVersion: string;
|
24
|
+
wikiLink: string;
|
25
|
+
youTubeLink: string;
|
26
|
+
tikTokLink: string;
|
27
|
+
stretchGoals: StretchGoal[];
|
28
|
+
projectRewardText: string;
|
29
|
+
backers: ProjectBacker[];
|
30
|
+
protocols: string[];
|
31
|
+
vaults: VaultData[];
|
32
|
+
};
|
33
|
+
export default DetailedProjectData;
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
1
|
+
import VaultData from './VaultData';
|
2
|
+
import { Asset } from './index';
|
3
|
+
type MyPerqBalance = {
|
4
4
|
pendingDeposits: number;
|
5
|
-
pendingWithdraws: number;
|
6
5
|
currentlyDeposited: number;
|
7
|
-
|
6
|
+
pendingWithdraws: number;
|
7
|
+
claimable: number;
|
8
8
|
tokenRewards: {
|
9
9
|
[token_address: string]: Asset & {
|
10
10
|
amount: number;
|
@@ -12,4 +12,9 @@ type MyPerqData = Vault & {
|
|
12
12
|
};
|
13
13
|
};
|
14
14
|
};
|
15
|
+
type MyPerqData = VaultData & MyPerqBalance & {
|
16
|
+
ethPrice: number;
|
17
|
+
btcPrice: number;
|
18
|
+
combinedTvl: number;
|
19
|
+
};
|
15
20
|
export default MyPerqData;
|
@@ -1,14 +1,17 @@
|
|
1
|
-
import { SDKConfig } from '@spool.fi/spool-v2-sdk';
|
1
|
+
import { SDKConfig as SpoolSdkConfig } from '@spool.fi/spool-v2-sdk';
|
2
|
+
import { SDKConfig as YelayLikeSdkConfig } from '@yelay-lite/sdk';
|
2
3
|
type PerqConfig = {
|
3
4
|
route: string;
|
4
|
-
spoolSdkConfig:
|
5
|
+
spoolSdkConfig: SpoolSdkConfig;
|
5
6
|
perqTokenAddress: string;
|
6
7
|
perqTokenRecyclerAddress: string;
|
7
8
|
perqSwapAndRecyclerAddress: string;
|
8
9
|
perqVestingAddress: string;
|
9
10
|
swapAndDepositContractAddress: string;
|
11
|
+
ethereumSwapperAddress: string;
|
12
|
+
baseSwapperAddress: string;
|
10
13
|
smartVaultManagerContractAddress: string;
|
11
|
-
|
14
|
+
yelayLiteSdkConfig: YelayLikeSdkConfig;
|
12
15
|
};
|
13
16
|
export default PerqConfig;
|
14
17
|
export declare const PRODUCTION: PerqConfig;
|
package/dist/types/PerqConfig.js
CHANGED
@@ -2,25 +2,31 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.DEVELOPMENT = exports.PRODUCTION = void 0;
|
4
4
|
const spool_v2_sdk_1 = require("@spool.fi/spool-v2-sdk");
|
5
|
+
const sdk_1 = require("@yelay-lite/sdk");
|
6
|
+
const chains_1 = require("../utils/chains");
|
5
7
|
exports.PRODUCTION = {
|
6
8
|
route: 'https://perq.finance',
|
7
9
|
spoolSdkConfig: (0, spool_v2_sdk_1.getMainnetConfig)('https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2/api'),
|
8
10
|
perqTokenAddress: '0x2a414884a549ef5716bc1a4e648d3dc03f08b2cf',
|
9
|
-
perqTokenRecyclerAddress: '
|
10
|
-
perqSwapAndRecyclerAddress: '
|
11
|
-
perqVestingAddress: '
|
11
|
+
perqTokenRecyclerAddress: '0x2fdcdb17799557dce6f26921f12b7fa1dbcd79fa',
|
12
|
+
perqSwapAndRecyclerAddress: '0x15ed53964e6a5ecbebab80a0fc68c2297b0eaa8d',
|
13
|
+
perqVestingAddress: '0x5e19c155c30bdeb83fcfe20a3b6f6eda34b746c5',
|
12
14
|
swapAndDepositContractAddress: '0xd8534197bd587f8226d12e0c864ef2cae6f82f5c',
|
15
|
+
ethereumSwapperAddress: '0x33e52c206d584550193e642c8982f2fff6339994',
|
16
|
+
baseSwapperAddress: sdk_1.sdkConfig[chains_1.BASE_CHAIN_ID].contractAddresses.Swapper,
|
13
17
|
smartVaultManagerContractAddress: '0x23daf34e2b9af02a74dc19cb52af727b19403874',
|
14
|
-
|
18
|
+
yelayLiteSdkConfig: sdk_1.sdkConfig[chains_1.BASE_CHAIN_ID],
|
15
19
|
};
|
16
20
|
exports.DEVELOPMENT = {
|
17
21
|
route: 'https://dev.perq.finance',
|
18
22
|
spoolSdkConfig: (0, spool_v2_sdk_1.getSepoliaConfig)('https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2-sepolia/api'),
|
19
|
-
perqTokenAddress: '
|
20
|
-
perqTokenRecyclerAddress: '
|
21
|
-
perqSwapAndRecyclerAddress: '
|
22
|
-
perqVestingAddress: '
|
23
|
+
perqTokenAddress: '0x707b4cc05645713d8ea04fbc7192a0f2c1503d6e',
|
24
|
+
perqTokenRecyclerAddress: '0x07f2264e199d62afe07e8288ec9d36d155fc3f24',
|
25
|
+
perqSwapAndRecyclerAddress: '0xa4ed357ff233731860ec8d0446fd95756d564014',
|
26
|
+
perqVestingAddress: '0x1d3b9e32a7139718f94be32c797682fff2d1be60',
|
23
27
|
swapAndDepositContractAddress: '0x5fb08e00de169f041711206a0995410884080177',
|
28
|
+
ethereumSwapperAddress: '0xe411921ee9eedfefd7b9ae15bf232bd36949fcbbc',
|
29
|
+
baseSwapperAddress: sdk_1.devSdkConfig[chains_1.BASE_CHAIN_ID].contractAddresses.Swapper,
|
24
30
|
smartVaultManagerContractAddress: '0x2638d6c0b4ef6dee04050fa0b07ca62500435747',
|
25
|
-
|
31
|
+
yelayLiteSdkConfig: sdk_1.devSdkConfig[chains_1.BASE_CHAIN_ID],
|
26
32
|
};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import DepositToken from './DepositToken';
|
2
|
+
import VaultType from './VaultType';
|
3
|
+
export type ReducedProjectData = {
|
4
|
+
projectName: string;
|
5
|
+
logo: string;
|
6
|
+
bannerImage: string;
|
7
|
+
rewardImage: string;
|
8
|
+
rewardTooltipName: string;
|
9
|
+
projectInfoText: string;
|
10
|
+
projectType: string;
|
11
|
+
poolType: VaultType;
|
12
|
+
liveUntil: string;
|
13
|
+
liveFrom: string;
|
14
|
+
tvlUsd: number;
|
15
|
+
tvl: number;
|
16
|
+
vAPY: number;
|
17
|
+
peakTVL: number;
|
18
|
+
isFeatured: boolean;
|
19
|
+
currencies: DepositToken[];
|
20
|
+
};
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import DepositToken from './DepositToken';
|
2
|
+
import Strategy from './Strategy';
|
3
|
+
import StretchGoal from './StretchGoal';
|
4
|
+
import VaultReward from './VaultReward';
|
5
|
+
import VaultType from './VaultType';
|
6
|
+
type VaultData = {
|
7
|
+
depositToken: DepositToken;
|
8
|
+
vaultAddress: string;
|
9
|
+
projectName: string;
|
10
|
+
projectLogo: string;
|
11
|
+
projectType: string;
|
12
|
+
liveFrom: string;
|
13
|
+
liveUntil: string;
|
14
|
+
tvlUsd: number;
|
15
|
+
avgTvl: number;
|
16
|
+
tokenPrice: number;
|
17
|
+
change24h: number;
|
18
|
+
volume24h: number;
|
19
|
+
peakTvl: number;
|
20
|
+
onChainProjectId: number;
|
21
|
+
combinedTvl: number;
|
22
|
+
isActive: boolean;
|
23
|
+
owners: string[];
|
24
|
+
coingeckoId?: string;
|
25
|
+
expectedTge?: string;
|
26
|
+
poolType: VaultType;
|
27
|
+
strategies: Strategy[];
|
28
|
+
rewards: VaultReward[];
|
29
|
+
stretchGoals: StretchGoal[];
|
30
|
+
};
|
31
|
+
export default VaultData;
|
package/dist/types/index.d.ts
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
import Asset from './Asset';
|
2
2
|
import BeanEntry from './BeanEntry';
|
3
3
|
import BeansBalance from './BeansBalance';
|
4
|
+
import DetailedProjectData from './DetailedProjectData';
|
4
5
|
import DeployedProject, { ProjectBacker } from './DeployedProject';
|
5
6
|
import DeployedVault from './DeployedVault';
|
6
7
|
import DepositToken from './DepositToken';
|
7
8
|
import ELoyaltyCardTier from './ELoyaltyCardTier';
|
9
|
+
import LinkWalletPayload from './LinkWalletPayload';
|
8
10
|
import LoyaltyCard from './LoyaltyCard';
|
9
11
|
import MyPerqData from './MyPerqData';
|
10
12
|
import NFTBoost from './NFTBoost';
|
@@ -12,6 +14,7 @@ import PerqConfig from './PerqConfig';
|
|
12
14
|
import PerqToBeansSwapInfo from './PerqToBeansSwapInfo';
|
13
15
|
import QLFastRedeem from './QLFastRedeem';
|
14
16
|
import { BasePayload, NonceEnrichedPayload, NonceEnrichedSignedPayload } from './SignedPayload';
|
17
|
+
import { ReducedProjectData } from './ReducedProjectData';
|
15
18
|
import Strategy from './Strategy';
|
16
19
|
import StretchGoal from './StretchGoal';
|
17
20
|
import SwapInfo from './SwapInfo';
|
@@ -19,10 +22,11 @@ import UpgradeLoyaltyCardPayload from './UpgradeLoyaltyCardPayload';
|
|
19
22
|
import UserRewards from './UserRewards';
|
20
23
|
import UserVaultBalance from './UserVaultBalance';
|
21
24
|
import Vault from './Vault';
|
25
|
+
import VaultData from './VaultData';
|
22
26
|
import VaultReward, { RewardType } from './VaultReward';
|
23
27
|
import VaultStats from './VaultStats';
|
24
28
|
import VaultType from './VaultType';
|
25
29
|
import VestingInfo from './VestingInfo';
|
26
30
|
import YelayVersion from './YelayVersion';
|
27
31
|
import YelayLiteVault from './YelayLiteVault';
|
28
|
-
export { Asset, BasePayload, BeanEntry, BeansBalance, DeployedProject, DeployedVault, DepositToken, ELoyaltyCardTier, LoyaltyCard, MyPerqData, NFTBoost, NonceEnrichedPayload, NonceEnrichedSignedPayload, PerqConfig, PerqToBeansSwapInfo, ProjectBacker, QLFastRedeem, RewardType, Strategy, StretchGoal, SwapInfo, UpgradeLoyaltyCardPayload, UserRewards, UserVaultBalance, Vault, VaultReward, VaultStats, VaultType, VestingInfo, YelayVersion, YelayLiteVault, };
|
32
|
+
export { Asset, BasePayload, BeanEntry, BeansBalance, DeployedProject, DeployedVault, DepositToken, DetailedProjectData, ELoyaltyCardTier, LinkWalletPayload, LoyaltyCard, MyPerqData, NFTBoost, NonceEnrichedPayload, NonceEnrichedSignedPayload, PerqConfig, PerqToBeansSwapInfo, ProjectBacker, QLFastRedeem, ReducedProjectData, RewardType, Strategy, StretchGoal, SwapInfo, UpgradeLoyaltyCardPayload, UserRewards, UserVaultBalance, Vault, VaultData, VaultReward, VaultStats, VaultType, VestingInfo, YelayVersion, YelayLiteVault, };
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dripfi/drip-sdk",
|
3
|
-
"version": "1.4.3-yelay-lite",
|
3
|
+
"version": "1.4.3-yelay-lite-2",
|
4
4
|
"description": "Drip SDK",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -13,8 +13,8 @@
|
|
13
13
|
"pretty": "prettier --write \"./**/*.{js,jsx,mjs,cjs,ts,tsx,json}\""
|
14
14
|
},
|
15
15
|
"dependencies": {
|
16
|
-
"@
|
17
|
-
"@
|
16
|
+
"@yelay-lite/sdk": "0.0.34",
|
17
|
+
"@spool.fi/spool-v2-sdk": "2.0.53",
|
18
18
|
"ethers": "^5.7.2"
|
19
19
|
},
|
20
20
|
"author": "",
|