@velora-dex/sdk 8.0.0 → 8.1.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.
Files changed (33) hide show
  1. package/README.md +73 -11
  2. package/dist/examples/helpers/delta.d.ts +5 -0
  3. package/dist/examples/helpers/delta.d.ts.map +1 -0
  4. package/dist/helpers/misc.d.ts +4 -0
  5. package/dist/helpers/misc.d.ts.map +1 -1
  6. package/dist/methods/delta/buildCrosschainOrderBridge.d.ts +1 -1
  7. package/dist/methods/delta/buildCrosschainOrderBridge.d.ts.map +1 -1
  8. package/dist/methods/delta/buildDeltaOrder.d.ts +1 -1
  9. package/dist/methods/delta/buildDeltaOrder.d.ts.map +1 -1
  10. package/dist/methods/delta/getDeltaPrice.d.ts +2 -0
  11. package/dist/methods/delta/getDeltaPrice.d.ts.map +1 -1
  12. package/dist/methods/delta/helpers/across.d.ts +3 -6
  13. package/dist/methods/delta/helpers/across.d.ts.map +1 -1
  14. package/dist/methods/quote/getQuote.d.ts +25 -4
  15. package/dist/methods/quote/getQuote.d.ts.map +1 -1
  16. package/dist/sdk.cjs.development.js +67 -143
  17. package/dist/sdk.cjs.development.js.map +1 -1
  18. package/dist/sdk.cjs.production.min.js +1 -1
  19. package/dist/sdk.cjs.production.min.js.map +1 -1
  20. package/dist/sdk.esm.js +67 -143
  21. package/dist/sdk.esm.js.map +1 -1
  22. package/docs/DELTA.md +69 -7
  23. package/package.json +1 -1
  24. package/src/examples/delta.ts +5 -10
  25. package/src/examples/helpers/delta.ts +39 -0
  26. package/src/examples/quote.ts +6 -8
  27. package/src/examples/simpleQuote.ts +3 -5
  28. package/src/helpers/misc.ts +8 -0
  29. package/src/methods/delta/buildCrosschainOrderBridge.ts +12 -9
  30. package/src/methods/delta/buildDeltaOrder.ts +20 -18
  31. package/src/methods/delta/getDeltaPrice.ts +2 -0
  32. package/src/methods/delta/helpers/across.ts +25 -91
  33. package/src/methods/quote/getQuote.ts +59 -5
package/dist/sdk.esm.js CHANGED
@@ -464,6 +464,7 @@ var FetcherError = /*#__PURE__*/function (_Error) {
464
464
  status = response.status;
465
465
  _this.status = status;
466
466
  _this.message = isDataWithError(data) ? data.error : message;
467
+ _this.message = isDataWithError2(data) ? "" + data.errorType + (data.description ? ": " + data.description : '') : _this.message;
467
468
  return _this;
468
469
  }
469
470
  _inheritsLoose(FetcherError, _Error);
