@dripfi/drip-sdk 1.4.3-yelay-lite → 1.4.3-yelay-lite-1
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 +11 -7
- package/dist/PerqApi.js +56 -20
- package/dist/PerqSdk.d.ts +22 -11
- package/dist/PerqSdk.js +130 -63
- 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,18 +1,20 @@
|
|
1
1
|
import { BigNumber } from 'ethers';
|
2
|
-
import {
|
2
|
+
import { SwapInfo, QLFastRedeem, UserRewards, VaultStats, MyPerqData, LoyaltyCard, BeansBalance, PerqToBeansSwapInfo, BeanEntry, NonceEnrichedSignedPayload, NonceEnrichedPayload, UpgradeLoyaltyCardPayload, ReducedProjectData, DetailedProjectData, LinkWalletPayload } 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[]>;
|
17
|
+
getSwapInfo(fromTokenAddress: string, toTokenAddress: string, amount: BigNumber, fromAddress: string, chainId: number): Promise<SwapInfo[]>;
|
16
18
|
fetchUserSVTBalance(vaultAddress: string, walletAddress: string): Promise<BigNumber>;
|
17
19
|
fetchUserBalance(vaultAddress: string, walletAddress: string): Promise<Record<string, string>>;
|
18
20
|
fetchEnrichedUserWNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
|
@@ -28,6 +30,8 @@ export default class PerqApi {
|
|
28
30
|
fetchMyPerqData(userAddress: string): Promise<MyPerqData[]>;
|
29
31
|
getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
|
30
32
|
fetchBeansHistory(walletAddress: string): Promise<BeanEntry[]>;
|
33
|
+
linkSuiWalletWithEthWallet(signedPayload: NonceEnrichedSignedPayload<LinkWalletPayload>): Promise<boolean>;
|
34
|
+
getLinkedSuiWallet(walletAddress: string): Promise<string>;
|
31
35
|
getNonceEnrichedPayload<T>(payload: T): Promise<NonceEnrichedPayload<T>>;
|
32
36
|
fetchUserVaultDeposits(userAddress: string, vaultAddress: string): Promise<{
|
33
37
|
pending: number;
|
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
|
];
|
@@ -320,6 +331,31 @@ class PerqApi {
|
|
320
331
|
throw Error(`${await res.text()}`);
|
321
332
|
}
|
322
333
|
}
|
334
|
+
async linkSuiWalletWithEthWallet(signedPayload) {
|
335
|
+
const res = await fetch(`${this.route}/api-be/api/user/suiWallet`, {
|
336
|
+
method: 'POST',
|
337
|
+
headers: {
|
338
|
+
'Content-Type': 'application/json',
|
339
|
+
},
|
340
|
+
body: JSON.stringify(signedPayload),
|
341
|
+
});
|
342
|
+
if (res.ok) {
|
343
|
+
return true;
|
344
|
+
}
|
345
|
+
else {
|
346
|
+
throw Error(`${await res.text()}`);
|
347
|
+
}
|
348
|
+
}
|
349
|
+
async getLinkedSuiWallet(walletAddress) {
|
350
|
+
const res = await fetch(`${this.route}/api-be/api/user/suiWallet/${walletAddress}`);
|
351
|
+
if (res.ok) {
|
352
|
+
const data = await res.json();
|
353
|
+
return data.suiWalletAddr;
|
354
|
+
}
|
355
|
+
else {
|
356
|
+
throw Error(`${await res.text()}`);
|
357
|
+
}
|
358
|
+
}
|
323
359
|
async getNonceEnrichedPayload(payload) {
|
324
360
|
const res = await fetch(`${this.route}/api-be/api/nonce`, {
|
325
361
|
method: 'POST',
|
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,49 +161,70 @@ 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
|
-
|
164
|
-
|
165
|
-
|
168
|
+
if (!this.yelayLiteSdk) {
|
169
|
+
throw Error('YelayLiteSdk not initialized');
|
170
|
+
}
|
171
|
+
try {
|
172
|
+
const [userAddress, vault] = await Promise.all([
|
173
|
+
this.signer.getAddress(),
|
174
|
+
this.getLiteVaultDetails(vaultAddress, onChainProjectId),
|
175
|
+
]);
|
176
|
+
const [balance, decimals] = await Promise.all([
|
177
|
+
this.yelayLiteSdk.vaults.balanceOf(vaultAddress, onChainProjectId, userAddress),
|
178
|
+
this.getERC20Precission(vault.depositToken.tokenAddress),
|
179
|
+
]);
|
180
|
+
return {
|
181
|
+
userBalance: ethers_1.ethers.utils.formatUnits(balance.toString(), decimals),
|
182
|
+
pendingUserBalance: '0',
|
183
|
+
pendingWithdrawalBalance: '0',
|
184
|
+
claimableBalance: '0',
|
185
|
+
hasWithdrawsToClaim: false,
|
186
|
+
};
|
187
|
+
}
|
188
|
+
catch (error) {
|
189
|
+
throw new Error(`Failed to get YelayLite user vault balance: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
190
|
+
}
|
166
191
|
}
|
167
192
|
async getUserVaultBalance(vaultAddress) {
|
168
193
|
if (!this.signer) {
|
169
194
|
throw Error('No signer provided');
|
170
195
|
}
|
171
|
-
const userAddress = await this.signer.getAddress();
|
172
|
-
|
173
|
-
|
174
|
-
this.
|
175
|
-
this.perqApi.fetchUserVaultDeposits(userAddress, vaultAddress),
|
176
|
-
this.perqApi.fetchAllUserWNFTForVault(vaultAddress, userAddress),
|
196
|
+
const [userAddress, vault] = await Promise.all([this.signer.getAddress(), this.getV2VaultDetails(vaultAddress)]);
|
197
|
+
const [decimals, userBalanceBreakdown] = await Promise.all([
|
198
|
+
this.getERC20Precission(vault.depositToken.tokenAddress),
|
199
|
+
this.spoolSdk?.getUserBalanceBreakdown({ userAddress, vaultAddress }),
|
177
200
|
]);
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
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
|
-
}
|
201
|
+
if (!userBalanceBreakdown) {
|
202
|
+
return {
|
203
|
+
hasWithdrawsToClaim: false,
|
204
|
+
userBalance: '0',
|
205
|
+
pendingUserBalance: '0',
|
206
|
+
pendingWithdrawalBalance: '0',
|
207
|
+
claimableBalance: '0',
|
208
|
+
};
|
196
209
|
}
|
210
|
+
let claimable = ethers_1.BigNumber.from(0);
|
211
|
+
for (const wnft of userBalanceBreakdown.claimableWNFTs) {
|
212
|
+
const currentBlockNumber = wnft.blockNumber - 1;
|
213
|
+
const assetsPerSvtAtBlock = await this.perqApi.fetchAssetPerSvtAtBlock(vaultAddress, currentBlockNumber);
|
214
|
+
const estimatedValueOfNFT = ethers_1.BigNumber.from(ethers_1.ethers.utils.formatUnits(ethers_1.BigNumber.from(wnft.svtWithdrawn).mul(assetsPerSvtAtBlock), 36).split('.')[0]);
|
215
|
+
claimable = claimable.add(estimatedValueOfNFT);
|
216
|
+
}
|
217
|
+
const currentBalance = Object.values(userBalanceBreakdown.withdrawableAssets)
|
218
|
+
.reduce((acc, curr) => acc + curr, 0)
|
219
|
+
.toString();
|
220
|
+
const pendingDepositBalance = Object.values(userBalanceBreakdown.pendingAssets)
|
221
|
+
.reduce((acc, curr) => acc + curr, 0)
|
222
|
+
.toString();
|
197
223
|
return {
|
198
224
|
hasWithdrawsToClaim: claimable.gt(0),
|
199
|
-
userBalance:
|
200
|
-
pendingUserBalance:
|
201
|
-
pendingWithdrawalBalance:
|
225
|
+
userBalance: currentBalance,
|
226
|
+
pendingUserBalance: pendingDepositBalance,
|
227
|
+
pendingWithdrawalBalance: userBalanceBreakdown.pendingWithdrawal || '0',
|
202
228
|
claimableBalance: ethers_1.ethers.utils.formatUnits(claimable, decimals) || '0',
|
203
229
|
};
|
204
230
|
}
|
@@ -210,7 +236,7 @@ class PerqSdk {
|
|
210
236
|
if (!this.signer) {
|
211
237
|
throw Error('No signer provided');
|
212
238
|
}
|
213
|
-
const vault = await this.
|
239
|
+
const vault = await this.getV2VaultDetails(vaultAddress);
|
214
240
|
const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
|
215
241
|
const currentBlockNumber = await this.signer.provider?.getBlockNumber();
|
216
242
|
if (!currentBlockNumber) {
|
@@ -240,7 +266,7 @@ class PerqSdk {
|
|
240
266
|
}
|
241
267
|
}
|
242
268
|
const fromToken = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
|
243
|
-
const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken,
|
269
|
+
const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, this.perqConfig.ethereumSwapperAddress, chains_1.ETHEREUM_CHAIN_ID);
|
244
270
|
const swapDepositBagStruct = {
|
245
271
|
inTokens: [fromTokenAddress],
|
246
272
|
inAmounts: [fromToken],
|
@@ -264,22 +290,41 @@ class PerqSdk {
|
|
264
290
|
if (!this.signer) {
|
265
291
|
throw Error('No signer provided');
|
266
292
|
}
|
267
|
-
const vault = await this.
|
293
|
+
const vault = await this.getV2VaultDetails(vaultAddress);
|
268
294
|
const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
|
269
295
|
const redeemTx = await this.spoolSdk.redeem(redeemBagStruct, userAddress, false);
|
270
296
|
const redeemTxReceipt = await redeemTx.wait();
|
271
297
|
return redeemTxReceipt.transactionHash;
|
272
298
|
}
|
273
|
-
async
|
299
|
+
async getYelayLiteSwapAndDepositAllowance(tokenAddress) {
|
300
|
+
const res = await this.yelayLiteSdk.vaults.vaultWrapperAllowance(tokenAddress);
|
301
|
+
return res.toString();
|
302
|
+
}
|
303
|
+
async approveYelayLiteSwapAndDeposit(tokenAddress, amount) {
|
304
|
+
const decimals = await this.getERC20Precission(tokenAddress);
|
305
|
+
const parsedAmountToApprove = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
306
|
+
const res = await this.yelayLiteSdk.vaults.approveVaultWrapper(tokenAddress, parsedAmountToApprove.toBigInt());
|
307
|
+
return res.hash;
|
308
|
+
}
|
309
|
+
async yelayLiteSwapAndDeposit(fromTokenAddress, toTokenAddress, amount, vaultAddress, projectId) {
|
310
|
+
const decimals = await this.getERC20Precission(fromTokenAddress);
|
311
|
+
const parsedAmountToSwapAndDeposit = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
312
|
+
const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, parsedAmountToSwapAndDeposit, this.perqConfig.baseSwapperAddress, chains_1.BASE_CHAIN_ID);
|
313
|
+
const swapArgsStruct = {
|
314
|
+
tokenIn: swapInfo[0].token,
|
315
|
+
swapTarget: swapInfo[0].swapTarget,
|
316
|
+
swapCallData: swapInfo[0].swapCallData,
|
317
|
+
};
|
318
|
+
const res = await this.yelayLiteSdk.vaults.swapAndDeposit(vaultAddress.toLowerCase(), projectId, parsedAmountToSwapAndDeposit.toBigInt(), swapArgsStruct);
|
319
|
+
return res.hash;
|
320
|
+
}
|
321
|
+
async yelayLiteWithdraw(tokenAddress, vaultAddress, onChainProjectId, amount) {
|
274
322
|
if (!this.signer) {
|
275
323
|
throw Error('No signer provided');
|
276
324
|
}
|
277
325
|
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
|
-
}
|
326
|
+
const parsedAmountToWithdraw = ethers_1.ethers.utils.parseUnits(amount, decimals);
|
327
|
+
const res = await this.yelayLiteSdk.vaults.redeem(vaultAddress, onChainProjectId, BigInt(parsedAmountToWithdraw.toString()));
|
283
328
|
return res.hash;
|
284
329
|
}
|
285
330
|
async claimWithdraws(vaultAddress) {
|
@@ -379,7 +424,7 @@ class PerqSdk {
|
|
379
424
|
}
|
380
425
|
async getAllowance(tokenAddress, spender) {
|
381
426
|
const allowance = await this.getERC20TokenAllowance(spender, tokenAddress);
|
382
|
-
return allowance;
|
427
|
+
return allowance.toString();
|
383
428
|
}
|
384
429
|
async approveAllowance(tokenAddress, amount, spenderAddress) {
|
385
430
|
const decimals = await this.getERC20Precission(tokenAddress);
|
@@ -509,6 +554,20 @@ class PerqSdk {
|
|
509
554
|
throw new Error('Failed to get total releasable amount: Unknown error');
|
510
555
|
}
|
511
556
|
}
|
557
|
+
async linkSuiWalletWithEthWallet(suiWalletAddress) {
|
558
|
+
const payload = {
|
559
|
+
suiWalletAddr: suiWalletAddress,
|
560
|
+
};
|
561
|
+
const signedPayload = await this.signPayload(payload);
|
562
|
+
return this.perqApi.linkSuiWalletWithEthWallet(signedPayload);
|
563
|
+
}
|
564
|
+
async getLinkedSuiWallet() {
|
565
|
+
if (!this.signer) {
|
566
|
+
throw new Error('No signer provided');
|
567
|
+
}
|
568
|
+
const walletAddr = await this.signer.getAddress();
|
569
|
+
return this.perqApi.getLinkedSuiWallet(walletAddr);
|
570
|
+
}
|
512
571
|
async signPayload(payload) {
|
513
572
|
if (!this.signer) {
|
514
573
|
throw new Error('No signer provided');
|
@@ -585,5 +644,13 @@ class PerqSdk {
|
|
585
644
|
const receipt = await approveTx.wait();
|
586
645
|
return receipt.transactionHash;
|
587
646
|
}
|
647
|
+
async yelayLiteWrapAndDepositEth(vaultAddress, onChainProjectId, amount) {
|
648
|
+
if (!this.signer) {
|
649
|
+
throw Error('No signer provided');
|
650
|
+
}
|
651
|
+
const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, WETH_DECIMAL_PRECISION);
|
652
|
+
const res = await this.yelayLiteSdk.vaults.depositEth(vaultAddress, onChainProjectId, BigInt(parsedAmount.toString()));
|
653
|
+
return res.hash;
|
654
|
+
}
|
588
655
|
}
|
589
656
|
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: '0xf9a42821bc7b13c47a6c934704645111ead836a9',
|
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: '0xf9a42821bc7b13c47a6c934704645111ead836a9',
|
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-1",
|
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.25",
|
17
|
+
"@spool.fi/spool-v2-sdk": "2.0.53",
|
18
18
|
"ethers": "^5.7.2"
|
19
19
|
},
|
20
20
|
"author": "",
|