@cryptorubic/web3 1.6.2 → 1.16.2-295.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptorubic/web3",
3
- "version": "1.6.2",
3
+ "version": "1.16.2-295.0",
4
4
  "dependencies": {
5
5
  "@ethersproject/bignumber": "^5.8.0",
6
6
  "@mysten/sui": "^1.24.0",
@@ -79,7 +79,9 @@ export declare class EvmAdapter extends AbstractAdapter<PublicActions & PublicCl
79
79
  * @param [options] Additional options.
80
80
  * @returns Approval transaction hash.
81
81
  */
82
- approveTokens(tokenAddress: string, spenderAddress: string, amount?: BigNumber | 'infinity', options?: EvmTransactionOptions): Promise<string>;
82
+ approveTokens(tokenAddress: string, spenderAddress: string, amount?: BigNumber | 'infinity', options?: EvmTransactionOptions, resetPrevApprove?: boolean): Promise<string>;
83
+ private shouldResetApprove;
84
+ private _approve;
83
85
  /**
84
86
  * Build encoded approve transaction config.
85
87
  * @param tokenAddress Address of the smart-contract corresponding to the token.
@@ -346,7 +346,18 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
346
346
  * @param [options] Additional options.
347
347
  * @returns Approval transaction hash.
348
348
  */
349
- async approveTokens(tokenAddress, spenderAddress, amount = 'infinity', options = {}) {
349
+ async approveTokens(tokenAddress, spenderAddress, amount = 'infinity', options = {}, resetPrevApprove) {
350
+ const resetApprove = resetPrevApprove && (await this.shouldResetApprove(tokenAddress, spenderAddress));
351
+ if (resetApprove) {
352
+ await this._approve(tokenAddress, spenderAddress, new bignumber_js_1.default(0), options);
353
+ }
354
+ return this._approve(tokenAddress, spenderAddress, amount, options);
355
+ }
356
+ async shouldResetApprove(tokenAddress, spenderAddress) {
357
+ const { allowanceWei } = await this.getAllowance(tokenAddress, this.signer.walletAddress, spenderAddress);
358
+ return allowanceWei.gt(0);
359
+ }
360
+ async _approve(tokenAddress, spenderAddress, amount = 'infinity', options = {}) {
350
361
  try {
351
362
  const rawValue = amount === 'infinity' ? new bignumber_js_1.default(2).pow(256).minus(1) : amount;
352
363
  const encodedApprove = this.encodeApprove(tokenAddress, spenderAddress, rawValue.toFixed(0));