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