@dripfi/drip-sdk 1.2.5-dev.1 → 1.2.6

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/dist/DripApi.d.ts CHANGED
@@ -7,24 +7,21 @@ import { VaultStats } from './types/VaultStats';
7
7
  import { UserBalance } from './types/UserBalance';
8
8
  import { VaultClaimData } from './types/VaultClaimData';
9
9
  import MyPerqData from './types/MyPerqData';
10
+ import { LoyaltyCard } from './types/LoyaltyCard';
10
11
  import { BeansBalance } from './types/BeansBalance';
11
- import { MetaVault } from './types/MetaVault';
12
- import { MetaVaultClaimableFlushes } from '@spool.fi/spool-v2-sdk';
13
- import { UserMetaVaultBalance } from './types/UserMetaVaultBalance';
14
12
  import { PerqToBeansSwapInfo } from './types/PerqToBeansSwapInfo';
13
+ import BeanEntry from './types/BeanEntry';
15
14
  export declare const IMPERSONATOR_HEADER = "impersonatorAddress";
16
15
  export default class DripApi {
17
16
  route: string;
18
17
  constructor(route: string);
19
18
  fetchAllVaults(): Promise<Vault[]>;
20
- fetchAllMetaVaults(): Promise<MetaVault[]>;
21
19
  fetchTokenPrice(tokenName: string): Promise<number>;
22
20
  getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number, token: string): Promise<string>;
23
21
  getUserBalance(walletAddress: string, token: string, headers?: Headers): Promise<UserBalance>;
24
22
  getUserBoostedNfts(walletAddress: string, vaultAddress: string, token: string, headers?: Headers): Promise<string[]>;
25
23
  fetchVaultStats(): Promise<VaultStats>;
26
24
  fetchVaultDetails(vaultAddress: string): Promise<Vault>;
27
- fetchMetaVaultDetails(metaVaultAddress: string): Promise<MetaVault>;
28
25
  fetchRewardsPerHour(vaultAddress: string, token: string): Promise<number>;
29
26
  getSwapInfo(fromTokenAddress: string, toTokenAddress: string, amount: BigNumber, fromAddress: string): Promise<SwapInfo[]>;
30
27
  fetchUserSVTBalance(vaultAddress: string, walletAddress: string, token: string): Promise<BigNumber>;
@@ -38,7 +35,7 @@ export default class DripApi {
38
35
  fetchFastWithdrawNFTs(vaultAddress: string, walletAddress: string, token: string, headers?: Headers): Promise<QLFastRedeem[]>;
39
36
  fetchUserRewards(walletAddress: string, token: string, headers?: Headers): Promise<UserRewards>;
40
37
  fetchVaultsClaimableData(walletAddress: string, token: string, headers?: Headers): Promise<VaultClaimData>;
41
- fetchAllLoyaltyCards(): Promise<any>;
38
+ fetchAllLoyaltyCards(): Promise<LoyaltyCard[]>;
42
39
  fetchOwnedLoyaltyCards(token: string, headers?: Headers): Promise<{
43
40
  id: any;
44
41
  tier: any;
@@ -61,13 +58,8 @@ export default class DripApi {
61
58
  cost: number;
62
59
  boost: any;
63
60
  }>;
64
- fetchUserMetaVaultBalance(userAddress: string, metaVaultAddress: string, token: string, headers?: Headers): Promise<any>;
65
61
  fetchMyPerqData(userAddress: string, token: string, headers?: Headers): Promise<MyPerqData>;
66
62
  getLoyaltyCardBoost(rewardId: string, token: string, headers?: Headers): Promise<number>;
67
- fetchMyPerqMetaVaultsData(userAddress: string, token: string, headers?: Headers): Promise<MyPerqData>;
68
- fetchAllUserMetaVaultBalance(userAddress: string, token: string, headers?: Headers): Promise<{
69
- [metaVaultAddress: string]: UserMetaVaultBalance;
70
- }>;
71
- fetchClaimableFlushes(userAddress: string, metaVaultAddress: string, token: string, headers?: Headers): Promise<MetaVaultClaimableFlushes>;
72
63
  getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
64
+ fetchBeansHistory(walletAddress: string, token: string, headers?: Headers): Promise<BeanEntry[]>;
73
65
  }
package/dist/DripApi.js CHANGED
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.IMPERSONATOR_HEADER = void 0;
13
13
  const ethers_1 = require("ethers");
14
14
  const DripConfig_1 = require("./DripConfig");
15
- const utils_1 = require("./utils");
16
15
  const WETH_TOKEN_ADDRESS = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
17
16
  exports.IMPERSONATOR_HEADER = 'impersonatorAddress';
18
17
  const AUTHORIZATION_HEADER = 'Authorization';
@@ -32,21 +31,6 @@ class DripApi {
32
31
  }
33
32
  });
34
33
  }
