@dripfi/drip-sdk 1.4.15 → 1.4.16

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
@@ -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;
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';
@@ -12,13 +11,11 @@ import TokenUtilsPackage from './subpackages/TokenUtilsPackage';
12
11
  import UserPackage from './subpackages/UserPackage';
13
12
  import SignHandlerPackage from './subpackages/SignHandlerPackage';
14
13
  import PoolsPackage from './subpackages/PoolsPackage';
15
- import { SpoolSdk } from '@spool.fi/spool-v2-sdk';
16
14
  import { PerqSupportedChainId } from './types/PerqConfig';
17
15
  export default class PerqSdk {
18
16
  perqApi: PerqApi;
19
17
  signer?: Signer;
20
18
  lite: LitePackage;
21
- v2: V2Package;
22
19
  vesting: VestingPackage;
23
20
  recycler: RecyclerPackage;
24
21
  loyaltyCards: LoyaltyCardsPackage;
@@ -28,7 +25,6 @@ export default class PerqSdk {
28
25
  pools: PoolsPackage;
29
26
  perqConfig: PerqConfig;
30
27
  yelayLiteSdk?: YelayLiteSdk;
31
- spoolSdk?: SpoolSdk;
32
28
  perqVestingContract: PerqVestingContract;
33
29
  perqTokenRecyclerContract: PerqTokenRecyclerContract;
34
30
  perqSwapAndRecyclerContract: PerqSwapAndRecyclerContract;
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");
@@ -15,12 +14,10 @@ const TokenUtilsPackage_1 = __importDefault(require("./subpackages/TokenUtilsPac
15
14
  const UserPackage_1 = __importDefault(require("./subpackages/UserPackage"));
16
15
  const SignHandlerPackage_1 = __importDefault(require("./subpackages/SignHandlerPackage"));
17
16
  const PoolsPackage_1 = __importDefault(require("./subpackages/PoolsPackage"));
18
- const spool_v2_sdk_1 = require("@spool.fi/spool-v2-sdk");
19
17
  class PerqSdk {
20
18
  perqApi;
21
19
  signer;
22
20
  lite;
23
- v2;
24
21
  vesting;
25
22
  recycler;
26
23
  loyaltyCards;
@@ -30,7 +27,6 @@ class PerqSdk {
30
27
  pools;
31
28
  perqConfig;
32
29
  yelayLiteSdk;
33
- spoolSdk;
34
30
  perqVestingContract;
35
31
  perqTokenRecyclerContract;
36
32
  perqSwapAndRecyclerContract;
@@ -40,11 +36,9 @@ class PerqSdk {
40
36
  if (newSigner) {
41
37
  this.signer = newSigner;
42
38
  this.yelayLiteSdk = new sdk_1.YelayLiteSdk(this.signer, chainId, false);
43
- this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(perqConfig.spoolSdkConfig, this.signer);
44
39
  }
45
40
  this.vesting = new VestingPackage_1.default(this);
46
41
  this.lite = new LitePackage_1.default(this);
47
- this.v2 = new V2Package_1.default(this);
48
42
  this.recycler = new RecyclerPackage_1.default(this);
49
43
  this.loyaltyCards = new LoyaltyCardsPackage_1.default(this);
50
44
  this.tokenUtils = new TokenUtilsPackage_1.default(this);
@@ -59,7 +53,6 @@ class PerqSdk {
59
53
  async updateSigner(newSigner, chainId) {
60
54
  this.signer = newSigner;
61
55
  this.yelayLiteSdk = new sdk_1.YelayLiteSdk(this.signer, chainId, false);
62
- this.spoolSdk = new spool_v2_sdk_1.SpoolSdk(this.perqConfig.spoolSdkConfig, this.signer);
63
56
  this.perqVestingContract = new contracts_1.PerqVestingContract(this);
64
57
  this.perqTokenRecyclerContract = new contracts_1.PerqTokenRecyclerContract(this);
65
58
  this.perqSwapAndRecyclerContract = new contracts_1.PerqSwapAndRecyclerContract(this);
@@ -1,9 +1,7 @@
1
- import { SDKConfig as SpoolSdkConfig } from '@spool.fi/spool-v2-sdk';
2
1
  export declare const PERQ_SUPPORTED_CHAIN_IDS: readonly [1, 8453, 146];
3
2
  export type PerqSupportedChainId = (typeof PERQ_SUPPORTED_CHAIN_IDS)[number];
4
3
  type PerqConfig = {
5
4
  route: string;
6
- spoolSdkConfig: SpoolSdkConfig;
7
5
  perqTokenAddress: string;
8
6
  perqTokenRecyclerAddress: string;
9
7
  perqSwapAndRecyclerAddress: string;
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEVELOPMENT = exports.PRODUCTION = exports.PERQ_SUPPORTED_CHAIN_IDS = void 0;
4
- const spool_v2_sdk_1 = require("@spool.fi/spool-v2-sdk");
5
4
  const ChainId_1 = require("./ChainId");
6
5
  exports.PERQ_SUPPORTED_CHAIN_IDS = [ChainId_1.ETHEREUM_CHAIN_ID, ChainId_1.BASE_CHAIN_ID, ChainId_1.SONIC_CHAIN_ID];
7
6
  exports.PRODUCTION = {
8
7
  route: 'https://perq.finance',
9
- spoolSdkConfig: (0, spool_v2_sdk_1.getMainnetConfig)('https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2/api'),
10
8
  perqTokenAddress: '0x2a414884a549ef5716bc1a4e648d3dc03f08b2cf',
11
9
  perqTokenRecyclerAddress: '0x2fdcdb17799557dce6f26921f12b7fa1dbcd79fa',
12
10
  perqSwapAndRecyclerAddress: '0x15ed53964e6a5ecbebab80a0fc68c2297b0eaa8d',
@@ -17,7 +15,6 @@ exports.PRODUCTION = {
17
15
  };
18
16
  exports.DEVELOPMENT = {
19
17
  route: 'https://dev.perq.finance',
20
- spoolSdkConfig: (0, spool_v2_sdk_1.getSepoliaConfig)('https://subgraph.satsuma-prod.com/49eb322da234/solidant/spool-v2-sepolia/api'),
21
18
  perqTokenAddress: '0x707b4cc05645713d8ea04fbc7192a0f2c1503d6e',
22
19
  perqTokenRecyclerAddress: '0x07f2264e199d62afe07e8288ec9d36d155fc3f24',
23
20
  perqSwapAndRecyclerAddress: '0xa4ed357ff233731860ec8d0446fd95756d564014',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dripfi/drip-sdk",
3
- "version": "1.4.15",
3
+ "version": "1.4.16",
4
4
  "description": "Drip SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,7 +14,6 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@yelay-lite/sdk": "1.0.7",
17
- "@spool.fi/spool-v2-sdk": "2.0.53",
18
17
  "ethers": "^5.7.2"
19
18
  },
20
19
  "author": "",
@@ -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;