@@ -476,6 +477,9 @@ function isObject(obj) {
476
477
  function isDataWithError(data) {
477
478
  return isObject(data) && typeof data['error'] === 'string';
478
479
  }
480
+ function isDataWithError2(data) {
481
+ return isObject(data) && typeof data['errorType'] === 'string';
482
+ }
479
483
  // checks that array has at least one element
480
484
  var isFilledArray = function isFilledArray(array) {
481
485
  return array.length > 0;
@@ -3818,6 +3822,8 @@ var ACROSS_WETH_ADDRESSES_MAP = {
3818
3822
  81457: '0x4300000000000000000000000000000000000004',
3819
3823
  // Blast Sepolia
3820
3824
  168587773: '0x4200000000000000000000000000000000000023',
3825
+ // BSC
3826
+ 56: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',
3821
3827
  // Ink
3822
3828
  57073: '0x4200000000000000000000000000000000000006',
3823
3829
  // Ink Sepolia
@@ -3868,150 +3874,71 @@ var ETH_ADDRESS_LOWERCASE = /*#__PURE__*/ETH_ADDRESS.toLowerCase();
3868
3874
  function isETHaddress(tokenAddress) {
3869
3875
  return tokenAddress.toLowerCase() === ETH_ADDRESS_LOWERCASE;
3870
3876
  }
3871
- function getDeltaBridgeAndDestToken(_x) {
3872
- return _getDeltaBridgeAndDestToken.apply(this, arguments);
3877
+ function getDeltaBridge(_x) {
3878
+ return _getDeltaBridge.apply(this, arguments);
3873
3879
  }
3874
- function _getDeltaBridgeAndDestToken() {
3875
- _getDeltaBridgeAndDestToken = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
3876
- var destTokenDestChain, destChainId, destTokenSrcChain, srcChainId, bridgeFee, beneficiaryType, getMulticallHandler, WETH_SRC_CHAIN, WETH_DEST_CHAIN, _bridge, _bridge2, _bridge3, _bridge4, _bridge5, bridge;
3880
+ function _getDeltaBridge() {
3881
+ _getDeltaBridge = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
3882
+ var destTokenDestChain, destChainId, bridgeFee, bridgeOutputToken, beneficiaryType, getMulticallHandler, outputToken, multiCallHandler, bridge;
3877
3883
  return _regeneratorRuntime().wrap(function _callee$(_context) {
3878
3884
  while (1) switch (_context.prev = _context.next) {
3879
3885
  case 0:
3880
- destTokenDestChain = _ref.destTokenDestChain, destChainId = _ref.destChainId, destTokenSrcChain = _ref.destTokenSrcChain, srcChainId = _ref.srcChainId, bridgeFee = _ref.bridgeFee, beneficiaryType = _ref.beneficiaryType, getMulticallHandler = _ref.getMulticallHandler;
3886
+ destTokenDestChain = _ref.destTokenDestChain, destChainId = _ref.destChainId, bridgeFee = _ref.bridgeFee, bridgeOutputToken = _ref.bridgeOutputToken, beneficiaryType = _ref.beneficiaryType, getMulticallHandler = _ref.getMulticallHandler;
3881
3887
  assert(beneficiaryType === 'EOA' || beneficiaryType === 'SmartContract', 'beneficiaryType must be EOA or SmartContract');
3882
- WETH_SRC_CHAIN = ACROSS_WETH_ADDRESSES_MAP[srcChainId];
3883
- WETH_DEST_CHAIN = ACROSS_WETH_ADDRESSES_MAP[destChainId];
3884
- if (!(!WETH_SRC_CHAIN || !WETH_DEST_CHAIN)) {
3885
- _context.next = 7;
3886
- break;
3887
- }
3888
- // this should never happen as we only expect crosschain Delta Orders for supported chains
3889
- _bridge = {
3890
- maxRelayerFee: bridgeFee,
3891
- destinationChainId: destChainId,
3892
- outputToken: destTokenDestChain,
3893
- multiCallHandler: ZERO_ADDRESS
3894
- };
3895
- return _context.abrupt("return", {
3896
- bridge: _bridge,
3897
- orderChanges: {
3898
- destToken: destTokenSrcChain
3899
- }
3900
- });
3901
- case 7:
3902
- if (!(beneficiaryType === 'EOA' && isETHaddress(destTokenDestChain))) {
3903
- _context.next = 10;
3904
- break;
3888
+ outputToken = bridgeOutputToken.toLowerCase(); // for uniformity
3889
+ multiCallHandler = ZERO_ADDRESS;
3890
+ if (beneficiaryType === 'EOA' && isETHaddress(destTokenDestChain)) {
3891
+ /*
3892
+ if beneficiary is an EOA and destToken on destChain = ETH
3893
+ order.destToken=ETH (deltaPrice already contains correct destToken)
3894
+ order.bridge.outputToken=WETH_DEST_CHAIN (deltaPrice already contains correct bridge.outputToken)
3895
+ order.bridge.multiCallHandler=NULL_ADDRESS
3896
+ */
3897
+ multiCallHandler = ZERO_ADDRESS;
3905
3898
  }
3906
- /*
3907
- if beneficiary is an EOA and destToken on destChain = ETH
3908
- order.destToken=ETH
3909
- order.bridge.outputToken=WETH_DEST_CHAIN
3910
- order.bridge.multiCallHandler=NULL_ADDRESS
3911
- */
3912
- _bridge2 = {
3913
- maxRelayerFee: bridgeFee,
3914
- destinationChainId: destChainId,
3915
- outputToken: WETH_DEST_CHAIN,
3916
- multiCallHandler: ZERO_ADDRESS
3917
- };
3918
- return _context.abrupt("return", {
3919
- bridge: _bridge2,
3920
- orderChanges: {
3921
- destToken: ETH_ADDRESS
3922
- }
3923
- });
3924
- case 10:
3925
3899
  if (!(beneficiaryType === 'EOA' && isAcrossWETH(destTokenDestChain, destChainId))) {
3926
- _context.next = 19;
3900
+ _context.next = 9;
3927
3901
  break;
3928
3902
  }
3929
- _context.t0 = bridgeFee;
3930
- _context.t1 = destChainId;
3931
- _context.t2 = WETH_DEST_CHAIN;
3932
- _context.next = 16;
3903
+ _context.next = 8;
3933
3904
  return getMulticallHandler(destChainId);
3934
- case 16:
3935
- _context.t3 = _context.sent;
3936
- _bridge3 = {
3937
- maxRelayerFee: _context.t0,
3938
- destinationChainId: _context.t1,
3939
- outputToken: _context.t2,
3940
- multiCallHandler: _context.t3
3941
- };
3942
- return _context.abrupt("return", {
3943
- bridge: _bridge3,
3944
- orderChanges: {
3945
- destToken: WETH_SRC_CHAIN
3946
- }
3947
- });
3948
- case 19:
3905
+ case 8:
3906
+ multiCallHandler = _context.sent;
3907
+ case 9:
3949
3908
  if (!(beneficiaryType === 'SmartContract' && isETHaddress(destTokenDestChain))) {
3950
- _context.next = 28;
3909
+ _context.next = 13;
3951
3910
  break;
3952
3911
  }
3953
- _context.t4 = bridgeFee;
3954
- _context.t5 = destChainId;
3955
- _context.t6 = WETH_DEST_CHAIN;
3956
- _context.next = 25;
3912
+ _context.next = 12;
3957
3913
  return getMulticallHandler(destChainId);
3958
- case 25:
3959
- _context.t7 = _context.sent;
3960
- _bridge4 = {
3961
- maxRelayerFee: _context.t4,
3962
- destinationChainId: _context.t5,
3963
- outputToken: _context.t6,
3964
- multiCallHandler: _context.t7
3965
- };
3966
- return _context.abrupt("return", {
3967
- bridge: _bridge4,
3968
- orderChanges: {
3969
- destToken: ETH_ADDRESS
3970
- }
3971
- });
3972
- case 28:
3973
- if (!(beneficiaryType === 'SmartContract' && isAcrossWETH(destTokenDestChain, destChainId))) {
3974
- _context.next = 31;
3975
- break;
3914
+ case 12:
3915
+ multiCallHandler = _context.sent;
3916
+ case 13:
3917
+ if (beneficiaryType === 'SmartContract' && isAcrossWETH(destTokenDestChain, destChainId)) {
3918
+ /*
3919
+ if beneficiary is a contract and destToken on destChain = WETH
3920
+ order.destToken=WETH (deltaPrice already contains correct destToken)
3921
+ order.bridge.outputToken=WETH_DEST_CHAIN (deltaPrice already contains correct bridge.outputToken)
3922
+ order.bridge.multiCallHandler=NULL_ADDRESS
3923
+ */
3924
+ multiCallHandler = ZERO_ADDRESS;
3976
3925
  }
3977
- /*
3978
- if beneficiary is a contract and destToken on destChain = WETH
3979
- order.destToken=WETH
3980
- order.bridge.outputToken=WETH_DEST_CHAIN
3981
- order.bridge.multiCallHandler=NULL_ADDRESS
3982
- */
3983
- _bridge5 = {
3984
- maxRelayerFee: bridgeFee,
3985
- destinationChainId: destChainId,
3986
- outputToken: WETH_DEST_CHAIN,
3987
- multiCallHandler: ZERO_ADDRESS
3988
- };
3989
- return _context.abrupt("return", {
3990
- bridge: _bridge5,
3991
- orderChanges: {
3992
- destToken: WETH_SRC_CHAIN
3993
- }
3994
- });
3995
- case 31:
3996
3926
  bridge = {
3997
3927
  maxRelayerFee: bridgeFee,
3998
3928
  destinationChainId: destChainId,
3999
- outputToken: destTokenDestChain,
4000
- multiCallHandler: ZERO_ADDRESS
3929
+ outputToken: outputToken,
3930
+ multiCallHandler: multiCallHandler
4001
3931
  };
4002
3932
  return _context.abrupt("return", {
4003
- bridge: bridge,
4004
- orderChanges: {
4005
- destToken: destTokenSrcChain
4006
- }
3933
+ bridge: bridge
4007
3934
  });
4008
- case 33:
3935
+ case 16:
4009
3936
  case "end":
4010
3937
  return _context.stop();
4011
3938
  }
4012
3939
  }, _callee);
4013
3940
  }));
4014
- return _getDeltaBridgeAndDestToken.apply(this, arguments);
3941
+ return _getDeltaBridge.apply(this, arguments);
4015
3942
  }
4016
3943
 
4017
3944
  var constructBuildCrosschainOrderBridge = function constructBuildCrosschainOrderBridge(options) {
@@ -4021,12 +3948,13 @@ var constructBuildCrosschainOrderBridge = function constructBuildCrosschainOrder
4021
3948
  getMulticallHandlers = _constructGetMultical.getMulticallHandlers;
4022
3949
  var buildCrosschainOrderBridge = /*#__PURE__*/function () {
4023
3950
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref, requestParams) {
4024
- var destToken, destChainId, beneficiaryType, deltaPrice, getMulticallHandler, _yield$getDeltaBridge, bridge, orderChanges;
3951
+ var destToken, destChainId, beneficiaryType, deltaPrice, getMulticallHandler, _yield$getDeltaBridge, bridge;
4025
3952
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
4026
3953
  while (1) switch (_context2.prev = _context2.next) {
4027
3954
  case 0:
4028
3955
  destToken = _ref.destToken, destChainId = _ref.destChainId, beneficiaryType = _ref.beneficiaryType, deltaPrice = _ref.deltaPrice;
4029
- assert(chainId !== destChainId, '`destChainId` must be different from `chainId` for crosschain Order.bridge');
3956
+ assert(chainId !== deltaPrice.bridge.destinationChainId, '`deltaPrice.bridge.destinationChainId` must be different from `chainId` for crosschain Order.bridge');
3957
+ assert(destChainId === deltaPrice.bridge.destinationChainId, '`destChainId` must match `deltaPrice.bridge.destinationChainId` for crosschain Order.bridge');
4030
3958
  getMulticallHandler = /*#__PURE__*/function () {
4031
3959
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(chainId) {
4032
3960
  var multicallHandlersMap, multicallHandler;
@@ -4050,23 +3978,20 @@ var constructBuildCrosschainOrderBridge = function constructBuildCrosschainOrder
4050
3978
  return _ref3.apply(this, arguments);
4051
3979
  };
4052
3980
  }();
4053
- _context2.next = 5;
4054
- return getDeltaBridgeAndDestToken({
3981
+ _context2.next = 6;
3982
+ return getDeltaBridge({
4055
3983
  destTokenDestChain: destToken,
4056
3984
  destChainId: destChainId,
4057
- destTokenSrcChain: deltaPrice.destToken,
4058
- srcChainId: chainId,
4059
3985
  bridgeFee: deltaPrice.bridgeFee,
3986
+ bridgeOutputToken: deltaPrice.bridge.outputToken,
4060
3987
  beneficiaryType: beneficiaryType,
4061
3988
  getMulticallHandler: getMulticallHandler
4062
3989
  });
4063
- case 5:
3990
+ case 6:
4064
3991
  _yield$getDeltaBridge = _context2.sent;
4065
3992
  bridge = _yield$getDeltaBridge.bridge;
4066
- orderChanges = _yield$getDeltaBridge.orderChanges;
4067
3993
  return _context2.abrupt("return", {
4068
- bridge: bridge,
4069
- orderChanges: orderChanges
3994
+ bridge: bridge
4070
3995
  });
4071
3996
  case 9:
4072
3997
  case "end":
@@ -4102,8 +4027,8 @@ var constructBuildDeltaOrder = function constructBuildDeltaOrder(options) {
4102
4027
  buildCrosschainOrderBridge = _constructBuildCrossc.buildCrosschainOrderBridge;
4103
4028
  var buildDeltaOrder = /*#__PURE__*/function () {
4104
4029
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options, requestParams) {
4105
- var _options$partnerFeeBp, _partialChangedOrder$, _partialChangedOrder, _options$nonce;
4106
- var ParaswapDelta, partnerAddress, partnerFeeBps, partnerTakesSurplus, feeOrTakeSurplusSupplied, _partnerAddress, _partnerFeeBps, _partnerTakesSurplus, partner, partnerFeeResponse, bridge, partialChangedOrder, _options$beneficiaryT, deltaPrice, _yield$buildCrosschai, constructedBridge, orderChanges, input;
4030
+ var _options$partnerFeeBp, _options$nonce;
4031
+ var ParaswapDelta, partnerAddress, partnerFeeBps, partnerTakesSurplus, feeOrTakeSurplusSupplied, _partnerAddress, _partnerFeeBps, _partnerTakesSurplus, partner, partnerFeeResponse, bridge, _options$beneficiaryT, deltaPrice, _yield$buildCrosschai, constructedBridge, input;
4107
4032
  return _regeneratorRuntime().wrap(function _callee$(_context) {
4108
4033
  while (1) switch (_context.prev = _context.next) {
4109
4034
  case 0:
@@ -4141,19 +4066,19 @@ var constructBuildDeltaOrder = function constructBuildDeltaOrder(options) {
4141
4066
  case 17:
4142
4067
  ////// Bridge logic //////
4143
4068
  // Bridge is necessary for Crosschain Delta Orders
4144
- bridge = options.bridge;
4145
- partialChangedOrder = null; // give preference to user-provided bridge
4069
+ bridge = options.bridge; // give preference to user-provided bridge
4146
4070
  if (bridge) {
4147
- _context.next = 33;
4071
+ _context.next = 31;
4148
4072
  break;
4149
4073
  }
4150
4074
  if (!(options.destChainId && chainId !== options.destChainId)) {
4151
- _context.next = 32;
4075
+ _context.next = 30;
4152
4076
  break;
4153
4077
  }
4154
4078
  // crosschain Delta Order
4155
4079
  deltaPrice = options.deltaPrice;
4156
4080
  assert(deltaPrice.bridgeFee, '`bridgeFee` is required in `deltaPrice` for crosschain Delta Orders');
4081
+ assert(deltaPrice.bridge, '`bridge` is required in `deltaPrice` for crosschain Delta Orders');
4157
4082
  _context.next = 25;
4158
4083
  return buildCrosschainOrderBridge({
4159
4084
  destToken: options.destToken,
@@ -4161,27 +4086,26 @@ var constructBuildDeltaOrder = function constructBuildDeltaOrder(options) {
4161
4086
  beneficiaryType: (_options$beneficiaryT = options.beneficiaryType) != null ? _options$beneficiaryT : 'EOA',
4162
4087
  deltaPrice: {
4163
4088
  bridgeFee: deltaPrice.bridgeFee,
4164
- destToken: deltaPrice.destToken
4089
+ bridge: deltaPrice.bridge // already contains destChainId and outputToken
4165
4090
  }
4166
4091
  }, requestParams);
4167
4092
  case 25:
4168
4093
  _yield$buildCrosschai = _context.sent;
4169
4094
  constructedBridge = _yield$buildCrosschai.bridge;
4170
- orderChanges = _yield$buildCrosschai.orderChanges;
4171
4095
  bridge = constructedBridge;
4172
- partialChangedOrder = orderChanges;
4173
- _context.next = 33;
4096
+ _context.next = 31;
4174
4097
  break;
4175
- case 32:
4098
+ case 30:
4176
4099
  // 0-values bridge for same-chain Orders
4177
4100
  bridge = DEFAULT_BRIDGE;
4178
- case 33:
4101
+ case 31:
4179
4102
  input = {
4180
4103
  owner: options.owner,
4181
4104
  beneficiary: options.beneficiary,
4182
4105
  srcToken: options.srcToken,
4183
- // for some cases of WETH<->ETH crosschain swaps, the destToken is to WETH or ETH
4184
- destToken: (_partialChangedOrder$ = (_partialChangedOrder = partialChangedOrder) == null ? void 0 : _partialChangedOrder.destToken) != null ? _partialChangedOrder$ : options.destToken,
4106
+ // for some cases of WETH->ETH crosschain swaps, the destToken is changed to WETH or ETH,
4107
+ // this is already reflected in deltaPrice
4108
+ destToken: options.deltaPrice.destToken,
4185
4109
  srcAmount: options.srcAmount,
4186
4110
  destAmount: options.destAmount,
4187
4111
  expectedDestAmount: options.deltaPrice.destAmount,
@@ -4196,7 +4120,7 @@ var constructBuildDeltaOrder = function constructBuildDeltaOrder(options) {
4196
4120
  bridge: bridge
4197
4121
  };
4198
4122
  return _context.abrupt("return", buildDeltaSignableOrderData(input));
4199
- case 35:
4123
+ case 33:
4200
4124
  case "end":
4201
4125
  return _context.stop();
4202
4126
  }