35
- fetchAllMetaVaults() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const res = yield fetch(`${this.route}/api-be/api/metavault`);
38
- if (res.ok) {
39
- const data = yield res.json();
40
- const metaVaults = data.map((metaVault) => {
41
- return Object.assign(Object.assign({}, metaVault), { liveUntilFormatted: (0, utils_1.getMonthDayUTCTimeString)(metaVault.liveUntil), hasPoolEnded: (0, utils_1.hasPoolEnded)(metaVault.liveUntil) });
42
- });
43
- return metaVaults;
44
- }
45
- else {
46
- throw Error(`${yield res.text()}`);
47
- }
48
- });
49
- }
50
34
  fetchTokenPrice(tokenName) {
51
35
  return __awaiter(this, void 0, void 0, function* () {
52
36
  const res = yield fetch(`${this.route}/api-be/api/tokenPrice?tokenName=${tokenName}`);
@@ -143,18 +127,6 @@ class DripApi {
143
127
  }
144
128
  });
145
129
  }
146
- fetchMetaVaultDetails(metaVaultAddress) {
147
- return __awaiter(this, void 0, void 0, function* () {
148
- const res = yield fetch(`${this.route}/api-be/api/metavault/${metaVaultAddress}`);
149
- if (res.ok) {
150
- const data = (yield res.json());
151
- return data;
152
- }
153
- else {
154
- throw Error(`${yield res.text()}`);
155
- }
156
- });
157
- }
158
130
  fetchRewardsPerHour(vaultAddress, token) {
159
131
  return __awaiter(this, void 0, void 0, function* () {
160
132
  const headers = new Headers();
@@ -386,18 +358,15 @@ class DripApi {
386
358
  }
387
359
  fetchAllLoyaltyCards() {
388
360
  return __awaiter(this, void 0, void 0, function* () {
389
- const res = yield fetch(`${this.route}/api-be/api/loyaltyCards`);
361
+ const res = yield fetch(`${this.route}/api-be/api/loyaltyCards/all`);
390
362
  const data = yield res.json();
391
- const mappedData = data.map((element) => {
392
- return {
393
- id: element.id,
394
- tier: element.tier,
395
- level: element.level,
396
- cost: parseFloat(ethers_1.ethers.utils.formatUnits(element.cost.toString(), DripConfig_1.DRIP_TOKEN_DECIMALS)),
397
- boost: element.boost
398
- };
399
- });
400
- return mappedData;
363
+ return data.map((card) => ({
364
+ id: card.id,
365
+ tier: card.tier,
366
+ level: card.level,
367
+ cost: parseFloat(ethers_1.ethers.utils.formatUnits(card.cost.toString(), DripConfig_1.DRIP_TOKEN_DECIMALS)),
368
+ boost: card.boost
369
+ }));
401
370
  });
402
371
  }
403
372
  fetchOwnedLoyaltyCards(token, headers) {
@@ -474,20 +443,6 @@ class DripApi {
474
443
  };
475
444
  });
476
445
  }
477
- fetchUserMetaVaultBalance(userAddress, metaVaultAddress, token, headers) {
478
- return __awaiter(this, void 0, void 0, function* () {
479
- const reqHeaders = headers ? headers : new Headers();
480
- reqHeaders.append(AUTHORIZATION_HEADER, token);
481
- if (reqHeaders.has(exports.IMPERSONATOR_HEADER)) {
482
- userAddress = reqHeaders.get(exports.IMPERSONATOR_HEADER);
483
- }
484
- const res = yield fetch(`${this.route}/api-be/api/user/metavault/balance/${userAddress}/${metaVaultAddress}`, {
485
- headers: reqHeaders,
486
- });
487
- const data = yield res.json();
488
- return data;
489
- });
490
- }
491
446
  fetchMyPerqData(userAddress, token, headers) {
492
447
  return __awaiter(this, void 0, void 0, function* () {
493
448
  const reqHeaders = headers ? headers : new Headers();
@@ -523,16 +478,9 @@ class DripApi {
523
478
  }
524
479
  });
525
480
  }
526
- fetchMyPerqMetaVaultsData(userAddress, token, headers) {
481
+ getSwapPerqForBeansInfo() {
527
482
  return __awaiter(this, void 0, void 0, function* () {
528
- const reqHeaders = headers ? headers : new Headers();
529
- reqHeaders.append(AUTHORIZATION_HEADER, token);
530
- if (reqHeaders.has(exports.IMPERSONATOR_HEADER)) {
531
- userAddress = reqHeaders.get(exports.IMPERSONATOR_HEADER);
532
- }
533
- const res = yield fetch(`${this.route}/api-be/api/myperq/metavaults/${userAddress}`, {
534
- headers: reqHeaders,
535
- });
483
+ const res = yield fetch(`${this.route}/api-be/api/swap/price`, {});
536
484
  if (res.ok) {
537
485
  const data = yield res.json();
538
486
  return data;
@@ -542,40 +490,34 @@ class DripApi {
542
490
  }
543
491
  });
544
492
  }
545
- fetchAllUserMetaVaultBalance(userAddress, token, headers) {
546
- return __awaiter(this, void 0, void 0, function* () {
547
- const reqHeaders = headers ? headers : new Headers();
548
- reqHeaders.append(AUTHORIZATION_HEADER, token);
549
- if (reqHeaders.has(exports.IMPERSONATOR_HEADER)) {
550
- userAddress = reqHeaders.get(exports.IMPERSONATOR_HEADER);
551
- }
552
- const res = yield fetch(`${this.route}/api-be/api/user/metavault/balance/${userAddress}`, {
553
- headers: reqHeaders,
554
- });
555
- const data = yield res.json();
556
- return data;
557
- });
558
- }
559
- fetchClaimableFlushes(userAddress, metaVaultAddress, token, headers) {
493
+ fetchBeansHistory(walletAddress, token, headers) {
560
494
  return __awaiter(this, void 0, void 0, function* () {
561
495
  const reqHeaders = headers ? headers : new Headers();
562
496
  reqHeaders.append(AUTHORIZATION_HEADER, token);
563
497
  if (reqHeaders.has(exports.IMPERSONATOR_HEADER)) {
564
- userAddress = reqHeaders.get(exports.IMPERSONATOR_HEADER);
498
+ walletAddress = reqHeaders.get(exports.IMPERSONATOR_HEADER);
565
499
  }
566
- const res = yield fetch(`${this.route}/api-be/api/metavault/claimableFlushes/${metaVaultAddress}/${userAddress}`, {
500
+ const res = yield fetch(`${this.route}/api-be/api/beans/history/${walletAddress}`, {
501
+ method: 'GET',
567
502
  headers: reqHeaders,
568
503
  });
569
- const data = yield res.json();
570
- return data;
571
- });
572
- }
573
- getSwapPerqForBeansInfo() {
574
- return __awaiter(this, void 0, void 0, function* () {
575
- const res = yield fetch(`${this.route}/api-be/api/swap/price`, {});
576
504
  if (res.ok) {
577
505
  const data = yield res.json();
578
- return data;
506
+ const result = data.map((element) => {
507
+ const newBeanEntry = {
508
+ address: element.address,
509
+ reason: element.reason,
510
+ recycledAmount: element.recycledAmount,
511
+ beansAmount: element.beansAmount,
512
+ beansSum: element.beansSum,
513
+ amountDepositedInUsd: element.amountDepositedInUsd,
514
+ chainId: element.chainId,
515
+ nonce: element.nonce,
516
+ createdAt: element.createdAt
517
+ };
518
+ return newBeanEntry;
519
+ });
520
+ return result;
579
521
  }
580
522
  else {
581
523
  throw Error(`${yield res.text()}`);
@@ -13,6 +13,7 @@ export declare class DripConfig {
13
13
  smartVaultManagerAddress: string | undefined;
14
14
  dripTokenAddress: string;
15
15
  dripTokenRecyclerAddress: string;
16
+ dripSwapAndRecyclerAddress: string;
16
17
  constructor(chain: Chain, dripRoute?: string);
17
18
  getSwapAndDepositContractAddress(signer: Signer): Promise<string>;
18
19
  getSmartVaultManagerAddress(signer: Signer): Promise<string>;
@@ -20,10 +20,12 @@ var Chain;
20
20
  })(Chain || (exports.Chain = Chain = {}));
21
21
  const SUBGRAPH_URL_SEPOLIA = 'https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2-sepolia/api';
22
22
  const RECYCLER_ADDRESS_SEPOLIA = '0x07F2264E199D62afe07E8288eC9D36d155fc3f24';
23
+ const SWAP_AND_RECYCLER_ADDRESS_SEPOLIA = '0xA4ed357FF233731860Ec8D0446FD95756d564014';
23
24
  const DRIP_TOKEN_ADDRESS_SEPOLIA = '0x707B4Cc05645713d8Ea04FBC7192A0f2c1503d6E';
24
25
  const SUBGRAPH_URL_MAINNET = 'https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2/api';
25
26
  // const RECYCLER_ADDRESS_MAINNET = '';
26
- // const DRIP_TOKEN_ADDRESS_MAINNET = '';
27
+ // const SWAP_AND_RECYCLER_ADDRESS_MAINNET = '0xA4ed357FF233731860Ec8D0446FD95756d564014';
28
+ const DRIP_TOKEN_ADDRESS_MAINNET = '0x2a414884a549ef5716bc1a4e648d3dc03f08b2cf';
27
29
  const DEV_BACKEND_ROUTE = 'https://dev.drip.fi.io';
28
30
  const PROD_BACKEND_ROUTE = 'https://perq.finance';
29
31
  class DripConfig {
@@ -32,14 +34,16 @@ class DripConfig {
32
34
  case Chain.MAINNET:
33
35
  this.internalConfig = (0, spool_v2_sdk_1.getMainnetConfig)(SUBGRAPH_URL_MAINNET);
34
36
  this.dripRoute = dripRoute !== undefined ? dripRoute : PROD_BACKEND_ROUTE;
35
- this.dripTokenAddress = exports.NULL_ADDRESS;
37
+ this.dripTokenAddress = DRIP_TOKEN_ADDRESS_MAINNET;
36
38
  this.dripTokenRecyclerAddress = exports.NULL_ADDRESS;
39
+ this.dripSwapAndRecyclerAddress = exports.NULL_ADDRESS;
37
40
  break;
38
41
  case Chain.SEPOLIA:
39
42
  this.internalConfig = (0, spool_v2_sdk_1.getSepoliaConfig)(SUBGRAPH_URL_SEPOLIA);
40
43
  this.dripRoute = dripRoute !== undefined ? dripRoute : DEV_BACKEND_ROUTE;
41
44
  this.dripTokenAddress = DRIP_TOKEN_ADDRESS_SEPOLIA;
42
45
  this.dripTokenRecyclerAddress = RECYCLER_ADDRESS_SEPOLIA;
46
+ this.dripSwapAndRecyclerAddress = SWAP_AND_RECYCLER_ADDRESS_SEPOLIA;
43
47
  break;
44
48
  }
45
49
  }
package/dist/DripSdk.d.ts CHANGED
@@ -11,18 +11,17 @@ import MyPerqData from './types/MyPerqData';
11
11
  import { Chain } from './DripConfig';
12
12
  import { BeansBalance } from './types/BeansBalance';
13
13
  import { PerqToBeansSwapInfo } from './types/PerqToBeansSwapInfo';
14
- import { MetaVault } from './types/MetaVault';
15
- import { UserMetaVaultBalance } from './types/UserMetaVaultBalance';
14
+ import BeanEntry from './types/BeanEntry';
16
15
  export default class DripSdk {
17
16
  private dripApi;
18
17
  private dripTokenContract;
19
18
  private dripTokenRecyclerContract;
19
+ private dripSwapAndRecyclerContract;
20
20
  private spoolSdk?;
21
21
  private signer?;
22
22
  private dripConfig;
23
23
  constructor(chain: Chain, signer?: Signer, dripRoute?: string);
24
24
  getAllVaults(): Promise<Vault[]>;
25
- getAllMetaVaults(): Promise<MetaVault[]>;
26
25
  getVaultDetails(vaultAddress: string): Promise<Vault>;
27
26
  getVaultStats(): Promise<VaultStats>;
28
27
  getTokenPrice(tokenName: string): Promise<number>;
@@ -31,45 +30,40 @@ export default class DripSdk {
31
30
  authenticate(): Promise<boolean>;
32
31
  newDeposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
33
32
  deposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
34
- depositMetaVault(metaVaultAddress: string, amount: string): Promise<string>;
35
33
  private doDeposit;
36
34
  getTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
37
35
  getTokenAllowanceForRecycler(tokenAddress: string): Promise<BigNumber>;
36
+ getTokenAllowanceForSwapAndRecycler(tokenAddress: string): Promise<BigNumber>;
38
37
  getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
39
38
  getUserBalance(headers?: Headers): Promise<UserBalance>;
40
39
  getUserBoostedNfts(vaultAddress: string, headers?: Headers): Promise<string[]>;
41
40
  getRewardsPerHour(vaultAddress: string): Promise<number>;
42
41
  getRewards(headers?: Headers): Promise<UserRewards>;
43
42
  getMyPerqBalance(headers?: Headers): Promise<MyPerqData>;
44
- getMyPerqMetaVaultsBalance(headers?: Headers): Promise<MyPerqData>;
45
43
  getUserVaultBalance(vaultAddress: string, headers?: Headers): Promise<UserVaultBalance>;
46
- getUserMetaVaultBalance(metaVaultAddress: string, headers?: Headers): Promise<UserMetaVaultBalance>;
47
- getAllUserMetaVaultBalance(headers?: Headers): Promise<{
48
- [metaVaultAddress: string]: UserMetaVaultBalance;
49
- }>;
50
44
  fastWithdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
51
45
  swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
52
46
  newSwapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
53
- swapAndDepositMetaVault(metaVaultAddress: string, fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string): Promise<void>;
54
47
  private doSwapAndDeposit;
55
48
  withdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
56
- withdrawMetavault(metaVaultAddress: string, amount?: string): Promise<string>;
57
- claimWithdrawsMetaVault(metaVaultAddress: string): Promise<string>;
58
49
  claimWithdraws(vaultAddress: string): Promise<string>;
59
50
  getVaultsClaimableData(headers?: Headers): Promise<VaultClaimData>;
60
51
  getBeansBalance(headers?: Headers): Promise<BeansBalance>;
52
+ getBeansHistory(headers?: Headers): Promise<BeanEntry[]>;
61
53
  recycleTokens(tokenAddress: string | undefined, amountToRecycle: string, beneficiary: string | undefined, price: string, deadline: string, signature: string): Promise<string>;
54
+ swapAndRecycleETH(beneficiary: string, path: string[], minAmountOutWithDecimals: string, amountOfEth: string, price: string, deadline: string, signature: string): Promise<string>;
55
+ swapAndRecycleERC20(beneficiary: string, path: string[], minAmountOutWithDecimals: string, amountInWithDecimals: string, price: string, deadline: string, signature: string): Promise<string>;
62
56
  upgradeLoyaltyCard(): Promise<LoyaltyCard>;
63
57
  getNextLoyaltyCard(headers?: Headers): Promise<LoyaltyCard>;
64
58
  getOwnedLoyaltyCards(headers?: Headers): Promise<LoyaltyCard>;
65
59
  getAllLoyaltyCards(): Promise<LoyaltyCard[]>;
66
60
  getLoyaltyCardBoost(rewardId: string, headers?: Headers): Promise<number>;
67
61
  approveTokenForRecycler(tokenAddress: string, amount: string): Promise<string>;
62
+ approveTokenForSwapAndRecycler(tokenAddress: string, amount: string): Promise<string>;
68
63
  approveTokenForSwapAndDeposit(tokenAddress: string, amount: string): Promise<string>;
69
64
  approveTokenForDeposit(tokenAddress: string, amount: string): Promise<string>;
70
65
  getDripTokenContractAddress(): string;
71
66
  getSwapPerqForBeansInfo(): Promise<PerqToBeansSwapInfo>;
72
- approveTokenForMetaVaultDeposit(tokenAddress: string, metaVaultAddress: string, amount: string): Promise<string>;
73
67
  private generateRedeemBagStruct;
74
68
  private getERC20Precission;
75
69
  private calculatePendingDeposits;
@@ -80,5 +74,5 @@ export default class DripSdk {
80
74
  private getTokenAllowanceForDeposit;
81
75
  private getTokenAllowanceForSwapAndDeposit;
82
76
  private getERC20TokenAllowance;
83
- approveToken(tokenAddress: string, amount: string, spender: string): Promise<string>;
77
+ private approveToken;
84
78
  }
package/dist/DripSdk.js CHANGED
@@ -20,6 +20,7 @@ const DripApi_1 = __importDefault(require("./DripApi"));
20
20
  const js_cookie_1 = __importDefault(require("js-cookie"));
21
21
  const DripTokenContract_1 = __importDefault(require("./contracts/DripTokenContract"));
22
22
  const DripTokenRecyclerContract_1 = __importDefault(require("./contracts/DripTokenRecyclerContract"));
23
+ const DripSwapAndRecyclerContract_1 = __importDefault(require("./contracts/DripSwapAndRecyclerContract"));
23
24
  class DripSdk {
24
25
  constructor(chain, signer, dripRoute) {
25
26
  this.signer = signer;
@@ -30,17 +31,13 @@ class DripSdk {
30
31
  this.dripApi = new DripApi_1.default(this.dripConfig.dripRoute);
31
32
  this.dripTokenContract = new DripTokenContract_1.default(this.dripConfig.dripTokenAddress, signer);
32
33
  this.dripTokenRecyclerContract = new DripTokenRecyclerContract_1.default(this.dripConfig.dripTokenRecyclerAddress, signer);
34
+ this.dripSwapAndRecyclerContract = new DripSwapAndRecyclerContract_1.default(this.dripConfig.dripSwapAndRecyclerAddress, signer);
33
35
  }
34
36
  getAllVaults() {
35
37
  return __awaiter(this, void 0, void 0, function* () {
36
38
  return this.dripApi.fetchAllVaults();
37
39
  });
38
40
  }
39
- getAllMetaVaults() {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- return this.dripApi.fetchAllMetaVaults();
42
- });
43
- }
44
41
  getVaultDetails(vaultAddress) {
45
42
  return __awaiter(this, void 0, void 0, function* () {
46
43
  return this.dripApi.fetchVaultDetails(vaultAddress);
@@ -121,23 +118,6 @@ class DripSdk {
121
118
  return this.doDeposit(tokenAddress, vaultAddress, amount, true);
122
119
  });
123
120
  }
124
- depositMetaVault(metaVaultAddress, amount) {
125
- return __awaiter(this, void 0, void 0, function* () {
126
- if (!this.signer) {
127
- throw Error('No signer provided');
128
- }
129
- const metavault = yield this.dripApi.fetchMetaVaultDetails(metaVaultAddress);
130
- if (!metavault) {
131
- throw Error('Metavault not found');
132
- }
133
- const decimals = yield this.getERC20Precission(metavault.depositToken.tokenAddress);
134
- const amountWithDecimals = parseFloat(parseFloat(amount).toFixed(decimals));
135
- const amountToDeposit = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
136
- const depositTx = yield this.spoolSdk.metaVaultDeposit(metaVaultAddress.toLowerCase(), amountToDeposit);
137
- const txReceipt = yield depositTx.wait();
138
- return txReceipt.transactionHash;
139
- });
140
- }
141
121
  doDeposit(tokenAddress, vaultAddress, amount, checkAllowance) {
142
122
  return __awaiter(this, void 0, void 0, function* () {
143
123
  if (!this.signer) {
@@ -186,6 +166,15 @@ class DripSdk {
186
166
  return allowance;
187
167
  });
188
168
  }
169
+ getTokenAllowanceForSwapAndRecycler(tokenAddress) {
170
+ return __awaiter(this, void 0, void 0, function* () {
171
+ if (!this.signer) {
172
+ throw Error('No signer provided');
173
+ }
174
+ const allowance = yield this.getERC20TokenAllowance(this.dripSwapAndRecyclerContract.getContractAddress(), tokenAddress);
175
+ return allowance;
176
+ });
177
+ }
189
178
  getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
190
179
  return __awaiter(this, void 0, void 0, function* () {
191
180
  const userAddress = yield this.signer.getAddress();
@@ -234,14 +223,6 @@ class DripSdk {
234
223
  return myPerqBalance;
235
224
  });
236
225
  }
237
- getMyPerqMetaVaultsBalance(headers) {
238
- return __awaiter(this, void 0, void 0, function* () {
239
- const userAddress = yield this.signer.getAddress();
240
- const authData = yield this.isUserAuthenticated();
241
- const myPerqMetaVaultsBalance = this.dripApi.fetchMyPerqMetaVaultsData(userAddress, authData.token, headers);
242
- return myPerqMetaVaultsBalance;
243
- });
244
- }
245
226
  getUserVaultBalance(vaultAddress, headers) {
246
227
  return __awaiter(this, void 0, void 0, function* () {
247
228
  const userAddress = yield this.signer.getAddress();
@@ -265,38 +246,6 @@ class DripSdk {
265
246
  };
266
247
  });
267
248
  }
268
- getUserMetaVaultBalance(metaVaultAddress, headers) {
269
- return __awaiter(this, void 0, void 0, function* () {
270
- const authData = yield this.isUserAuthenticated();
271
- const balance = yield this.dripApi.fetchUserMetaVaultBalance(authData.address, metaVaultAddress, authData.token, headers);
272
- return {
273
- userBalance: balance.userBalance,
274
- pendingUserBalance: balance.pendingUserBalance,
275
- pendingWithdrawalBalance: balance.pendingWithdrawalBalance,
276
- claimable: balance.claimable
277
- };
278
- });
279
- }
280
- getAllUserMetaVaultBalance(headers) {
281
- return __awaiter(this, void 0, void 0, function* () {
282
- const authData = yield this.isUserAuthenticated();
283
- const balances = yield this.dripApi.fetchAllUserMetaVaultBalance(authData.address, authData.token, headers);
284
- const addressArray = Object.keys(balances);
285
- const result = {};
286
- for (const address of addressArray) {
287
- if (result[address]) {
288
- continue;
289
- }
290
- result[address] = {
291
- userBalance: balances[address].userBalance,
292
- pendingUserBalance: balances[address].pendingUserBalance,
293
- pendingWithdrawalBalance: balances[address].pendingWithdrawalBalance,
294
- claimable: balances[address].claimable
295
- };
296
- }
297
- return result;
298
- });
299
- }
300
249
  fastWithdraw(vaultAddress, amountToWithdraw) {
301
250
  return __awaiter(this, void 0, void 0, function* () {
302
251
  var _a, _b;
@@ -330,31 +279,6 @@ class DripSdk {
330
279
  return this.doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, false, ethAmount);
331
280
  });
332
281
  }
333
- swapAndDepositMetaVault(metaVaultAddress, fromTokenAddress, toTokenAddress, fromTokenAmount) {
334
- return __awaiter(this, void 0, void 0, function* () {
335
- var _a;
336
- if (parseFloat(fromTokenAmount) <= 0) {
337
- throw Error('fromTokenAmount must be bigger than 0');
338
- }
339
- // parse from token amount according to decimals
340
- const decimals = yield this.getERC20Precission(fromTokenAddress);
341
- const parsedAmount = ethers_1.ethers.utils.parseUnits(fromTokenAmount, decimals);
342
- const tokenAllowance = yield this.getTokenAllowanceForSwapAndDeposit(fromTokenAddress);
343
- if (tokenAllowance.lt(parsedAmount)) {
344
- throw Error(`current allowance: ${tokenAllowance} is less than required: ${parsedAmount}`);
345
- }
346
- const userAddress = yield this.signer.getAddress();
347
- const swapInfo = yield this.dripApi.getSwapInfo(fromTokenAddress, toTokenAddress, parsedAmount, userAddress);
348
- const swapAndDepositBag = {
349
- metaVault: metaVaultAddress,
350
- inTokens: [fromTokenAddress],
351
- inAmounts: [parsedAmount],
352
- swapInfo
353
- };
354
- console.log(`swapAndDepositBag: ${JSON.stringify(swapAndDepositBag, null, 2)}`);
355
- yield ((_a = this.spoolSdk) === null || _a === void 0 ? void 0 : _a.metaVaultSwapAndDeposit(swapAndDepositBag));
356
- });
357
- }
358
282
  doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, checkAllowance, ethAmount) {
359
283
  return __awaiter(this, void 0, void 0, function* () {
360
284
  const userAddress = yield this.signer.getAddress();
@@ -407,47 +331,6 @@ class DripSdk {
407
331
  return redeemTxReceipt.transactionHash;
408
332
  });
409
333
  }
410
- withdrawMetavault(metaVaultAddress, amount) {
411
- return __awaiter(this, void 0, void 0, function* () {
412
- if (!this.signer) {
413
- throw Error('No signer provided');
414
- }
415
- const authData = yield this.isUserAuthenticated();
416
- const balance = yield this.dripApi.fetchUserMetaVaultBalance(authData.address, metaVaultAddress, authData.token);
417
- if (0 == balance.userBalance || (amount !== undefined && parseFloat(amount) > balance.userBalance)) {
418
- throw Error('Not enough funds to withdraw');
419
- }
420
- if (amount !== undefined && parseFloat(amount) === 0) {
421
- throw Error('Amount to withdraw must be bigger than 0');
422
- }
423
- //If amount is undefined means user wants to withdraw all funds
424
- const sharesToWithdraw = amount !== undefined ? ((parseFloat(amount) * balance.userBalanceShares) / balance.userBalance).toFixed(0) : balance.userBalanceShares;
425
- const depositTx = yield this.spoolSdk.metaVaultRedeem(metaVaultAddress, sharesToWithdraw, balance.userClaimableFlushIndexes);
426
- const txReceipt = yield depositTx.wait();
427
- return txReceipt.transactionHash;
428
- });
429
- }
430
- claimWithdrawsMetaVault(metaVaultAddress) {
431
- return __awaiter(this, void 0, void 0, function* () {
432
- if (!this.signer) {
433
- throw Error('No signer provided');
434
- }
435
- const authData = yield this.isUserAuthenticated();
436
- const metaVaultClaimableFlushes = yield this.dripApi.fetchClaimableFlushes(authData.address.toLowerCase(), metaVaultAddress.toLowerCase(), authData.token);
437
- const flushIndexes = metaVaultClaimableFlushes.unclaimedWithdraws.reduce((acc, item) => {
438
- if (item.isFlushed) {
439
- acc.push(item.flushIndex.toString());
440
- }
441
- return acc;
442
- }, []);
443
- if (flushIndexes.length === 0) {
444
- throw Error('No funds to claim');
445
- }
446
- const metaVaultWithdrawTx = yield this.spoolSdk.metaVaultWithdraw(metaVaultAddress, flushIndexes);
447
- const txReceipt = yield metaVaultWithdrawTx.wait();
448
- return txReceipt.transactionHash;
449
- });
450
- }
451
334
  claimWithdraws(vaultAddress) {
452
335
  return __awaiter(this, void 0, void 0, function* () {
453
336
  const userAddress = yield this.signer.getAddress();
@@ -490,6 +373,15 @@ class DripSdk {
490
373
  return this.dripApi.fetchBeansBalance(authData.token, headers);
491
374
  });
492
375
  }
376
+ getBeansHistory(headers) {
377
+ return __awaiter(this, void 0, void 0, function* () {
378
+ const authData = yield this.isUserAuthenticated();
379
+ if (!authData.isAuthenticated) {
380
+ throw Error(`User not authenticated: ${authData.message}`);
381
+ }
382
+ return this.dripApi.fetchBeansHistory(authData.address, authData.token, headers);
383
+ });
384
+ }
493
385
  recycleTokens() {
494
386
  return __awaiter(this, arguments, void 0, function* (tokenAddress = this.dripConfig.dripTokenAddress, amountToRecycle, beneficiary = DripConfig_1.NULL_ADDRESS, price, deadline, signature) {
495
387
  const authData = yield this.isUserAuthenticated();
@@ -506,6 +398,43 @@ class DripSdk {
506
398
  return receipt.transactionHash;
507
399
  });
508
400
  }
401
+ swapAndRecycleETH(beneficiary, path, minAmountOutWithDecimals, amountOfEth, price, deadline, signature) {
402
+ return __awaiter(this, void 0, void 0, function* () {
403
+ const authData = yield this.isUserAuthenticated();
404
+ if (!authData.isAuthenticated) {
405
+ throw Error(`User not authenticated: ${authData.message}`);
406
+ }
407
+ if (this.dripConfig.dripSwapAndRecyclerAddress === DripConfig_1.NULL_ADDRESS) {
408
+ throw Error('Recycler contract address not defined');
409
+ }
410
+ const swapAndRecycleTx = yield this.dripSwapAndRecyclerContract.swapETHAndRecycle(beneficiary, path, minAmountOutWithDecimals, amountOfEth, price, deadline, signature);
411
+ const receipt = yield swapAndRecycleTx.wait();
412
+ return receipt.transactionHash;
413
+ });
414
+ }
415
+ swapAndRecycleERC20(beneficiary, path, minAmountOutWithDecimals, amountInWithDecimals, price, deadline, signature) {
416
+ return __awaiter(this, void 0, void 0, function* () {
417
+ const authData = yield this.isUserAuthenticated();
418
+ if (!authData.isAuthenticated) {
419
+ throw Error(`User not authenticated: ${authData.message}`);
420
+ }
421
+ if (this.dripConfig.dripSwapAndRecyclerAddress === DripConfig_1.NULL_ADDRESS) {
422
+ throw Error('Recycler contract address not defined');
423
+ }
424
+ console.log("swap and recycle ERC-20 with this: ", {
425
+ beneficiary,
426
+ path,
427
+ amountInWithDecimals,
428
+ minAmountOutWithDecimals,
429
+ price,
430
+ deadline,
431
+ signature
432
+ });
433
+ const swapAndRecycleTx = yield this.dripSwapAndRecyclerContract.swapAndRecycle(beneficiary, path, amountInWithDecimals, minAmountOutWithDecimals, price, deadline, signature);
434
+ const receipt = yield swapAndRecycleTx.wait();
435
+ return receipt.transactionHash;
436
+ });
437
+ }
509
438
  upgradeLoyaltyCard() {
510
439
  return __awaiter(this, void 0, void 0, function* () {
511
440
  const authData = yield this.isUserAuthenticated();
@@ -558,6 +487,17 @@ class DripSdk {
558
487
  return yield this.approveToken(tokenAddress, amount, this.dripConfig.dripTokenRecyclerAddress);
559
488
  });
560
489
  }
490
+ approveTokenForSwapAndRecycler(tokenAddress, amount) {
491
+ return __awaiter(this, void 0, void 0, function* () {
492
+ if (!this.signer) {
493
+ throw Error('No signer provided');
494
+ }
495
+ if (this.dripConfig.dripSwapAndRecyclerAddress === DripConfig_1.NULL_ADDRESS) {
496
+ throw Error('Recycler contract address not defined');
497
+ }
498
+ return yield this.approveToken(tokenAddress, amount, this.dripConfig.dripSwapAndRecyclerAddress);
499
+ });
500
+ }
561
501
  approveTokenForSwapAndDeposit(tokenAddress, amount) {
562
502
  return __awaiter(this, void 0, void 0, function* () {
563
503
  if (!this.signer) {
@@ -584,14 +524,6 @@ class DripSdk {
584
524
  return this.dripApi.getSwapPerqForBeansInfo();
585
525
  });
586
526
  }
587
- approveTokenForMetaVaultDeposit(tokenAddress, metaVaultAddress, amount) {
588
- return __awaiter(this, void 0, void 0, function* () {
589
- if (!this.signer) {
590
- throw Error('No signer provided');
591
- }
592
- return yield this.approveToken(tokenAddress, amount, metaVaultAddress);
593
- });
594
- }
595
527
  generateRedeemBagStruct(vault, signerAddress, amountToWithdraw) {
596
528
  return __awaiter(this, void 0, void 0, function* () {
597
529
  if (!this.spoolSdk) {
@@ -0,0 +1,7 @@
1
+ import { ContractTransaction, ethers } from 'ethers';
2
+ import BaseDripContract from './BaseDripContract';
3
+ export default class DripSwapAndRecyclerContract extends BaseDripContract {
4
+ constructor(address: string, signer?: ethers.Signer);
5
+ swapAndRecycle(beneficiary: string | undefined, path: string[], amountInWithDecimals: string, minAmountOutWithDecimals: string, price: string, deadline: string, signature: string): Promise<ContractTransaction>;
6
+ swapETHAndRecycle(beneficiary: string | undefined, path: string[], minAmountOutWithDecimals: string, amountInEth: string, price: string, deadline: string, signature: string): Promise<ContractTransaction>;
7
+ }