@dripfi/drip-sdk 1.4.2 → 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 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,16 +1,20 @@
1
1
  import { BigNumber } from 'ethers';
2
- import { Vault, SwapInfo, QLFastRedeem, UserRewards, VaultStats, MyPerqData, LoyaltyCard, BeansBalance, PerqToBeansSwapInfo, BeanEntry, NonceEnrichedSignedPayload, NonceEnrichedPayload, UpgradeLoyaltyCardPayload } from './types';
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<Vault[]>;
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>;
7
12
  fetchTokenPrice(tokenName: string): Promise<number>;
8
- 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>;
9
14
  getUserBoostedNfts(walletAddress: string, vaultAddress: string): Promise<string[]>;
10
15
  fetchVaultStats(): Promise<VaultStats>;
11
- fetchVaultDetails(vaultAddress: string): Promise<Vault>;
12
16
  fetchRewardsPerHour(walletAddress: string, vaultAddress: string): Promise<number>;
13
- 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[]>;
14
18
  fetchUserSVTBalance(vaultAddress: string, walletAddress: string): Promise<BigNumber>;
15
19
  fetchUserBalance(vaultAddress: string, walletAddress: string): Promise<Record<string, string>>;
16
20
  fetchEnrichedUserWNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
@@ -26,6 +30,8 @@ export default class PerqApi {
26
30
  fetchMyPerqData(userAddress: string): Promise<MyPerqData[]>;
27
31
  getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
28
32
  fetchBeansHistory(walletAddress: string): Promise<BeanEntry[]>;
33
+ linkSuiWalletWithEthWallet(signedPayload: NonceEnrichedSignedPayload<LinkWalletPayload>): Promise<boolean>;
34
+ getLinkedSuiWallet(walletAddress: string): Promise<string>;
29
35
  getNonceEnrichedPayload<T>(payload: T): Promise<NonceEnrichedPayload<T>>;
30
36
  fetchUserVaultDeposits(userAddress: string, vaultAddress: string): Promise<{
31
37
  pending: number;
package/dist/PerqApi.js CHANGED
@@ -18,6 +18,46 @@ class PerqApi {
18
18
  throw Error(`${await res.text()}`);
19
19
  }
20
20
  }
21
+ async fetchVaultV2Details(vaultAddress) {
22
+ const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
23
+ if (res.ok) {
24
+ const data = (await res.json());
25
+ return data;
26
+ }
27
+ else {
28
+ throw Error(`${await res.text()}`);
29
+ }
30
+ }
31
+ async fetchVaultLiteDetails(vaultAddress, onChainProjectId) {
32
+ const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}?onChainProjectId=${onChainProjectId}`);
33
+ if (res.ok) {
34
+ const data = (await res.json());
35
+ return data;
36
+ }
37
+ else {
38
+ throw Error(`${await res.text()}`);
39
+ }
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
+ }
21
61
  async fetchTokenPrice(tokenName) {
22
62
  const res = await fetch(`${this.route}/api-be/api/tokenPrice?tokenName=${tokenName}`);
23
63
  if (res.ok) {
@@ -28,12 +68,13 @@ class PerqApi {
28
68
  throw Error(`${await res.text()}`);
29
69
  }
30
70
  }
31
- async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
71
+ async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, chainId) {
32
72
  const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, decimals);
33
73
  const queryParams = new URLSearchParams({
34
74
  from: fromTokenAddress,
35
75
  to: toTokenAddress,
36
76
  amount: parsedAmount.toString(),
77
+ chainId: chainId,
37
78
  });
38
79
  const res = await fetch(`${this.route}/api-be/api/1inch/swap?${queryParams}`);
39
80
  if (res.ok) {
@@ -64,16 +105,6 @@ class PerqApi {
64
105
  throw Error(`${await res.text()}`);
65
106
  }
66
107
  }
67
- async fetchVaultDetails(vaultAddress) {
68
- const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
69
- if (res.ok) {
70
- const data = (await res.json());
71
- return data;
72
- }
73
- else {
74
- throw Error(`${await res.text()}`);
75
- }
76
- }
77
108
  async fetchRewardsPerHour(walletAddress, vaultAddress) {
78
109
  const res = await fetch(`${this.route}/api-be/api/user/${walletAddress}/rewardsPerHour/${vaultAddress}`);
79
110
  if (res.ok) {
@@ -84,18 +115,18 @@ class PerqApi {
84
115
  throw Error(`${await res.text()}`);
85
116
  }
86
117
  }
87
- async getSwapInfo(fromTokenAddress, toTokenAddress, amount, fromAddress) {
118
+ async getSwapInfo(fromTokenAddress, toTokenAddress, amount, fromAddress, chainId) {
88
119
  if (fromTokenAddress === toTokenAddress && fromTokenAddress === WETH_TOKEN_ADDRESS) {
89
120
  return [];
90
121
  }
91
- 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
+ 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`;
92
123
  const res = await fetch(url);
93
124
  if (res.ok) {
94
125
  const data = (await res.json());
95
126
  return [
96
127
  {
97
128
  swapTarget: data.tx.to,
98
- token: data.fromToken.address,
129
+ token: data.srcToken.address,
99
130
  swapCallData: data.tx.data,
100
131
  },
101
132
  ];
@@ -300,6 +331,31 @@ class PerqApi {
300
331
  throw Error(`${await res.text()}`);
301
332
  }
302
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
+ }
303
359
  async getNonceEnrichedPayload(payload) {
304
360
  const res = await fetch(`${this.route}/api-be/api/nonce`, {
305
361
  method: 'POST',
package/dist/PerqSdk.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { BigNumber, Signer } from 'ethers';
2
- import { Vault, UserRewards, VaultStats, UserVaultBalance, LoyaltyCard, NonceEnrichedSignedPayload, MyPerqData, BeansBalance, BeanEntry, PerqToBeansSwapInfo, VestingInfo } from './types';
3
- import { PerqConfig } from './types/index';
1
+ import { BigNumber, Signer, ethers } from 'ethers';
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';
4
5
  export default class PerqSdk {
5
6
  private perqApi;
6
7
  private perqConfig;
@@ -10,29 +11,41 @@ export default class PerqSdk {
10
11
  private perqVestingContract;
11
12
  private spoolSdk?;
12
13
  private signer?;
13
- constructor(perqConfig: PerqConfig, signer?: Signer);
14
- getAllVaults(): Promise<Vault[]>;
15
- getVaultDetails(vaultAddress: string): Promise<Vault>;
14
+ private yelayLiteSdk?;
15
+ constructor(perqConfig: PerqConfig, provider?: ethers.providers.JsonRpcProvider);
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>;
16
21
  getVaultStats(): Promise<VaultStats>;
17
22
  getTokenPrice(tokenName: string): Promise<number>;
18
23
  updateSigner(newSigner: Signer): Promise<void>;
24
+ yelayLiteDeposit(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>;
19
25
  newDeposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
20
26
  deposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
21
27
  private doDeposit;
22
28
  getTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
29
+ getSwapAndDepositTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
23
30
  getTokenAllowanceForRecycler(tokenAddress: string): Promise<BigNumber>;
24
31
  getTokenAllowanceForSwapAndRecycler(tokenAddress: string): Promise<BigNumber>;
25
32
  getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
33
+ getExpectedYelayLiteSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
26
34
  getUserBoostedNfts(vaultAddress: string): Promise<string[]>;
27
35
  getRewardsPerHour(vaultAddress: string): Promise<number>;
28
36
  getRewards(): Promise<UserRewards>;
29
37
  getMyPerqBalance(): Promise<MyPerqData[]>;
38
+ getYelayLiteUserVaultBalance(vaultAddress: string, onChainProjectId: number): Promise<UserVaultBalance>;
30
39
  getUserVaultBalance(vaultAddress: string): Promise<UserVaultBalance>;
31
40
  fastWithdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
32
41
  swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
33
42
  newSwapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
34
43
  private doSwapAndDeposit;
35
44
  withdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
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>;
36
49
  claimWithdraws(vaultAddress: string): Promise<string>;
37
50
  getBeansBalance(): Promise<BeansBalance>;
38
51
  getBeansHistory(): Promise<BeanEntry[]>;
@@ -48,6 +61,8 @@ export default class PerqSdk {
48
61
  approveTokenForDeposit(tokenAddress: string, amount: string): Promise<string>;
49
62
  getPerqTokenContractAddress(): string;
50
63
  getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
64
+ getAllowance(tokenAddress: string, spender: string): Promise<string>;
65
+ approveAllowance(tokenAddress: string, amount: string, spenderAddress: string): Promise<string>;
51
66
  transferErc20Token(tokenAddress: string, amount: string, receiver: string): Promise<string>;
52
67
  wrapEther(amount: string, tokenAddress: string): Promise<string>;
53
68
  getVestingStart(): Promise<string>;
@@ -58,12 +73,15 @@ export default class PerqSdk {
58
73
  getAllVestingInfo(beneficiaryAddress: string): Promise<VestingInfo>;
59
74
  claimVestedPerq(amount: string): Promise<string>;
60
75
  burnVestedPerq(amount: string, price: string, deadline: string, signature: string): Promise<string>;
76
+ linkSuiWalletWithEthWallet(suiWalletAddress: string): Promise<boolean>;
77
+ getLinkedSuiWallet(): Promise<string>;
61
78
  signPayload<T>(payload: T): Promise<NonceEnrichedSignedPayload<T>>;
62
79
  private getEnrichedPayload;
63
80
  private generateRedeemBagStruct;
64
81
  private getERC20Precission;
65
82
  private getTokenAllowanceForDeposit;
66
83
  private getTokenAllowanceForSwapAndDeposit;
67
- private getERC20TokenAllowance;
68
- private approveToken;
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>;
69
87
  }
package/dist/PerqSdk.js CHANGED
@@ -9,6 +9,9 @@ const spool_v2_sdk_1 = require("@spool.fi/spool-v2-sdk");
9
9
  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
+ const sdk_1 = require("@yelay-lite/sdk");
13
+ const chains_1 = require("./utils/chains");
14
+ const WETH_DECIMAL_PRECISION = 18;
12
15
  class PerqSdk {
13
16
  perqApi;
14
17
  perqConfig;
@@ -18,23 +21,35 @@ class PerqSdk {
18
21
  perqVestingContract;
19
22
  spoolSdk;
20
23
  signer;
21
- constructor(perqConfig, signer) {
22
- if (this.signer) {
23
- this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(perqConfig.spoolSdkConfig, this.signer);
24
+ yelayLiteSdk;
25
+ constructor(perqConfig, provider) {
26
+ const newSigner = provider?.getSigner();
27
+ if (provider && newSigner) {
28
+ this.signer = newSigner;
29
+ this.yelayLiteSdk = new sdk_1.YelayLiteSdk(newSigner, perqConfig.yelayLiteSdkConfig);
30
+ this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(perqConfig.spoolSdkConfig, newSigner);
24
31
  }
25
32
  this.perqConfig = perqConfig;
26
- this.signer = signer;
27
33
  this.perqApi = new PerqApi_1.default(perqConfig.route);
28
- this.perqTokenContract = new contracts_1.PerqTokenContract(perqConfig.perqTokenAddress, signer);
29
- this.perqTokenRecyclerContract = new contracts_1.PerqTokenRecyclerContract(perqConfig.perqTokenRecyclerAddress, signer);
30
- this.perqSwapAndRecyclerContract = new contracts_1.PerqSwapAndRecyclerContract(perqConfig.perqSwapAndRecyclerAddress, signer);
31
- this.perqVestingContract = new contracts_1.PerqVestingContract(perqConfig.perqVestingAddress, signer);
34
+ this.perqTokenContract = new contracts_1.PerqTokenContract(perqConfig.perqTokenAddress, newSigner);
35
+ this.perqTokenRecyclerContract = new contracts_1.PerqTokenRecyclerContract(perqConfig.perqTokenRecyclerAddress, newSigner);
36
+ this.perqSwapAndRecyclerContract = new contracts_1.PerqSwapAndRecyclerContract(perqConfig.perqSwapAndRecyclerAddress, newSigner);
37
+ this.perqVestingContract = new contracts_1.PerqVestingContract(perqConfig.perqVestingAddress, newSigner);
38
+ }
39
+ async getAllProjects() {
40
+ return this.perqApi.fetchAllProjects();
41
+ }
42
+ async getProjectDetails(projectName) {
43
+ return this.perqApi.fetchProjetctDetails(projectName);
32
44
  }
33
45
  async getAllVaults() {
34
46
  return this.perqApi.fetchAllVaults();
35
47
  }
36
- async getVaultDetails(vaultAddress) {
37
- return this.perqApi.fetchVaultDetails(vaultAddress);
48
+ async getV2VaultDetails(vaultAddress) {
49
+ return this.perqApi.fetchVaultV2Details(vaultAddress);
50
+ }
51
+ async getLiteVaultDetails(vaultAddress, onChainProjectId) {
52
+ return this.perqApi.fetchVaultLiteDetails(vaultAddress, onChainProjectId);
38
53
  }
39
54
  async getVaultStats() {
40
55
  return this.perqApi.fetchVaultStats();
@@ -45,11 +60,21 @@ class PerqSdk {
45
60
  async updateSigner(newSigner) {
46
61
  this.signer = newSigner;
47
62
  this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(this.perqConfig.spoolSdkConfig, newSigner);
63
+ this.yelayLiteSdk = new sdk_1.YelayLiteSdk(newSigner, this.perqConfig.yelayLiteSdkConfig);
48
64
  this.perqTokenContract.updateSigner(newSigner);
49
65
  this.perqTokenRecyclerContract.updateSigner(newSigner);
50
66
  this.perqSwapAndRecyclerContract.updateSigner(newSigner);
51
67
  this.perqVestingContract.updateSigner(newSigner);
52
68
  }
69
+ async yelayLiteDeposit(tokenAddress, vaultAddress, onChainProjectId, amount) {
70
+ if (!this.signer) {
71
+ throw Error('No signer provided');
72
+ }
73
+ const decimals = await this.getERC20Precission(tokenAddress);
74
+ const parsedAmountToDeposit = ethers_1.ethers.utils.parseUnits(amount, decimals);
75
+ const res = await this.yelayLiteSdk.vaults.deposit(vaultAddress, onChainProjectId, BigInt(parsedAmountToDeposit.toString()));
76
+ return res.hash;
77
+ }
53
78
  async newDeposit(tokenAddress, vaultAddress, amount) {
54
79
  return this.doDeposit(tokenAddress, vaultAddress, amount, false);
55
80
  }
@@ -91,6 +116,13 @@ class PerqSdk {
91
116
  const currentTokenAllowance = await this.getTokenAllowanceForDeposit(tokenAddress);
92
117
  return currentTokenAllowance.toString();
93
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
+ }
94
126
  async getTokenAllowanceForRecycler(tokenAddress) {
95
127
  if (!this.signer) {
96
128
  throw Error('No signer provided');
@@ -106,7 +138,10 @@ class PerqSdk {
106
138
  return allowance;
107
139
  }
108
140
  async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
109
- 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());
110
145
  }
111
146
  async getUserBoostedNfts(vaultAddress) {
112
147
  const userAddress = await this.signer.getAddress();
@@ -126,41 +161,70 @@ class PerqSdk {
126
161
  const myPerqBalance = this.perqApi.fetchMyPerqData(userAddress);
127
162
  return myPerqBalance;
128
163
  }
164
+ async getYelayLiteUserVaultBalance(vaultAddress, onChainProjectId) {
165
+ if (!this.signer) {
166
+ throw Error('No signer provided');
167
+ }
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
+ }
191
+ }
129
192
  async getUserVaultBalance(vaultAddress) {
130
193
  if (!this.signer) {
131
194
  throw Error('No signer provided');
132
195
  }
133
- const userAddress = await this.signer.getAddress();
134
- // Parallel fetch of vault, deposits and wnfts
135
- const [vault, userVaultBalance, userWnftsForVault] = await Promise.all([
136
- this.getVaultDetails(vaultAddress),
137
- this.perqApi.fetchUserVaultDeposits(userAddress, vaultAddress),
138
- 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 }),
139
200
  ]);
140
- const decimals = await this.getERC20Precission(vault.depositToken.tokenAddress);
141
- // Calculate withdrawals
142
- let pendingWithdraws = ethers_1.BigNumber.from(0);
143
- let claimable = ethers_1.BigNumber.from(0);
144
- for (const wnft of userWnftsForVault) {
145
- if (!wnft.isBurned && wnft.svtWithdrawn) {
146
- const currentBlockNumber = wnft.blockNumber - 1;
147
- const assetsPerSvtAtBlock = await this.perqApi.fetchAssetPerSvtAtBlock(vaultAddress, currentBlockNumber);
148
- const estimatedValueOfNFT = ethers_1.BigNumber.from(ethers_1.ethers.utils.formatUnits(ethers_1.BigNumber.from(wnft.svtWithdrawn).mul(assetsPerSvtAtBlock), 36).split('.')[0]);
149
- if (wnft.isDHWFinished) {
150
- // Processed and claimable
151
- claimable = claimable.add(estimatedValueOfNFT);
152
- }
153
- else {
154
- // Not processed, pending withdrawal
155
- pendingWithdraws = pendingWithdraws.add(estimatedValueOfNFT);
156
- }
157
- }
201
+ if (!userBalanceBreakdown) {
202
+ return {
203
+ hasWithdrawsToClaim: false,
204
+ userBalance: '0',
205
+ pendingUserBalance: '0',
206
+ pendingWithdrawalBalance: '0',
207
+ claimableBalance: '0',
208
+ };
158
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();
159
223
  return {
160
224
  hasWithdrawsToClaim: claimable.gt(0),
161
- userBalance: userVaultBalance.deposited?.toString() || '0',
162
- pendingUserBalance: userVaultBalance.pending?.toString() || '0',
163
- pendingWithdrawalBalance: ethers_1.ethers.utils.formatUnits(pendingWithdraws, decimals) || '0',
225
+ userBalance: currentBalance,
226
+ pendingUserBalance: pendingDepositBalance,
227
+ pendingWithdrawalBalance: userBalanceBreakdown.pendingWithdrawal || '0',
164
228
  claimableBalance: ethers_1.ethers.utils.formatUnits(claimable, decimals) || '0',
165
229
  };
166
230
  }
@@ -172,7 +236,7 @@ class PerqSdk {
172
236
  if (!this.signer) {
173
237
  throw Error('No signer provided');
174
238
  }
175
- const vault = await this.getVaultDetails(vaultAddress);
239
+ const vault = await this.getV2VaultDetails(vaultAddress);
176
240
  const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
177
241
  const currentBlockNumber = await this.signer.provider?.getBlockNumber();
178
242
  if (!currentBlockNumber) {
@@ -202,7 +266,7 @@ class PerqSdk {
202
266
  }
203
267
  }
204
268
  const fromToken = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
205
- const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, userAddress);
269
+ const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, this.perqConfig.ethereumSwapperAddress, chains_1.ETHEREUM_CHAIN_ID);
206
270
  const swapDepositBagStruct = {
207
271
  inTokens: [fromTokenAddress],
208
272
  inAmounts: [fromToken],
@@ -226,12 +290,43 @@ class PerqSdk {
226
290
  if (!this.signer) {
227
291
  throw Error('No signer provided');
228
292
  }
229
- const vault = await this.getVaultDetails(vaultAddress);
293
+ const vault = await this.getV2VaultDetails(vaultAddress);
230
294
  const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
231
295
  const redeemTx = await this.spoolSdk.redeem(redeemBagStruct, userAddress, false);
232
296
  const redeemTxReceipt = await redeemTx.wait();
233
297
  return redeemTxReceipt.transactionHash;
234
298
  }
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) {
322
+ if (!this.signer) {
323
+ throw Error('No signer provided');
324
+ }
325
+ const decimals = await this.getERC20Precission(tokenAddress);
326
+ const parsedAmountToWithdraw = ethers_1.ethers.utils.parseUnits(amount, decimals);
327
+ const res = await this.yelayLiteSdk.vaults.redeem(vaultAddress, onChainProjectId, BigInt(parsedAmountToWithdraw.toString()));
328
+ return res.hash;
329
+ }
235
330
  async claimWithdraws(vaultAddress) {
236
331
  const userAddress = await this.signer.getAddress();
237
332
  if (!this.signer) {
@@ -279,15 +374,6 @@ class PerqSdk {
279
374
  if (this.perqConfig.perqSwapAndRecyclerAddress === ethers_1.ethers.constants.AddressZero) {
280
375
  throw Error('Recycler contract address not defined');
281
376
  }
282
- console.log('swap and recycle ERC-20 with this: ', {
283
- beneficiary,
284
- path,
285
- amountInWithDecimals,
286
- minAmountOutWithDecimals,
287
- price,
288
- deadline,
289
- signature,
290
- });
291
377
  const swapAndRecycleTx = await this.perqSwapAndRecyclerContract.swapAndRecycle(beneficiary, path, amountInWithDecimals, minAmountOutWithDecimals, price, deadline, signature);
292
378
  const receipt = await swapAndRecycleTx.wait();
293
379
  return receipt.transactionHash;
@@ -336,6 +422,15 @@ class PerqSdk {
336
422
  async getSwapPerqForBeansInfo() {
337
423
  return this.perqApi.getSwapPerqForBeansInfo();
338
424
  }
425
+ async getAllowance(tokenAddress, spender) {
426
+ const allowance = await this.getERC20TokenAllowance(spender, tokenAddress);
427
+ return allowance.toString();
428
+ }
429
+ async approveAllowance(tokenAddress, amount, spenderAddress) {
430
+ const decimals = await this.getERC20Precission(tokenAddress);
431
+ const amountWithDecimals = parseFloat(parseFloat(amount).toFixed(decimals));
432
+ return await this.approveToken(tokenAddress, amountWithDecimals.toString(), spenderAddress);
433
+ }
339
434
  async transferErc20Token(tokenAddress, amount, receiver) {
340
435
  if (!this.signer) {
341
436
  throw Error('No signer provided');
@@ -459,6 +554,20 @@ class PerqSdk {
459
554
  throw new Error('Failed to get total releasable amount: Unknown error');
460
555
  }
461
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
+ }
462
571
  async signPayload(payload) {
463
572
  if (!this.signer) {
464
573
  throw new Error('No signer provided');
@@ -535,5 +644,13 @@ class PerqSdk {
535
644
  const receipt = await approveTx.wait();
536
645
  return receipt.transactionHash;
537
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
+ }
538
655
  }
539
656
  exports.default = PerqSdk;
@@ -39,6 +39,9 @@ type DeployedProject = {
39
39
  bannerImage?: string;
40
40
  rewardImage?: string;
41
41
  rewardTooltipName?: string;
42
+ liveUntil: string;
43
+ liveFrom: string;
44
+ distributionType: string;
42
45
  };
43
46
  export default DeployedProject;
44
47
  export type ProjectBacker = {
@@ -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;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ type LinkWalletPayload = {
2
+ suiWalletAddr: string;
3
+ };
4
+ export default LinkWalletPayload;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,10 +1,10 @@
1
- import { Asset, Vault } from './index';
2
- type MyPerqData = Vault & {
3
- claimable: number;
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
- ethPrice: number;
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,13 +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: SDKConfig;
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;
14
+ yelayLiteSdkConfig: YelayLikeSdkConfig;
11
15
  };
12
16
  export default PerqConfig;
13
17
  export declare const PRODUCTION: PerqConfig;
@@ -2,23 +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: '0x2FdcdB17799557Dce6f26921f12B7FA1DbcD79FA',
10
- perqSwapAndRecyclerAddress: '0x15ED53964E6a5EcbEBAb80A0Fc68c2297b0eaA8D',
11
- perqVestingAddress: '0x5e19C155C30bDEB83FCFE20a3b6f6Eda34B746c5',
11
+ perqTokenRecyclerAddress: '0x2fdcdb17799557dce6f26921f12b7fa1dbcd79fa',
12
+ perqSwapAndRecyclerAddress: '0x15ed53964e6a5ecbebab80a0fc68c2297b0eaa8d',
13
+ perqVestingAddress: '0x5e19c155c30bdeb83fcfe20a3b6f6eda34b746c5',
12
14
  swapAndDepositContractAddress: '0xd8534197bd587f8226d12e0c864ef2cae6f82f5c',
15
+ ethereumSwapperAddress: '0x33e52c206d584550193e642c8982f2fff6339994',
16
+ baseSwapperAddress: '0xf9a42821bc7b13c47a6c934704645111ead836a9',
13
17
  smartVaultManagerContractAddress: '0x23daf34e2b9af02a74dc19cb52af727b19403874',
18
+ yelayLiteSdkConfig: sdk_1.sdkConfig[chains_1.BASE_CHAIN_ID],
14
19
  };
15
20
  exports.DEVELOPMENT = {
16
21
  route: 'https://dev.perq.finance',
17
22
  spoolSdkConfig: (0, spool_v2_sdk_1.getSepoliaConfig)('https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2-sepolia/api'),
18
- perqTokenAddress: '0x707B4Cc05645713d8Ea04FBC7192A0f2c1503d6E',
19
- perqTokenRecyclerAddress: '0x07F2264E199D62afe07E8288eC9D36d155fc3f24',
20
- perqSwapAndRecyclerAddress: '0xA4ed357FF233731860Ec8D0446FD95756d564014',
21
- perqVestingAddress: '0x1d3B9E32a7139718f94BE32c797682fFf2D1bE60',
23
+ perqTokenAddress: '0x707b4cc05645713d8ea04fbc7192a0f2c1503d6e',
24
+ perqTokenRecyclerAddress: '0x07f2264e199d62afe07e8288ec9d36d155fc3f24',
25
+ perqSwapAndRecyclerAddress: '0xa4ed357ff233731860ec8d0446fd95756d564014',
26
+ perqVestingAddress: '0x1d3b9e32a7139718f94be32c797682fff2d1be60',
22
27
  swapAndDepositContractAddress: '0x5fb08e00de169f041711206a0995410884080177',
28
+ ethereumSwapperAddress: '0xe411921ee9eedfefd7b9ae15bf232bd36949fcbbc',
29
+ baseSwapperAddress: '0xf9a42821bc7b13c47a6c934704645111ead836a9',
23
30
  smartVaultManagerContractAddress: '0x2638d6c0b4ef6dee04050fa0b07ca62500435747',
31
+ yelayLiteSdkConfig: sdk_1.devSdkConfig[chains_1.BASE_CHAIN_ID],
24
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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ type YelayLiteVault = {
2
+ id: number;
3
+ depositTokenAddress: string;
4
+ depositTokenSymbol: string;
5
+ decimals: number;
6
+ projectName: string;
7
+ projectLogo: string;
8
+ address: string;
9
+ apy: string;
10
+ };
11
+ export default YelayLiteVault;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,9 +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
- 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, };
31
+ import YelayLiteVault from './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, };
@@ -0,0 +1,2 @@
1
+ export declare const BASE_CHAIN_ID = 8453;
2
+ export declare const ETHEREUM_CHAIN_ID = 1;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ETHEREUM_CHAIN_ID = exports.BASE_CHAIN_ID = void 0;
4
+ exports.BASE_CHAIN_ID = 8453;
5
+ exports.ETHEREUM_CHAIN_ID = 1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dripfi/drip-sdk",
3
- "version": "1.4.2",
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
- "@spool.fi/spool-v2-sdk": "2.0.44",
17
- "@yelay-lite/sdk": "0.0.11",
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": "",