@orbs-network/twap 1.5.12 → 1.5.13

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
@@ -99,7 +99,7 @@ As a result of this process, an `Order` is generated and held in the `TWAP` cont
99
99
  * `maker`: order creator (`msg.sender`)
100
100
  * `exchange`: swap only on this exchange, or zero for any exchange
101
101
  * `srcToken`: input token, required
102
- * `dstToken`: output token, required
102
+ * `dstToken`: output token, required. If zero address, will unwrap to native token on each chunk.
103
103
  * `srcAmount`: input total order amount in `srcToken`, required
104
104
  * `srcBidAmount`: input chunk size in `srcToken`, required
105
105
  * `dstMinAmount`: minimum output chunk size, in `dstToken`, required. Can be higher than market output (implies a limit order), or as low as 1 wei
package/dist/src/lib.d.ts CHANGED
@@ -26,6 +26,7 @@ export declare class TWAPLib {
26
26
  status: (order: Order) => Status;
27
27
  makerBalance(token: TokenData): Promise<BN>;
28
28
  wrapNativeToken(amount: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<any>;
29
+ unwrapNativeToken(amount: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<any>;
29
30
  waitForConfirmation<T>(fn: () => Promise<T>): Promise<T>;
30
31
  hasAllowance(srcToken: TokenData, amount: BN.Value): Promise<boolean>;
31
32
  approve(srcToken: TokenData, amount: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<void>;
package/dist/src/lib.js CHANGED
@@ -29,7 +29,7 @@ class TWAPLib {
29
29
  this.provider = provider;
30
30
  this.dstAmount = (srcToken, dstToken, srcAmount, srcUsdMarket, dstUsdMarket, limitDstPriceFor1Src, isMarketOrder) => (0, web3_candies_1.convertDecimals)(isMarketOrder ? (0, bignumber_js_1.default)(srcAmount).times(srcUsdMarket).div(dstUsdMarket) : (0, bignumber_js_1.default)(srcAmount).times(limitDstPriceFor1Src), srcToken.decimals, dstToken.decimals).integerValue(bignumber_js_1.default.ROUND_FLOOR);
31
31
  this.isNativeToken = (token) => (0, configs_1.isNativeAddress)(token.address);
32
- this.isWrappedToken = (token) => (0, web3_candies_1.eqIgnoreCase)(token.address, this.config.wToken.address); //TODO
32
+ this.isWrappedToken = (token) => (0, web3_candies_1.eqIgnoreCase)(token.address, this.config.wToken.address);
33
33
  this.isValidChain = (chainId) => chainId === this.config.chainId;
34
34
  this.maxPossibleChunks = (srcToken, srcAmount, srcUsd) => bignumber_js_1.default.max(1, (0, bignumber_js_1.default)(srcAmount).div((0, bignumber_js_1.default)(10).pow(srcToken.decimals).div(srcUsd).times(this.config.minChunkSizeUsd)))
35
35
  .integerValue(bignumber_js_1.default.ROUND_FLOOR)
@@ -72,6 +72,11 @@ class TWAPLib {
72
72
  return yield this.sendTx((0, web3_candies_1.erc20)(this.config.wToken.symbol, this.config.wToken.address, this.config.wToken.decimals, web3_candies_1.iwethabi).methods.deposit(), priorityFeePerGas, maxFeePerGas, amount);
73
73
  });
74
74
  }
75
+ unwrapNativeToken(amount, priorityFeePerGas, maxFeePerGas) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ return yield this.sendTx((0, web3_candies_1.erc20)(this.config.wToken.symbol, this.config.wToken.address, this.config.wToken.decimals, web3_candies_1.iwethabi).methods.withdraw((0, bignumber_js_1.default)(amount).toFixed(0)), priorityFeePerGas, maxFeePerGas);
78
+ });
79
+ }
75
80
  waitForConfirmation(fn) {
76
81
  return __awaiter(this, void 0, void 0, function* () {
77
82
  const nonceBefore = yield (0, web3_candies_1.web3)().eth.getTransactionCount(this.maker);
@@ -96,28 +101,22 @@ class TWAPLib {
96
101
  });
97
102
  }
98
103
  validateTokens(srcToken, dstToken) {
99
- if (lodash_1.default.isEqual(srcToken, dstToken))
104
+ if (lodash_1.default.isEqual(srcToken, dstToken) || (this.isNativeToken(srcToken) && this.isNativeToken(dstToken)))
100
105
  return TokensValidation.invalid;
101
- if ((0, configs_1.isNativeAddress)(srcToken.address)) {
102
- if ((0, configs_1.isNativeAddress)(dstToken.address))
103
- return TokensValidation.invalid;
106
+ if (this.isNativeToken(srcToken)) {
104
107
  if (this.isWrappedToken(dstToken))
105
108
  return TokensValidation.wrapOnly;
106
109
  return TokensValidation.wrapAndOrder;
107
110
  }
108
- if (this.isWrappedToken(srcToken)) {
109
- if ((0, configs_1.isNativeAddress)(dstToken.address))
110
- return TokensValidation.unwrapOnly;
111
- return TokensValidation.valid;
112
- }
113
- if ((0, configs_1.isNativeAddress)(dstToken.address)) {
111
+ if (this.isWrappedToken(srcToken) && this.isNativeToken(dstToken))
112
+ return TokensValidation.unwrapOnly;
113
+ if (this.isNativeToken(dstToken))
114
114
  return TokensValidation.dstTokenZero;
115
- }
116
115
  return TokensValidation.valid;
117
116
  }
118
117
  validateOrderInputs(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd) {
119
118
  if (this.validateTokens(srcToken, dstToken) !== TokensValidation.valid)
120
- return OrderInputValidation.invalidTokens; // TODO
119
+ return OrderInputValidation.invalidTokens;
121
120
  if ((0, bignumber_js_1.default)(srcAmount).lte(0))
122
121
  return OrderInputValidation.invalidSrcAmount;
123
122
  if ((0, bignumber_js_1.default)(srcChunkAmount).lte(0) || (0, bignumber_js_1.default)(srcChunkAmount).gt(srcAmount))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbs-network/twap",
3
- "version": "1.5.12",
3
+ "version": "1.5.13",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/orbs-network/twap.git"