@dripfi/drip-sdk 1.4.12 → 1.4.14

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/README.md CHANGED
@@ -65,17 +65,17 @@ Core methods available directly on the SDK instance:
65
65
 
66
66
  Access Lite vault methods through `sdk.lite`:
67
67
 
68
- | Method | Description |
69
- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
70
- | `getAllVaults(): Promise<VaultData[]>` | Fetches all Lite vaults. |
71
- | `getVaultDetails(vaultAddress: string, onChainProjectId: number): Promise<VaultData>` | Fetches Lite vault details. |
72
- | `deposit(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>` | Deposits into Lite vault. |
73
- | `withdraw(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>` | Withdraws from Lite vault. |
74
- | `swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, amount: string, vaultAddress: string, onChainProjectId: number): Promise<string>` | Swaps and deposits into Lite vault. |
75
- | `wrapAndDepositEth(vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>` | Wraps ETH and deposits. |
76
- | `getSwapAndDepositAllowance(tokenAddress: string): Promise<string>` | Fetches the allowance for swap and deposit operations. |
77
- | `approveSwapAndDeposit(tokenAddress: string, amount: string): Promise<string>` | Approves a token for swap and deposit operations. |
78
- | `getExpectedSwapResult(fromTokenAddress: string,toTokenAddress: string,amount: string,decimals: number): Promise<string>` | Calculates the expected result of a swap operation. |
68
+ | Method | Description |
69
+ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
70
+ | `getAllVaults(): Promise<VaultData[]>` | Fetches all Lite vaults. |
71
+ | `getVaultDetails(vaultAddress: string, onChainProjectId: number): Promise<VaultData>` | Fetches Lite vault details. |
72
+ | `deposit(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>` | Deposits into Lite vault. |
73
+ | `withdraw(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>` | Withdraws from Lite vault. |
74
+ | `swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, amount: string, vaultAddress: string, onChainProjectId: number): Promise<string>` | Swaps and deposits into Lite vault. |
75
+ | `wrapAndDepositEth(vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>` | Wraps ETH and deposits. |
76
+ | `getSwapAndDepositAllowance(tokenAddress: string): Promise<string>` | Fetches the allowance for swap and deposit operations. |
77
+ | `approveSwapAndDeposit(tokenAddress: string, amount: string): Promise<string>` | Approves a token for swap and deposit operations. |
78
+ | `getExpectedSwapResult(fromTokenAddress: string,toTokenAddress: string,amount: string,decimals: number, chainId: PerqSupportedChainId): Promise<string>` | Calculates the expected result of a swap operation on a specific chain. |
79
79
 
80
80
  ## Loyalty Cards
81
81
 
