@dripfi/drip-sdk 1.4.3-yelay-lite → 1.4.3-yelay-lite-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -72,3 +72,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
72
72
  ### Changed
73
73
 
74
74
  - Export the `PerqConfig` from index.ts like recommended
75
+
76
+ ## [1.4.3] - 2025-02-02
77
+
78
+ ### Fixed
79
+
80
+ - Instantiation of the `SpoolSDK`
81
+
82
+ ## [1.4.3] - 2025-02-02
83
+
84
+ ### Fixed
85
+
86
+ - Calculation of users vault balance in vaults with extracted strategies by using the `getUserBalanceBreakdown` method in the `SpoolSDK`
87
+
88
+ ## [1.4.6] - 2025-02-13
89
+
90
+ ### Changed
91
+
92
+ - Upgraded version of `SpoolSDK` to `2.0.53` in order to fix potential issues with the generation of the redeem bag structure
93
+
94
+ ## [1.4.7] - 2025-02-13
95
+
96
+ ### Added
97
+
98
+ - Added method `getSwapAndDepositTokenAllowanceForCurrency` to the `PerqSdk`
99
+
100
+ ## [1.4.8] - 2025-02-14
101
+
102
+ ### Changed
103
+
104
+ - Updated `PerqApi` to use the new 1inch API endpoint
105
+
106
+ ## [1.4.9] - 2025-02-14
107
+
108
+ ### Added
109
+
110
+ - Added method `linkSuiWalletWithEthWallet` to the `PerqSdk`
111
+ - Added method `getLinkedSuiWallet` to the `PerqSdk`
package/dist/PerqApi.d.ts CHANGED
@@ -1,25 +1,22 @@
1
1
  import { BigNumber } from 'ethers';
2
- import { Vault, SwapInfo, QLFastRedeem, UserRewards, VaultStats, MyPerqData, LoyaltyCard, BeansBalance, PerqToBeansSwapInfo, BeanEntry, NonceEnrichedSignedPayload, NonceEnrichedPayload, UpgradeLoyaltyCardPayload, YelayLiteVault } from './types';
2
+ import { SwapInfo, UserRewards, VaultStats, MyPerqData, LoyaltyCard, BeansBalance, PerqToBeansSwapInfo, BeanEntry, NonceEnrichedSignedPayload, NonceEnrichedPayload, UpgradeLoyaltyCardPayload, ReducedProjectData, DetailedProjectData, LinkWalletPayload, UserVaultBalance } from './types';
3
+ import CachedVaultData from './types/VaultData';
3
4
  export default class PerqApi {
4
5
  route: string;
5
6
  constructor(route: string);
6
- fetchAllVaults(): Promise<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[]>;
16
- fetchUserSVTBalance(vaultAddress: string, walletAddress: string): Promise<BigNumber>;
17
- fetchUserBalance(vaultAddress: string, walletAddress: string): Promise<Record<string, string>>;
17
+ getSwapInfo(fromTokenAddress: string, toTokenAddress: string, amount: BigNumber, fromAddress: string, chainId: number): Promise<SwapInfo[]>;
18
18
  fetchEnrichedUserWNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
19
- fetchAllUserWNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
20
- fetchAllUserDNFTForVault(vaultAddress: string, walletAddress: string): Promise<any[]>;
21
19
  fetchAssetPerSvtAtBlock(vaultAddress: string, blocknumber: number): Promise<BigNumber>;
22
- fetchFastWithdrawNFTs(vaultAddress: string, walletAddress: string): Promise<QLFastRedeem[]>;
23
20
  fetchUserRewards(walletAddress: string): Promise<UserRewards>;
24
21
  fetchAllLoyaltyCards(): Promise<LoyaltyCard[]>;
25
22
  fetchOwnedLoyaltyCard(walletAddress: string): Promise<LoyaltyCard>;
@@ -28,9 +25,9 @@ export default class PerqApi {
28
25
  fetchMyPerqData(userAddress: string): Promise<MyPerqData[]>;
29
26
  getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
30
27
  fetchBeansHistory(walletAddress: string): Promise<BeanEntry[]>;
28
+ linkSuiWalletWithEthWallet(signedPayload: NonceEnrichedSignedPayload<LinkWalletPayload>): Promise<boolean>;
29
+ getLinkedSuiWallet(walletAddress: string): Promise<string>;
31
30
  getNonceEnrichedPayload<T>(payload: T): Promise<NonceEnrichedPayload<T>>;
32
- fetchUserVaultDeposits(userAddress: string, vaultAddress: string): Promise<{
33
- pending: number;
34
- deposited: number;
35
- }>;
31
+ fetchV2VaultUserBalance(userAddress: string, vaultAddress: string): Promise<UserVaultBalance>;
32
+ fetchLiteVaultUserBalance(userAddress: string, vaultAddress: string, onChainProjectId: number): Promise<UserVaultBalance>;
36
33
  }
package/dist/PerqApi.js CHANGED
@@ -18,18 +18,18 @@ class PerqApi {
18
18
  throw Error(`${await res.text()}`);
19
19
  }
20
20
  }
