@orbs-network/twap 1.5.11-0 → 1.5.12

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/src/lib.d.ts CHANGED
@@ -13,6 +13,7 @@ export declare class TWAPLib {
13
13
  constructor(config: Config, maker: string, provider?: any);
14
14
  dstAmount: (srcToken: TokenData, dstToken: TokenData, srcAmount: BN.Value, srcUsdMarket: BN.Value, dstUsdMarket: BN.Value, limitDstPriceFor1Src: BN.Value, isMarketOrder: boolean) => BN;
15
15
  isNativeToken: (token: TokenData) => boolean;
16
+ isWrappedToken: (token: TokenData) => boolean;
16
17
  isValidChain: (chainId: number) => boolean;
17
18
  maxPossibleChunks: (srcToken: TokenData, srcAmount: BN.Value, srcUsd: BN.Value) => number;
18
19
  srcChunkAmount: (srcAmount: BN.Value, totalChunks: BN.Value) => BN;
@@ -28,6 +29,7 @@ export declare class TWAPLib {
28
29
  waitForConfirmation<T>(fn: () => Promise<T>): Promise<T>;
29
30
  hasAllowance(srcToken: TokenData, amount: BN.Value): Promise<boolean>;
30
31
  approve(srcToken: TokenData, amount: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<void>;
32
+ validateTokens(srcToken: TokenData, dstToken: TokenData): TokensValidation;
31
33
  validateOrderInputs(srcToken: TokenData, dstToken: TokenData, srcAmount: BN.Value, srcChunkAmount: BN.Value, dstMinChunkAmountOut: BN.Value, deadline: BN.Value, fillDelaySeconds: BN.Value, srcUsd: BN.Value): OrderInputValidation;
32
34
  submitOrder(srcToken: TokenData, dstToken: TokenData, srcAmount: BN.Value, srcChunkAmount: BN.Value, dstMinChunkAmountOut: BN.Value, deadline: number, fillDelaySeconds: number, srcUsd: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<number>;
33
35
  getOrder(id: number): Promise<Order>;
@@ -71,7 +73,7 @@ export declare enum Status {
71
73
  }
72
74
  export declare enum OrderInputValidation {
73
75
  valid = "valid",
74
- equalTokens = "equalTokens",
76
+ invalidTokens = "invalidTokens",
75
77
  invalidSrcAmount = "invalidSrcAmount",
76
78
  invalidSrcChunkAmount = "invalidSrcChunkAmount",
77
79
  invalidDstMinChunkAmountOut = "invalidDstMinChunkAmountOut",
@@ -80,3 +82,11 @@ export declare enum OrderInputValidation {
80
82
  invalidSrcUsd = "invalidSrcUsd",
81
83
  invalidSmallestSrcChunkUsd = "invalidSmallestSrcChunkUsd"
82
84
  }
85
+ export declare enum TokensValidation {
86
+ valid = "valid",
87
+ invalid = "invalid",
88
+ wrapOnly = "wrapOnly",
89
+ unwrapOnly = "unwrapOnly",
90
+ wrapAndOrder = "wrapAndOrder",
91
+ dstTokenZero = "dstTokenZero"
92
+ }
package/dist/src/lib.js CHANGED
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.OrderInputValidation = exports.Status = exports.TWAPLib = exports.lensAbi = exports.twapAbi = void 0;
15
+ exports.TokensValidation = exports.OrderInputValidation = exports.Status = exports.TWAPLib = exports.lensAbi = exports.twapAbi = void 0;
16
16
  const configs_1 = require("./configs");
17
17
  const web3_1 = __importDefault(require("web3"));
18
18
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
@@ -29,6 +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
33
  this.isValidChain = (chainId) => chainId === this.config.chainId;
33
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)))
34
35
  .integerValue(bignumber_js_1.default.ROUND_FLOOR)
@@ -94,9 +95,29 @@ class TWAPLib {
94
95
  yield this.sendTx(token.methods.approve(this.config.twapAddress, amount.toString()), priorityFeePerGas, maxFeePerGas);
95
96
  });
96
97
  }
97
- validateOrderInputs(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd) {
98
+ validateTokens(srcToken, dstToken) {
98
99
  if (lodash_1.default.isEqual(srcToken, dstToken))
99
- return OrderInputValidation.equalTokens;
100
+ return TokensValidation.invalid;
101
+ if ((0, configs_1.isNativeAddress)(srcToken.address)) {
102
+ if ((0, configs_1.isNativeAddress)(dstToken.address))
103
+ return TokensValidation.invalid;
104
+ if (this.isWrappedToken(dstToken))
105
+ return TokensValidation.wrapOnly;
106
+ return TokensValidation.wrapAndOrder;
107
+ }
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)) {
114
+ return TokensValidation.dstTokenZero;
115
+ }
116
+ return TokensValidation.valid;
117
+ }
118
+ validateOrderInputs(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd) {
119
+ if (this.validateTokens(srcToken, dstToken) !== TokensValidation.valid)
120
+ return OrderInputValidation.invalidTokens; // TODO
100
121
  if ((0, bignumber_js_1.default)(srcAmount).lte(0))
101
122
  return OrderInputValidation.invalidSrcAmount;
102
123
  if ((0, bignumber_js_1.default)(srcChunkAmount).lte(0) || (0, bignumber_js_1.default)(srcChunkAmount).gt(srcAmount))
@@ -199,7 +220,7 @@ var Status;
199
220
  var OrderInputValidation;
200
221
  (function (OrderInputValidation) {
201
222
  OrderInputValidation["valid"] = "valid";
202
- OrderInputValidation["equalTokens"] = "equalTokens";
223
+ OrderInputValidation["invalidTokens"] = "invalidTokens";
203
224
  OrderInputValidation["invalidSrcAmount"] = "invalidSrcAmount";
204
225
  OrderInputValidation["invalidSrcChunkAmount"] = "invalidSrcChunkAmount";
205
226
  OrderInputValidation["invalidDstMinChunkAmountOut"] = "invalidDstMinChunkAmountOut";
@@ -208,3 +229,12 @@ var OrderInputValidation;
208
229
  OrderInputValidation["invalidSrcUsd"] = "invalidSrcUsd";
209
230
  OrderInputValidation["invalidSmallestSrcChunkUsd"] = "invalidSmallestSrcChunkUsd";
210
231
  })(OrderInputValidation = exports.OrderInputValidation || (exports.OrderInputValidation = {}));
232
+ var TokensValidation;
233
+ (function (TokensValidation) {
234
+ TokensValidation["valid"] = "valid";
235
+ TokensValidation["invalid"] = "invalid";
236
+ TokensValidation["wrapOnly"] = "wrapOnly";
237
+ TokensValidation["unwrapOnly"] = "unwrapOnly";
238
+ TokensValidation["wrapAndOrder"] = "wrapAndOrder";
239
+ TokensValidation["dstTokenZero"] = "dstTokenZero";
240
+ })(TokensValidation = exports.TokensValidation || (exports.TokensValidation = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbs-network/twap",
3
- "version": "1.5.11-0",
3
+ "version": "1.5.12",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/orbs-network/twap.git"