@@ -431,7 +431,6 @@ type NonceEnrichedSignedPayload<T> = {
431
431
 
432
432
  type PerqConfig = {
433
433
  route: string;
434
- spoolSdkConfig: SDKConfig;
435
434
  yelayLiteSdkConfig: sdkConfig;
436
435
  perqTokenAddress: string;
437
436
  perqTokenRecyclerAddress: string;
@@ -632,12 +631,14 @@ const BASE_CHAIN_ID = 8453;
632
631
  const ETHEREUM_CHAIN_ID = 1;
633
632
  const ETHEREUM_SEPOLIA_CHAIN_ID = 11155111;
634
633
  const ARBITRUM_CHAIN_ID = 42161;
634
+ const SONIC_CHAIN_ID = 146;
635
635
 
636
636
  type ChainId =
637
637
  | typeof BASE_CHAIN_ID
638
638
  | typeof ETHEREUM_CHAIN_ID
639
639
  | typeof ETHEREUM_SEPOLIA_CHAIN_ID
640
- | typeof ARBITRUM_CHAIN_ID;
640
+ | typeof ARBITRUM_CHAIN_ID
641
+ | typeof SONIC_CHAIN_ID;
641
642
 
642
643
  type Earnings = {
643
644
  [vaultAddress: string]: {
package/dist/PerqApi.js CHANGED
@@ -315,7 +315,7 @@ class PerqApi {
315
315
  const res = await fetch(`${this.perqSdk.perqConfig.route}/api-be/api/user/podWallets/${walletAddress}`);
316
316
  if (res.ok) {
317
317
  const data = await res.json();
318
- return data.suiWalletAddr;
318
+ return data;
319
319
  }
320
320
  else {
321
321
  throw Error(`${await res.text()}`);
package/dist/PerqSdk.d.ts CHANGED
@@ -4,7 +4,6 @@ import PerqApi from './PerqApi';
4
4
  import { PerqSwapAndRecyclerContract, PerqTokenRecyclerContract, PerqVestingContract } from './contracts';
5
5
  import VestingPackage from './subpackages/VestingPackage';
6
6
  import LitePackage from './subpackages/LitePackage';
7
- import V2Package from './subpackages/V2Package';
8
7
  import RecyclerPackage from './subpackages/RecyclerPackage';
9
8
  import LoyaltyCardsPackage from './subpackages/LoyaltyCardsPackage';
10
9
  import { YelayLiteSdk } from '@yelay-lite/sdk';
@@ -18,7 +17,6 @@ export default class PerqSdk {
18
17
  perqApi: PerqApi;
19
18
  signer?: Signer;
20
19
  lite: LitePackage;
21
- v2: V2Package;
22
20
  vesting: VestingPackage;
23
21
  recycler: RecyclerPackage;
24
22
  loyaltyCards: LoyaltyCardsPackage;
package/dist/PerqSdk.js CHANGED
@@ -7,7 +7,6 @@ const PerqApi_1 = __importDefault(require("./PerqApi"));
7
7
  const contracts_1 = require("./contracts");
8
8
  const VestingPackage_1 = __importDefault(require("./subpackages/VestingPackage"));
9
9
  const LitePackage_1 = __importDefault(require("./subpackages/LitePackage"));
10
- const V2Package_1 = __importDefault(require("./subpackages/V2Package"));
11
10
  const RecyclerPackage_1 = __importDefault(require("./subpackages/RecyclerPackage"));
12
11
  const LoyaltyCardsPackage_1 = __importDefault(require("./subpackages/LoyaltyCardsPackage"));
13
12
  const sdk_1 = require("@yelay-lite/sdk");
@@ -20,7 +19,6 @@ class PerqSdk {
20
19
  perqApi;
21
20
  signer;
22
21
  lite;
23
- v2;
24
22
  vesting;
25
23
  recycler;
26
24
  loyaltyCards;
@@ -44,7 +42,6 @@ class PerqSdk {
44
42
  }
45
43
  this.vesting = new VestingPackage_1.default(this);
46
44
  this.lite = new LitePackage_1.default(this);
47
- this.v2 = new V2Package_1.default(this);
48
45
  this.recycler = new RecyclerPackage_1.default(this);
49
46
  this.loyaltyCards = new LoyaltyCardsPackage_1.default(this);
50
47
  this.tokenUtils = new TokenUtilsPackage_1.default(this);
@@ -1,5 +1,6 @@
1
1
  import PerqSdk from '../PerqSdk';
2
2
  import MigrationOption from '../types/MigrationOption';
3
+ import { PerqSupportedChainId } from '../types/PerqConfig';
3
4
  export default class LitePackage {
4
5
  perqSdk: PerqSdk;
5
6
  constructor(perqSdk: PerqSdk);
@@ -10,7 +11,7 @@ export default class LitePackage {
10
11
  swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, amount: string, vaultAddress: string, onChainProjectId: number): Promise<string>;
11
12
  withdraw(tokenAddress: string, vaultAddress: string, onChainProjectId: number, amount: string): Promise<string>;
12
13
  wrapAndDepositEth(vaultAddress: string, onChainProjectId: number, amount: string): Promise<any>;
13
- getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
14
+ getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number, chainId: PerqSupportedChainId): Promise<string>;
14
15
  getMigrationOptions(vaultAddress: string, onChainProjectId: number): Promise<MigrationOption[]>;
15
16
  migrateDepositToOtherProject(tokenAddress: string, vaultAddress: string, fromProjectId: number, toProjectId: number, amount: string): Promise<string>;
16
17
  }
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const ethers_1 = require("ethers");
7
7
  const ERC20TokenContract_1 = __importDefault(require("../contracts/ERC20TokenContract"));
8
- const ChainId_1 = require("../types/ChainId");
9
8
  const WETH_DECIMAL_PRECISION = 18;
10
9
  class LitePackage {
11
10
  perqSdk;
@@ -82,8 +81,8 @@ class LitePackage {
82
81
  const res = await this.perqSdk.yelayLiteSdk.vaults.depositEth(vaultAddress, onChainProjectId, BigInt(parsedAmount.toString()));
83
82
  return res.hash;
84
83
  }
85
- async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
86
- return this.perqSdk.perqApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, ChainId_1.BASE_CHAIN_ID.toString());
84
+ async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, chainId) {
85
+ return this.perqSdk.perqApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, chainId.toString());
87
86
  }
88
87
  async getMigrationOptions(vaultAddress, onChainProjectId) {
89
88
  return this.perqSdk.perqApi.fetchMigrationOptions(vaultAddress, onChainProjectId);
@@ -2,4 +2,5 @@ export declare const BASE_CHAIN_ID = 8453;
2
2
  export declare const ETHEREUM_CHAIN_ID = 1;
3
3
  export declare const ETHEREUM_SEPOLIA_CHAIN_ID = 11155111;
4
4
  export declare const ARBITRUM_CHAIN_ID = 42161;
5
- export type ChainId = typeof BASE_CHAIN_ID | typeof ETHEREUM_CHAIN_ID | typeof ETHEREUM_SEPOLIA_CHAIN_ID | typeof ARBITRUM_CHAIN_ID;
5
+ export declare const SONIC_CHAIN_ID = 146;
6
+ export type ChainId = typeof BASE_CHAIN_ID | typeof ETHEREUM_CHAIN_ID | typeof ETHEREUM_SEPOLIA_CHAIN_ID | typeof ARBITRUM_CHAIN_ID | typeof SONIC_CHAIN_ID;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ARBITRUM_CHAIN_ID = exports.ETHEREUM_SEPOLIA_CHAIN_ID = exports.ETHEREUM_CHAIN_ID = exports.BASE_CHAIN_ID = void 0;
3
+ exports.SONIC_CHAIN_ID = exports.ARBITRUM_CHAIN_ID = exports.ETHEREUM_SEPOLIA_CHAIN_ID = exports.ETHEREUM_CHAIN_ID = exports.BASE_CHAIN_ID = void 0;
4
4
  exports.BASE_CHAIN_ID = 8453;
5
5
  exports.ETHEREUM_CHAIN_ID = 1;
6
6
  exports.ETHEREUM_SEPOLIA_CHAIN_ID = 11155111;
7
7
  exports.ARBITRUM_CHAIN_ID = 42161;
8
+ exports.SONIC_CHAIN_ID = 146;
@@ -1,5 +1,5 @@
1
1
  import { SDKConfig as SpoolSdkConfig } from '@spool.fi/spool-v2-sdk';
2
- export declare const PERQ_SUPPORTED_CHAIN_IDS: readonly [1, 8453];
2
+ export declare const PERQ_SUPPORTED_CHAIN_IDS: readonly [1, 8453, 146];
3
3
  export type PerqSupportedChainId = (typeof PERQ_SUPPORTED_CHAIN_IDS)[number];
4
4
  type PerqConfig = {
5
5
  route: string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEVELOPMENT = exports.PRODUCTION = exports.PERQ_SUPPORTED_CHAIN_IDS = void 0;
4
4
  const spool_v2_sdk_1 = require("@spool.fi/spool-v2-sdk");
5
5
  const ChainId_1 = require("./ChainId");
6
- exports.PERQ_SUPPORTED_CHAIN_IDS = [ChainId_1.ETHEREUM_CHAIN_ID, ChainId_1.BASE_CHAIN_ID];
6
+ exports.PERQ_SUPPORTED_CHAIN_IDS = [ChainId_1.ETHEREUM_CHAIN_ID, ChainId_1.BASE_CHAIN_ID, ChainId_1.SONIC_CHAIN_ID];
7
7
  exports.PRODUCTION = {
8
8
  route: 'https://perq.finance',
9
9
  spoolSdkConfig: (0, spool_v2_sdk_1.getMainnetConfig)('https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2/api'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dripfi/drip-sdk",
3
- "version": "1.4.12",
3
+ "version": "1.4.14",
4
4
  "description": "Drip SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,7 +13,7 @@
13
13
  "pretty": "prettier --write \"./**/*.{js,jsx,mjs,cjs,ts,tsx,json}\""
14
14
  },
15
15
  "dependencies": {
16
- "@yelay-lite/sdk": "1.0.6",
16
+ "@yelay-lite/sdk": "1.0.7",
17
17
  "@spool.fi/spool-v2-sdk": "2.0.53",
18
18
  "ethers": "^5.7.2"
19
19
  },
@@ -1,24 +0,0 @@
1
- import { UserVaultBalance, VaultData } from '../types';
2
- import PerqSdk from '../PerqSdk';
3
- export default class V2Package {
4
- perqSdk: PerqSdk;
5
- constructor(perqSdk: PerqSdk);
6
- getPoolDetails(vaultAddress: string): Promise<VaultData>;
7
- newDeposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
8
- deposit(tokenAddress: string, vaultAddress: string, amount: string): Promise<string>;
9
- private doDeposit;
10
- getSwapAndDepositTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
11
- getExpectedSwapResult(fromTokenAddress: string, toTokenAddress: string, amount: string, decimals: number): Promise<string>;
12
- getUserPoolBalance(vaultAddress: string): Promise<UserVaultBalance>;
13
- fastWithdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
14
- swapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
15
- newSwapAndDeposit(fromTokenAddress: string, toTokenAddress: string, fromTokenAmount: string, vaultAddress: string, ethAmount?: string): Promise<string>;
16
- private doSwapAndDeposit;
17
- withdraw(vaultAddress: string, amountToWithdraw?: string): Promise<string>;
18
- claimWithdraws(vaultAddress: string): Promise<string>;
19
- approveTokenForSwapAndDeposit(tokenAddress: string, amount: string): Promise<string>;
20
- approveTokenForDeposit(tokenAddress: string, amount: string): Promise<string>;
21
- private generateRedeemBagStruct;
22
- private getTokenAllowanceForDeposit;
23
- getTokenAllowanceForCurrency(tokenAddress: string): Promise<string>;
24
- }
@@ -1,207 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ethers_1 = require("ethers");
7
- const ERC20TokenContract_1 = __importDefault(require("../contracts/ERC20TokenContract"));
8
- const ChainId_1 = require("../types/ChainId");
9
- class V2Package {
10
- perqSdk;
11
- constructor(perqSdk) {
12
- this.perqSdk = perqSdk;
13
- }
14
- async getPoolDetails(vaultAddress) {
15
- return this.perqSdk.perqApi.fetchPoolV2Details(vaultAddress);
16
- }
17
- async newDeposit(tokenAddress, vaultAddress, amount) {
18
- return this.doDeposit(tokenAddress, vaultAddress, amount, false);
19
- }
20
- async deposit(tokenAddress, vaultAddress, amount) {
21
- return this.doDeposit(tokenAddress, vaultAddress, amount, true);
22
- }
23
- async doDeposit(tokenAddress, vaultAddress, amount, checkAllowance) {
24
- if (!this.perqSdk.signer) {
25
- throw Error('No signer provided');
26
- }
27
- const tokenContract = new ERC20TokenContract_1.default(tokenAddress, this.perqSdk.signer);
28
- const decimals = await tokenContract.getPrecission();
29
- const amountWithDecimals = parseFloat(parseFloat(amount).toFixed(decimals));
30
- if (checkAllowance) {
31
- const allowance = await tokenContract.getAllowance(await this.perqSdk.signer.getAddress(), this.perqSdk.perqConfig.smartVaultManagerContractAddress);
32
- const currentTokenAllowance = parseFloat(ethers_1.ethers.utils.formatUnits(allowance, decimals));
33
- if (amountWithDecimals > currentTokenAllowance) {
34
- await this.approveTokenForDeposit(tokenAddress, amountWithDecimals.toString());
35
- }
36
- }
37
- const amountToDeposit = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
38
- const signerAddress = await this.perqSdk.signer.getAddress();
39
- if (!signerAddress) {
40
- throw Error('Error fetching address');
41
- }
42
- const depositBagStruct = {
43
- smartVault: vaultAddress.toLowerCase(),
44
- assets: [amountToDeposit],
45
- receiver: signerAddress,
46
- referral: ethers_1.ethers.constants.AddressZero,
47
- doFlush: false,
48
- };
49
- const depositTx = await this.perqSdk.spoolSdk.deposit(depositBagStruct);
50
- const txReceipt = await depositTx.wait();
51
- return txReceipt.transactionHash;
52
- }
53
- async getSwapAndDepositTokenAllowanceForCurrency(tokenAddress) {
54
- if (!this.perqSdk.signer) {
55
- throw Error('No signer provided');
56
- }
57
- const tokenContract = new ERC20TokenContract_1.default(tokenAddress, this.perqSdk.signer);
58
- const allowance = await tokenContract.getAllowance(await this.perqSdk.signer.getAddress(), this.perqSdk.perqConfig.swapAndDepositContractAddress);
59
- return allowance.toString();
60
- }
61
- async getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals) {
62
- return this.perqSdk.perqApi.getExpectedSwapResult(fromTokenAddress, toTokenAddress, amount, decimals, ChainId_1.ETHEREUM_CHAIN_ID.toString());
63
- }
64
- async getUserPoolBalance(vaultAddress) {
65
- if (!this.perqSdk.signer) {
66
- throw Error('No signer provided');
67
- }
68
- const userAddress = await this.perqSdk.signer.getAddress();
69
- return await this.perqSdk.perqApi.fetchV2PoolUserBalance(userAddress.toLowerCase(), vaultAddress.toLowerCase());
70
- }
71
- async fastWithdraw(vaultAddress, amountToWithdraw) {
72
- if (!this.perqSdk.signer) {
73
- throw Error('No signer provided');
74
- }
75
- const userAddress = await this.perqSdk.signer.getAddress();
76
- const vault = await this.getPoolDetails(vaultAddress);
77
- const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
78
- const currentBlockNumber = await this.perqSdk.signer.provider?.getBlockNumber();
79
- if (!currentBlockNumber) {
80
- throw Error('Error fetching block number');
81
- }
82
- const redeemTx = await this.perqSdk.spoolSdk?.redeemFast(redeemBagStruct, userAddress, currentBlockNumber);
83
- const txReceipt = await redeemTx.wait();
84
- return txReceipt.transactionHash;
85
- }
86
- async swapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, ethAmount) {
87
- return this.doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, true, ethAmount);
88
- }
89
- async newSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, ethAmount) {
90
- return this.doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, false, ethAmount);
91
- }
92
- async doSwapAndDeposit(fromTokenAddress, toTokenAddress, fromTokenAmount, vaultAddress, checkAllowance, ethAmount) {
93
- if (!this.perqSdk.signer) {
94
- throw Error('No signer provided');
95
- }
96
- const userAddress = await this.perqSdk.signer.getAddress();
97
- const tokenContract = new ERC20TokenContract_1.default(fromTokenAddress, this.perqSdk.signer);
98
- const decimals = await tokenContract.getPrecission();
99
- const amountWithDecimals = parseFloat(parseFloat(fromTokenAmount).toFixed(decimals));
100
- if (amountWithDecimals > 0 && checkAllowance) {
101
- const allowance = await tokenContract.getAllowance(await this.perqSdk.signer.getAddress(), this.perqSdk.perqConfig.swapAndDepositContractAddress);
102
- const currentTokenAllowance = parseFloat(ethers_1.ethers.utils.formatUnits(allowance, decimals));
103
- if (amountWithDecimals > currentTokenAllowance) {
104
- await this.approveTokenForSwapAndDeposit(fromTokenAddress, amountWithDecimals.toString());
105
- }
106
- }
107
- const fromToken = ethers_1.ethers.utils.parseUnits(amountWithDecimals.toString(), decimals);
108
- const swapInfo = await this.perqSdk.perqApi.getSwapInfo(fromTokenAddress, toTokenAddress, fromToken, this.perqSdk.perqConfig.ethereumSwapperAddress, ChainId_1.ETHEREUM_CHAIN_ID);
109
- const swapDepositBagStruct = {
110
- inTokens: [fromTokenAddress],
111
- inAmounts: [fromToken],
112
- smartVault: vaultAddress.toLowerCase(),
113
- swapInfo,
114
- receiver: userAddress,
115
- referral: ethers_1.ethers.constants.AddressZero,
116
- doFlush: false,
117
- };
118
- const swapAndDepositRequest = ethAmount
119
- ? await this.perqSdk.spoolSdk.swapAndDeposit(swapDepositBagStruct, {
120
- value: ethers_1.ethers.utils.parseEther(ethAmount),
121
- })
122
- : await this.perqSdk.spoolSdk.swapAndDeposit(swapDepositBagStruct);
123
- const txReceipt = await swapAndDepositRequest.wait();
124
- return txReceipt?.transactionHash;
125
- }
126
- async withdraw(vaultAddress, amountToWithdraw) {
127
- if (!this.perqSdk.signer) {
128
- throw Error('No signer provided');
129
- }
130
- const userAddress = await this.perqSdk.signer.getAddress();
131
- const vault = await this.getPoolDetails(vaultAddress);
132
- const redeemBagStruct = await this.generateRedeemBagStruct(vault, userAddress, amountToWithdraw);
133
- const redeemTx = await this.perqSdk.spoolSdk.redeem(redeemBagStruct, userAddress, false);
134
- const redeemTxReceipt = await redeemTx.wait();
135
- return redeemTxReceipt.transactionHash;
136
- }
137
- async claimWithdraws(vaultAddress) {
138
- if (!this.perqSdk.signer) {
139
- throw Error('No signer provided');
140
- }
141
- const userAddress = await this.perqSdk.signer.getAddress();
142
- const wnfts = await this.perqSdk.perqApi.fetchEnrichedUserWNFTForPool(vaultAddress, userAddress);
143
- //! Shares come as Strings instead of BigNumber from our Backend
144
- const nftIds = wnfts
145
- .filter((item) => !item.isBurned && ethers_1.BigNumber.from(item.shares).gt(ethers_1.BigNumber.from('0')) && item.isDHWFinished)
146
- .map((item) => item.nftId.toString());
147
- const nftAmounts = wnfts
148
- .filter((item) => !item.isBurned && ethers_1.BigNumber.from(item.shares).gt(ethers_1.BigNumber.from('0')) && item.isDHWFinished)
149
- .map((item) => item.shares.toString());
150
- const claimWithdrawTx = await this.perqSdk.spoolSdk.claimWithdrawal(vaultAddress.toLowerCase(), nftIds, nftAmounts, userAddress);
151
- const txReceipt = await claimWithdrawTx.wait();
152
- return txReceipt.transactionHash;
153
- }
154
- async approveTokenForSwapAndDeposit(tokenAddress, amount) {
155
- if (!this.perqSdk.signer) {
156
- throw Error('No signer provided');
157
- }
158
- const tokenContract = new ERC20TokenContract_1.default(tokenAddress, this.perqSdk.signer);
159
- const decimals = await tokenContract.getPrecission();
160
- const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, decimals);
161
- return await tokenContract.approveToken(this.perqSdk.perqConfig.swapAndDepositContractAddress, parsedAmount);
162
- }
163
- async approveTokenForDeposit(tokenAddress, amount) {
164
- if (!this.perqSdk.signer) {
165
- throw Error('No signer provided');
166
- }
167
- const tokenContract = new ERC20TokenContract_1.default(tokenAddress, this.perqSdk.signer);
168
- const decimals = await tokenContract.getPrecission();
169
- const parsedAmount = ethers_1.ethers.utils.parseUnits(amount, decimals);
170
- return await tokenContract.approveToken(this.perqSdk.perqConfig.smartVaultManagerContractAddress, parsedAmount);
171
- }
172
- async generateRedeemBagStruct(vault, signerAddress, amountToWithdraw) {
173
- if (!this.perqSdk.spoolSdk) {
174
- throw Error('No spool sdk provided');
175
- }
176
- const isFullWithdraw = !amountToWithdraw;
177
- if (isFullWithdraw) {
178
- return this.perqSdk.spoolSdk.views.userInfo.getMaxRedeemBag({
179
- userAddress: signerAddress.toLowerCase(),
180
- vaultAddress: vault.vaultAddress.toLowerCase(),
181
- });
182
- }
183
- else {
184
- return this.perqSdk.spoolSdk.views.userInfo.getMinimumBurnRedeemBag({
185
- userAddress: signerAddress.toLowerCase(),
186
- vaultAddress: vault.vaultAddress.toLowerCase(),
187
- assetsToWithdraw: [Number(amountToWithdraw)],
188
- });
189
- }
190
- }
191
- async getTokenAllowanceForDeposit(tokenAddress) {
192
- if (!this.perqSdk.signer) {
193
- throw Error('No signer provided');
194
- }
195
- const tokenContract = new ERC20TokenContract_1.default(tokenAddress, this.perqSdk.signer);
196
- const allowance = await tokenContract.getAllowance(await this.perqSdk.signer.getAddress(), this.perqSdk.perqConfig.smartVaultManagerContractAddress);
197
- return allowance;
198
- }
199
- async getTokenAllowanceForCurrency(tokenAddress) {
200
- if (!this.perqSdk.signer) {
201
- throw Error('No signer provided');
202
- }
203
- const currentTokenAllowance = await this.getTokenAllowanceForDeposit(tokenAddress);
204
- return currentTokenAllowance.toString();
205
- }
206
- }
207
- exports.default = V2Package;