21
- async 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
  ];
@@ -124,26 +135,6 @@ class PerqApi {
124
135
  throw Error(`${await res.text()}`);
125
136
  }
126
137
  }
127
- async fetchUserSVTBalance(vaultAddress, walletAddress) {
128
- const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/svtBalance/${vaultAddress}`);
129
- if (res.ok) {
130
- const data = (await res.json());
131
- return data;
132
- }
133
- else {
134
- throw Error(`${await res.text()}`);
135
- }
136
- }
137
- async fetchUserBalance(vaultAddress, walletAddress) {
138
- const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/balance/${vaultAddress}`);
139
- if (res.ok) {
140
- const data = (await res.json());
141
- return data;
142
- }
143
- else {
144
- throw Error(`${await res.text()}`);
145
- }
146
- }
147
138
  async fetchEnrichedUserWNFTForVault(vaultAddress, walletAddress) {
148
139
  const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/wNft/${vaultAddress}`);
149
140
  if (res.ok) {
@@ -154,26 +145,6 @@ class PerqApi {
154
145
  throw Error(`${await res.text()}`);
155
146
  }
156
147
  }
157
- async fetchAllUserWNFTForVault(vaultAddress, walletAddress) {
158
- const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/allWnft/${vaultAddress}`);
159
- if (res.ok) {
160
- const data = (await res.json());
161
- return data;
162
- }
163
- else {
164
- throw Error(`${await res.text()}`);
165
- }
166
- }
167
- async fetchAllUserDNFTForVault(vaultAddress, walletAddress) {
168
- const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/allDnft/${vaultAddress}`);
169
- if (res.ok) {
170
- const data = (await res.json());
171
- return data;
172
- }
173
- else {
174
- throw Error(`${await res.text()}`);
175
- }
176
- }
177
148
  async fetchAssetPerSvtAtBlock(vaultAddress, blocknumber) {
178
149
  const res = await fetch(`${this.route}/api-be/api/spool/assetBalance/${blocknumber}/${vaultAddress}`);
179
150
  if (res.ok) {
@@ -184,16 +155,6 @@ class PerqApi {
184
155
  throw Error(`${await res.text()}`);
185
156
  }
186
157
  }
187
- async fetchFastWithdrawNFTs(vaultAddress, walletAddress) {
188
- const res = await fetch(`${this.route}/api-be/api/spool/user/${walletAddress}/fastWithdrawNft/${vaultAddress}`);
189
- if (res.ok) {
190
- const data = (await res.json());
191
- return data;
192
- }
193
- else {
194
- throw Error(`${await res.text()}`);
195
- }
196
- }
197
158
  async fetchUserRewards(walletAddress) {
198
159
  const res = await fetch(`${this.route}/api-be/api/user/${walletAddress}/rewards`);
199
160
  if (res.ok) {
@@ -320,6 +281,31 @@ class PerqApi {
320
281
  throw Error(`${await res.text()}`);
321
282
  }
322
283
  }
284
+ async linkSuiWalletWithEthWallet(signedPayload) {
285
+ const res = await fetch(`${this.route}/api-be/api/user/suiWallet`, {
286
+ method: 'POST',
287
+ headers: {
288
+ 'Content-Type': 'application/json',
289
+ },
290
+ body: JSON.stringify(signedPayload),
291
+ });
292
+ if (res.ok) {
293
+ return true;
294
+ }
295
+ else {
296
+ throw Error(`${await res.text()}`);
297
+ }
298
+ }
299
+ async getLinkedSuiWallet(walletAddress) {
300
+ const res = await fetch(`${this.route}/api-be/api/user/suiWallet/${walletAddress}`);
301
+ if (res.ok) {
302
+ const data = await res.json();
303
+ return data.suiWalletAddr;
304
+ }
305
+ else {
306
+ throw Error(`${await res.text()}`);
307
+ }
308
+ }
323
309
  async getNonceEnrichedPayload(payload) {
324
310
  const res = await fetch(`${this.route}/api-be/api/nonce`, {
325
311
  method: 'POST',
@@ -335,10 +321,30 @@ class PerqApi {
335
321
  // Return the enriched payload without the extra nesting
336
322
  return enrichedPayload.payload;
337
323
  }
338
- async fetchUserVaultDeposits(userAddress, vaultAddress) {
339
- const response = await fetch(`${this.route}/api-be/api/user/${userAddress}/deposits/${vaultAddress}`);
340
- const data = await response.json();
341
- return data;
324
+ async fetchV2VaultUserBalance(userAddress, vaultAddress) {
325
+ const res = await fetch(`${this.route}/api-be/api/user/v2/balance/${userAddress}/${vaultAddress}`);
326
+ if (res.ok) {
327
+ return await res.json();
328
+ }
329
+ else {
330
+ throw Error(`${await res.text()}`);
331
+ }
332
+ }
333
+ async fetchLiteVaultUserBalance(userAddress, vaultAddress, onChainProjectId) {
334
+ const res = await fetch(`${this.route}/api-be/api/user/lite/balance/${userAddress}/${vaultAddress}/${onChainProjectId}`);
335
+ if (res.ok) {
336
+ const data = await res.json();
337
+ return {
338
+ hasWithdrawsToClaim: false,
339
+ userBalance: data.userBalance,
340
+ pendingUserBalance: '0',
341
+ pendingWithdrawalBalance: '0',
342
+ claimableBalance: '0',
343
+ };
344
+ }
345
+ else {
346
+ throw Error(`${await res.text()}`);
347
+ }
342
348
  }
343
349
  }
344
350
  exports.default = PerqApi;
package/dist/PerqSdk.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { BigNumber, Signer, ethers } from 'ethers';
2
- import { 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,51 +161,19 @@ 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
168
  const userAddress = await this.signer.getAddress();
164
- const balance = await this.yelayLiteSdk.balanceOf(vaultAddress, yliteProjectId, userAddress);
165
- return balance;
169
+ return await this.perqApi.fetchLiteVaultUserBalance(userAddress.toLowerCase(), vaultAddress.toLowerCase(), onChainProjectId);
166
170
  }
167
171
  async getUserVaultBalance(vaultAddress) {
168
172
  if (!this.signer) {
169
173
  throw Error('No signer provided');
170
174
  }
171
175
  const userAddress = await this.signer.getAddress();
172
- // 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),
177
- ]);
178
- const decimals = await this.getERC20Precission(vault.depositToken.tokenAddress);
179
- // Calculate withdrawals
180
- let pendingWithdraws = ethers_1.BigNumber.from(0);
181
- let claimable = ethers_1.BigNumber.from(0);
182
- for (const wnft of userWnftsForVault) {
183
- if (!wnft.isBurned && wnft.svtWithdrawn) {
184
- const currentBlockNumber = wnft.blockNumber - 1;
185
- const assetsPerSvtAtBlock = await this.perqApi.fetchAssetPerSvtAtBlock(vaultAddress, currentBlockNumber);
186
- const estimatedValueOfNFT = ethers_1.BigNumber.from(ethers_1.ethers.utils.formatUnits(ethers_1.BigNumber.from(wnft.svtWithdrawn).mul(assetsPerSvtAtBlock), 36).split('.')[0]);
187
- if (wnft.isDHWFinished) {
188
- // Processed and claimable
189
- claimable = claimable.add(estimatedValueOfNFT);
190
- }
191
- else {
192
- // Not processed, pending withdrawal
193
- pendingWithdraws = pendingWithdraws.add(estimatedValueOfNFT);
194
- }
195
- }
196
- }
197
- return {
198
- hasWithdrawsToClaim: claimable.gt(0),
199
- userBalance: userVaultBalance.deposited?.toString() || '0',
200
- pendingUserBalance: userVaultBalance.pending?.toString() || '0',
201
- pendingWithdrawalBalance: ethers_1.ethers.utils.formatUnits(pendingWithdraws, decimals) || '0',
202
- claimableBalance: ethers_1.ethers.utils.formatUnits(claimable, decimals) || '0',
203
- };
176
+ return await this.perqApi.fetchV2VaultUserBalance(userAddress.toLowerCase(), vaultAddress.toLowerCase());
204
177
  }
205
178
  async fastWithdraw(vaultAddress, amountToWithdraw) {
206
179
  if (!this.signer) {
@@ -210,7 +183,7 @@ class PerqSdk {
210
183
  if (!this.signer) {
211
184
  throw Error('No signer provided');
212
185
  }
213
- const vault = await this.getVaultDetails(vaultAddress);
186
+ const vault = await this.getV2VaultDetails(vaultAddress);
214
187
  const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
215
188
  const currentBlockNumber = await this.signer.provider?.getBlockNumber();
216
189
  if (!currentBlockNumber) {
@@ -240,7 +213,7 @@ class PerqSdk {
240
213
  }
241
214
  }
242
215
  const fromToken = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
243
- const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, userAddress);
216
+ const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, this.perqConfig.ethereumSwapperAddress, chains_1.ETHEREUM_CHAIN_ID);
244
217
  const swapDepositBagStruct = {
245
218
  inTokens: [fromTokenAddress],
246
219
  inAmounts: [fromToken],
@@ -264,22 +237,41 @@ class PerqSdk {
264
237
  if (!this.signer) {
265
238
  throw Error('No signer provided');
266
239
  }
267
- const vault = await this.getVaultDetails(vaultAddress);
240
+ const vault = await this.getV2VaultDetails(vaultAddress);
268
241
  const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
269
242
  const redeemTx = await this.spoolSdk.redeem(redeemBagStruct, userAddress, false);
270
243
  const redeemTxReceipt = await redeemTx.wait();
271
244
  return redeemTxReceipt.transactionHash;
272
245
  }
273
- async yelayLiteWithdraw(tokenAddress, vaultAddress, yliteProjectId, amount) {
246
+ async getYelayLiteSwapAndDepositAllowance(tokenAddress) {
247
+ const res = await this.yelayLiteSdk.vaults.vaultWrapperAllowance(tokenAddress);
248
+ return res.toString();
249
+ }
250
+ async approveYelayLiteSwapAndDeposit(tokenAddress, amount) {
251
+ const decimals = await this.getERC20Precission(tokenAddress);
252
+ const parsedAmountToApprove = ethers_1.ethers.utils.parseUnits(amount, decimals);
253
+ const res = await this.yelayLiteSdk.vaults.approveVaultWrapper(tokenAddress, parsedAmountToApprove.toBigInt());
254
+ return res.hash;
255
+ }
256
+ async yelayLiteSwapAndDeposit(fromTokenAddress, toTokenAddress, amount, vaultAddress, projectId) {
257
+ const decimals = await this.getERC20Precission(fromTokenAddress);
258
+ const parsedAmountToSwapAndDeposit = ethers_1.ethers.utils.parseUnits(amount, decimals);
259
+ const swapInfo = await this.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, parsedAmountToSwapAndDeposit, this.perqConfig.baseSwapperAddress, chains_1.BASE_CHAIN_ID);
260
+ const swapArgsStruct = {
261
+ tokenIn: swapInfo[0].token,
262
+ swapTarget: swapInfo[0].swapTarget,
263
+ swapCallData: swapInfo[0].swapCallData,
264
+ };
265
+ const res = await this.yelayLiteSdk.vaults.swapAndDeposit(vaultAddress.toLowerCase(), projectId, parsedAmountToSwapAndDeposit.toBigInt(), swapArgsStruct);
266
+ return res.hash;
267
+ }
268
+ async yelayLiteWithdraw(tokenAddress, vaultAddress, onChainProjectId, amount) {
274
269
  if (!this.signer) {
275
270
  throw Error('No signer provided');
276
271
  }
277
272
  const decimals = await this.getERC20Precission(tokenAddress);
278
- const 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
- }
273
+ const parsedAmountToWithdraw = ethers_1.ethers.utils.parseUnits(amount, decimals);
274
+ const res = await this.yelayLiteSdk.vaults.redeem(vaultAddress, onChainProjectId, BigInt(parsedAmountToWithdraw.toString()));
283
275
  return res.hash;
284
276
  }
285
277
  async claimWithdraws(vaultAddress) {
@@ -379,7 +371,7 @@ class PerqSdk {
379
371
  }
380
372
  async getAllowance(tokenAddress, spender) {
381
373
  const allowance = await this.getERC20TokenAllowance(spender, tokenAddress);
382
- return allowance;
374
+ return allowance.toString();
383
375
  }
384
376
  async approveAllowance(tokenAddress, amount, spenderAddress) {
385
377
  const decimals = await this.getERC20Precission(tokenAddress);
@@ -509,6 +501,20 @@ class PerqSdk {
509
501
  throw new Error('Failed to get total releasable amount: Unknown error');
510
502
  }
511
503
  }
504
+ async linkSuiWalletWithEthWallet(suiWalletAddress) {
505
+ const payload = {
506
+ suiWalletAddr: suiWalletAddress,
507
+ };
508
+ const signedPayload = await this.signPayload(payload);
509
+ return this.perqApi.linkSuiWalletWithEthWallet(signedPayload);
510
+ }
511
+ async getLinkedSuiWallet() {
512
+ if (!this.signer) {
513
+ throw new Error('No signer provided');
514
+ }
515
+ const walletAddr = await this.signer.getAddress();
516
+ return this.perqApi.getLinkedSuiWallet(walletAddr);
517
+ }
512
518
  async signPayload(payload) {
513
519
  if (!this.signer) {
514
520
  throw new Error('No signer provided');
@@ -585,5 +591,13 @@ class PerqSdk {
585
591
  const receipt = await approveTx.wait();
586
592
  return receipt.transactionHash;
587
593
  }
594
+ async yelayLiteWrapAndDepositEth(vaultAddress, onChainProjectId, amount) {
595
+ if (!this.signer) {
596
+ throw Error('No signer provided');
597
+ }
598
+ const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, WETH_DECIMAL_PRECISION);
599
+ const res = await this.yelayLiteSdk.vaults.depositEth(vaultAddress, onChainProjectId, BigInt(parsedAmount.toString()));
600
+ return res.hash;
601
+ }
588
602
  }
589
603
  exports.default = PerqSdk;
@@ -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: sdk_1.sdkConfig[chains_1.BASE_CHAIN_ID].contractAddresses.Swapper,
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: sdk_1.devSdkConfig[chains_1.BASE_CHAIN_ID].contractAddresses.Swapper,
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-2",
4
4
  "description": "Drip SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,8 +13,8 @@
13
13
  "pretty": "prettier --write \"./**/*.{js,jsx,mjs,cjs,ts,tsx,json}\""
14
14
  },
15
15
  "dependencies": {
16
- "@spool.fi/spool-v2-sdk": "2.0.44",
17
- "@yelay-lite/sdk": "0.0.15",
16
+ "@yelay-lite/sdk": "0.0.34",
17
+ "@spool.fi/spool-v2-sdk": "2.0.53",
18
18
  "ethers": "^5.7.2"
19
19
  },
20
20
  "author": "",