@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 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 { Vault, SwapInfo, QLFastRedeem, UserRewards, VaultStats, MyPerqData, LoyaltyCard, BeansBalance, PerqToBeansSwapInfo, BeanEntry, NonceEnrichedSignedPayload, NonceEnrichedPayload, UpgradeLoyaltyCardPayload, YelayLiteVault } 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
- fetchAllYelayLiteVaults(): Promise<YelayLiteVault[]>;
8
- fetchYelayLiteVaultDetails(vaultAddress: string, yliteProjectId: number): Promise<YelayLiteVault>;
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 fetchAllYelayLiteVaults() {
22
- const res = await fetch(`${this.route}/api-be/api/vault/yelay-lite`);
21
+ async fetchVaultV2Details(vaultAddress) {
22
+ const res = await fetch(`${this.route}/api-be/api/vault/${vaultAddress}`);
23
23
  if (res.ok) {
24
- const vaults = await res.json();
25
- return vaults;
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 fetchYelayLiteVaultDetails(vaultAddress, yliteProjectId) {
32
- const res = await fetch(`${this.route}/api-be/api/vault/yelay-lite/${vaultAddress}/${yliteProjectId}`);
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/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`;
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.fromToken.address,
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 { Vault, UserRewards, VaultStats, UserVaultBalance, LoyaltyCard, NonceEnrichedSignedPayload, MyPerqData, BeansBalance, BeanEntry, PerqToBeansSwapInfo, VestingInfo, YelayLiteVault, PerqConfig } from './types';
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
- getAllYelayLiteVaults(): Promise<YelayLiteVault[]>;
15
- getAllVaults(): Promise<Vault[]>;
16
- getVaultDetails(vaultAddress: string): Promise<Vault>;
17
- getYelayLiteVaultDetails(vaultAddress: string, yliteProjectId: number): Promise<YelayLiteVault>;
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, yliteProjectId: number, amount: string): Promise<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, yliteProjectId: number): Promise<BigNumber>;
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
- yelayLiteWithdraw(tokenAddress: string, vaultAddress: string, yliteProjectId: number, amount: 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>;
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<BigNumber>;
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
- private getERC20TokenAllowance;
75
- 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>;
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 getAllYelayLiteVaults() {
41
- return this.perqApi.fetchAllYelayLiteVaults();
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 getVaultDetails(vaultAddress) {
47
- return this.perqApi.fetchVaultDetails(vaultAddress);
48
+ async getV2VaultDetails(vaultAddress) {
49
+ return this.perqApi.fetchVaultV2Details(vaultAddress);
48
50
  }
49
- async getYelayLiteVaultDetails(vaultAddress, yliteProjectId) {
50
- return this.perqApi.fetchYelayLiteVaultDetails(vaultAddress, yliteProjectId);
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, yliteProjectId, amount) {
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 amountWithDecimals = parseFloat(parseFloat(amount).toFixed(decimals));
72
- const currentTokenAllowance = parseFloat(ethers_1.ethers.utils.formatUnits(await this.getAllowance(tokenAddress, vaultAddress), decimals));
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, yliteProjectId) {
164
+ async getYelayLiteUserVaultBalance(vaultAddress, onChainProjectId) {
160
165
  if (!this.signer) {
161
166
  throw Error('No signer provided');
162
167
  }
163
- const userAddress = await this.signer.getAddress();
164
- const balance = await this.yelayLiteSdk.balanceOf(vaultAddress, yliteProjectId, userAddress);
165
- return balance;
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
- // Parallel fetch of vault, deposits and wnfts
173
- const [vault, userVaultBalance, userWnftsForVault] = await Promise.all([
174
- this.getVaultDetails(vaultAddress),
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
- 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
- }
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: userVaultBalance.deposited?.toString() || '0',
200
- pendingUserBalance: userVaultBalance.pending?.toString() || '0',
201
- pendingWithdrawalBalance: ethers_1.ethers.utils.formatUnits(pendingWithdraws, decimals) || '0',
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.getVaultDetails(vaultAddress);
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, userAddress);
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.getVaultDetails(vaultAddress);
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 yelayLiteWithdraw(tokenAddress, vaultAddress, yliteProjectId, amount) {
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 amountToWithdraw = ethers_1.ethers.utils.parseUnits(amount, decimals);
279
- const res = await this.yelayLiteSdk.redeem(this.signer, vaultAddress, yliteProjectId, BigInt(amountToWithdraw.toString()));
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;
@@ -41,6 +41,7 @@ type DeployedProject = {
41
41
  rewardTooltipName?: string;
42
42
  liveUntil: string;
43
43
  liveFrom: string;
44
+ distributionType: string;
44
45
  };
45
46
  export default DeployedProject;
46
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,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: 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;
11
- yelayLiteBackendUrl: string;
14
+ yelayLiteSdkConfig: YelayLikeSdkConfig;
12
15
  };
13
16
  export default PerqConfig;
14
17
  export declare const PRODUCTION: PerqConfig;
@@ -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: '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',
14
- yelayLiteBackendUrl: '',
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: '0x707B4Cc05645713d8Ea04FBC7192A0f2c1503d6E',
20
- perqTokenRecyclerAddress: '0x07F2264E199D62afe07E8288eC9D36d155fc3f24',
21
- perqSwapAndRecyclerAddress: '0xA4ed357FF233731860Ec8D0446FD95756d564014',
22
- perqVestingAddress: '0x1d3B9E32a7139718f94BE32c797682fFf2D1bE60',
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
- yelayLiteBackendUrl: 'https://lite.dev.yelay.io',
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,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 });
@@ -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, };
@@ -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.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
- "@spool.fi/spool-v2-sdk": "2.0.44",
17
- "@yelay-lite/sdk": "0.0.15",
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": "",