@velora-dex/sdk 9.3.5 → 9.4.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 (141) hide show
  1. package/README.md +2 -0
  2. package/dist/examples/externalDelta.d.ts +2 -0
  3. package/dist/examples/externalDelta.d.ts.map +1 -0
  4. package/dist/examples/helpers/delta.d.ts +2 -2
  5. package/dist/examples/helpers/delta.d.ts.map +1 -1
  6. package/dist/index.d.ts +11 -6
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/methods/delta/buildDeltaOrder.d.ts +4 -10
  9. package/dist/methods/delta/buildDeltaOrder.d.ts.map +1 -1
  10. package/dist/methods/delta/buildExternalDeltaOrder.d.ts +46 -0
  11. package/dist/methods/delta/buildExternalDeltaOrder.d.ts.map +1 -0
  12. package/dist/methods/delta/getDeltaOrders.d.ts +14 -6
  13. package/dist/methods/delta/getDeltaOrders.d.ts.map +1 -1
  14. package/dist/methods/delta/getDeltaPrice.d.ts +5 -1
  15. package/dist/methods/delta/getDeltaPrice.d.ts.map +1 -1
  16. package/dist/methods/delta/helpers/abi.d.ts +16 -0
  17. package/dist/methods/delta/helpers/abi.d.ts.map +1 -0
  18. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts +0 -1
  19. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts.map +1 -1
  20. package/dist/methods/delta/helpers/buildExternalOrderData.d.ts +34 -0
  21. package/dist/methods/delta/helpers/buildExternalOrderData.d.ts.map +1 -0
  22. package/dist/methods/delta/helpers/misc.d.ts +43 -0
  23. package/dist/methods/delta/helpers/misc.d.ts.map +1 -1
  24. package/dist/methods/delta/helpers/types.d.ts +74 -3
  25. package/dist/methods/delta/helpers/types.d.ts.map +1 -1
  26. package/dist/methods/delta/index.d.ts +20 -3
  27. package/dist/methods/delta/index.d.ts.map +1 -1
  28. package/dist/methods/delta/postDeltaOrder.d.ts +6 -9
  29. package/dist/methods/delta/postDeltaOrder.d.ts.map +1 -1
  30. package/dist/methods/delta/postExternalDeltaOrder.d.ts +11 -0
  31. package/dist/methods/delta/postExternalDeltaOrder.d.ts.map +1 -0
  32. package/dist/methods/delta/preSignDeltaOrder.d.ts.map +1 -1
  33. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts +17 -0
  34. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts.map +1 -0
  35. package/dist/methods/delta/signExternalDeltaOrder.d.ts +9 -0
  36. package/dist/methods/delta/signExternalDeltaOrder.d.ts.map +1 -0
  37. package/dist/methods/limitOrders/approveForOrder.d.ts +2 -0
  38. package/dist/methods/limitOrders/approveForOrder.d.ts.map +1 -1
  39. package/dist/methods/limitOrders/buildOrder.d.ts +3 -0
  40. package/dist/methods/limitOrders/buildOrder.d.ts.map +1 -1
  41. package/dist/methods/limitOrders/cancelOrder.d.ts +2 -0
  42. package/dist/methods/limitOrders/cancelOrder.d.ts.map +1 -1
  43. package/dist/methods/limitOrders/fillOrderDirectly.d.ts +2 -0
  44. package/dist/methods/limitOrders/fillOrderDirectly.d.ts.map +1 -1
  45. package/dist/methods/limitOrders/getOrders.d.ts +2 -0
  46. package/dist/methods/limitOrders/getOrders.d.ts.map +1 -1
  47. package/dist/methods/limitOrders/getOrdersContract.d.ts +2 -0
  48. package/dist/methods/limitOrders/getOrdersContract.d.ts.map +1 -1
  49. package/dist/methods/limitOrders/index.d.ts +7 -1
  50. package/dist/methods/limitOrders/index.d.ts.map +1 -1
  51. package/dist/methods/limitOrders/postOrder.d.ts +2 -0
  52. package/dist/methods/limitOrders/postOrder.d.ts.map +1 -1
  53. package/dist/methods/limitOrders/signOrder.d.ts +2 -0
  54. package/dist/methods/limitOrders/signOrder.d.ts.map +1 -1
  55. package/dist/methods/limitOrders/transaction.d.ts +2 -0
  56. package/dist/methods/limitOrders/transaction.d.ts.map +1 -1
  57. package/dist/methods/nftOrders/approveForOrder.d.ts +2 -0
  58. package/dist/methods/nftOrders/approveForOrder.d.ts.map +1 -1
  59. package/dist/methods/nftOrders/buildOrder.d.ts +3 -0
  60. package/dist/methods/nftOrders/buildOrder.d.ts.map +1 -1
  61. package/dist/methods/nftOrders/cancelOrder.d.ts +2 -0
  62. package/dist/methods/nftOrders/cancelOrder.d.ts.map +1 -1
  63. package/dist/methods/nftOrders/getOrders.d.ts +2 -0
  64. package/dist/methods/nftOrders/getOrders.d.ts.map +1 -1
  65. package/dist/methods/nftOrders/getOrdersContract.d.ts +2 -0
  66. package/dist/methods/nftOrders/getOrdersContract.d.ts.map +1 -1
  67. package/dist/methods/nftOrders/helpers/misc.d.ts +1 -0
  68. package/dist/methods/nftOrders/helpers/misc.d.ts.map +1 -1
  69. package/dist/methods/nftOrders/index.d.ts +7 -1
  70. package/dist/methods/nftOrders/index.d.ts.map +1 -1
  71. package/dist/methods/nftOrders/postOrder.d.ts +2 -0
  72. package/dist/methods/nftOrders/postOrder.d.ts.map +1 -1
  73. package/dist/methods/nftOrders/signOrder.d.ts +2 -0
  74. package/dist/methods/nftOrders/signOrder.d.ts.map +1 -1
  75. package/dist/methods/nftOrders/transaction.d.ts +2 -0
  76. package/dist/methods/nftOrders/transaction.d.ts.map +1 -1
  77. package/dist/methods/swap/rates.d.ts +1 -0
  78. package/dist/methods/swap/rates.d.ts.map +1 -1
  79. package/dist/methods/swap/transaction.d.ts +1 -0
  80. package/dist/methods/swap/transaction.d.ts.map +1 -1
  81. package/dist/sdk/full.d.ts +2 -0
  82. package/dist/sdk/full.d.ts.map +1 -1
  83. package/dist/sdk/partial.d.ts +2 -0
  84. package/dist/sdk/partial.d.ts.map +1 -1
  85. package/dist/sdk/simple.d.ts +6 -0
  86. package/dist/sdk/simple.d.ts.map +1 -1
  87. package/dist/sdk.cjs.development.js +689 -119
  88. package/dist/sdk.cjs.development.js.map +1 -1
  89. package/dist/sdk.cjs.production.min.js +1 -1
  90. package/dist/sdk.cjs.production.min.js.map +1 -1
  91. package/dist/sdk.esm.js +685 -120
  92. package/dist/sdk.esm.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/constants.js +8 -0
  95. package/src/examples/delta.ts +9 -20
  96. package/src/examples/externalDelta.ts +162 -0
  97. package/src/examples/helpers/delta.ts +8 -4
  98. package/src/gas.js +1 -0
  99. package/src/index.js +142 -0
  100. package/src/index.ts +40 -3
  101. package/src/methods/delta/buildDeltaOrder.ts +13 -61
  102. package/src/methods/delta/buildExternalDeltaOrder.ts +124 -0
  103. package/src/methods/delta/getDeltaOrders.ts +31 -13
  104. package/src/methods/delta/getDeltaPrice.ts +9 -1
  105. package/src/methods/delta/helpers/abi.ts +20 -0
  106. package/src/methods/delta/helpers/buildDeltaOrderData.ts +3 -35
  107. package/src/methods/delta/helpers/buildExternalOrderData.ts +129 -0
  108. package/src/methods/delta/helpers/misc.ts +210 -0
  109. package/src/methods/delta/helpers/types.ts +87 -8
  110. package/src/methods/delta/index.ts +84 -3
  111. package/src/methods/delta/postDeltaOrder.ts +20 -13
  112. package/src/methods/delta/postExternalDeltaOrder.ts +45 -0
  113. package/src/methods/delta/preSignDeltaOrder.ts +1 -21
  114. package/src/methods/delta/preSignExternalDeltaOrder.ts +141 -0
  115. package/src/methods/delta/signExternalDeltaOrder.ts +35 -0
  116. package/src/methods/limitOrders/approveForOrder.ts +2 -0
  117. package/src/methods/limitOrders/buildOrder.ts +3 -0
  118. package/src/methods/limitOrders/cancelOrder.ts +2 -0
  119. package/src/methods/limitOrders/fillOrderDirectly.ts +2 -0
  120. package/src/methods/limitOrders/getOrders.ts +2 -0
  121. package/src/methods/limitOrders/getOrdersContract.ts +2 -0
  122. package/src/methods/limitOrders/index.ts +7 -1
  123. package/src/methods/limitOrders/postOrder.ts +2 -0
  124. package/src/methods/limitOrders/signOrder.ts +2 -0
  125. package/src/methods/limitOrders/transaction.ts +2 -0
  126. package/src/methods/nftOrders/approveForOrder.ts +2 -0
  127. package/src/methods/nftOrders/buildOrder.ts +3 -0
  128. package/src/methods/nftOrders/cancelOrder.ts +2 -0
  129. package/src/methods/nftOrders/getOrders.ts +2 -0
  130. package/src/methods/nftOrders/getOrdersContract.ts +2 -0
  131. package/src/methods/nftOrders/helpers/misc.ts +1 -0
  132. package/src/methods/nftOrders/index.ts +7 -1
  133. package/src/methods/nftOrders/postOrder.ts +2 -0
  134. package/src/methods/nftOrders/signOrder.ts +2 -0
  135. package/src/methods/nftOrders/transaction.ts +2 -0
  136. package/src/methods/swap/rates.ts +2 -0
  137. package/src/methods/swap/transaction.ts +1 -0
  138. package/src/sdk/full.ts +2 -0
  139. package/src/sdk/partial.ts +2 -0
  140. package/src/sdk/simple.ts +6 -0
  141. package/src/types.js +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velora-dex/sdk",
3
- "version": "9.3.5",
3
+ "version": "9.4.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/sdk.esm.js",
6
6
  "typings": "dist/index.d.ts",
@@ -0,0 +1,8 @@
1
+ export {
2
+ SwapSide,
3
+ ContractMethod,
4
+ ContractMethodV5,
5
+ ContractMethodV6,
6
+ } from '@paraswap/core';
7
+ export const API_URL = 'https://api.paraswap.io';
8
+ export const DEFAULT_VERSION = '6.2';
@@ -14,10 +14,13 @@ const fetcher = constructAxiosFetcher(axios);
14
14
  const provider = ethers.getDefaultProvider(1);
15
15
  const signer = Wallet.createRandom().connect(provider);
16
16
  const account = signer.address;
17
- const contractCaller = constructEthersContractCaller({
18
- ethersProviderOrSigner: provider,
19
- EthersContract: ethers.Contract,
20
- });
17
+ const contractCaller = constructEthersContractCaller(
18
+ {
19
+ ethersProviderOrSigner: provider,
20
+ EthersContract: ethers.Contract,
21
+ },
22
+ account
23
+ );
21
24
 
22
25
  // type AdaptersFunctions & ApproveTokenFunctions<ethers.ContractTransaction>
23
26
  const deltaSDK = constructPartialSDK(
@@ -51,14 +54,6 @@ async function simpleDeltaFlow() {
51
54
  const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
52
55
  await tx.wait();
53
56
 
54
- const slippagePercent = 0.5;
55
- const destAmountAfterSlippage = BigInt(
56
- // get rid of exponential notation
57
-
58
- +(+deltaPrice.destAmount * (1 - slippagePercent / 100)).toFixed(0)
59
- // get rid of decimals
60
- ).toString(10);
61
-
62
57
  const deltaAuction = await deltaSDK.submitDeltaOrder({
63
58
  deltaPrice,
64
59
  owner: account,
@@ -67,7 +62,7 @@ async function simpleDeltaFlow() {
67
62
  srcToken: DAI_TOKEN,
68
63
  destToken: USDC_TOKEN,
69
64
  srcAmount: amount,
70
- destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
65
+ slippage: 50, // 50 bps = 0.5% slippage, destAmount auto-computed from deltaPrice
71
66
  });
72
67
 
73
68
  // poll if necessary
@@ -92,12 +87,6 @@ async function manualDeltaFlow() {
92
87
  const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
93
88
  await tx.wait();
94
89
 
95
- const slippagePercent = 0.5;
96
- const destAmountAfterSlippage = (
97
- +deltaPrice.destAmount *
98
- (1 - slippagePercent / 100)
99
- ).toString(10);
100
-
101
90
  const signableOrderData = await deltaSDK.buildDeltaOrder({
102
91
  deltaPrice,
103
92
  owner: account,
@@ -106,7 +95,7 @@ async function manualDeltaFlow() {
106
95
  srcToken: DAI_TOKEN,
107
96
  destToken: USDC_TOKEN,
108
97
  srcAmount: amount,
109
- destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
98
+ slippage: 50, // 50 bps = 0.5% slippage, destAmount auto-computed from deltaPrice
110
99
  });
111
100
 
112
101
  const signature = await deltaSDK.signDeltaOrder(signableOrderData);
@@ -0,0 +1,162 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import { ethers, Wallet } from 'ethersV5';
4
+ import {
5
+ constructPartialSDK,
6
+ constructEthersContractCaller,
7
+ constructAxiosFetcher,
8
+ constructAllDeltaOrdersHandlers,
9
+ SwapSide,
10
+ } from '..';
11
+ import { startStatusCheck } from './helpers/delta';
12
+
13
+ const fetcher = constructAxiosFetcher(axios);
14
+
15
+ const provider = ethers.getDefaultProvider(1); // Ethereum
16
+ const signer = Wallet.createRandom().connect(provider);
17
+ const account = signer.address;
18
+ const contractCaller = constructEthersContractCaller(
19
+ {
20
+ ethersProviderOrSigner: signer,
21
+ EthersContract: ethers.Contract,
22
+ },
23
+ account
24
+ );
25
+
26
+ const deltaSDK = constructPartialSDK(
27
+ {
28
+ chainId: 1, // Ethereum
29
+ fetcher,
30
+ contractCaller,
31
+ },
32
+ constructAllDeltaOrdersHandlers
33
+ );
34
+
35
+ // Ethereum tokens
36
+ const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
37
+ const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
38
+
39
+ // Aave external handler on Ethereum (https://etherscan.io/address/0xb4a2c36668cf8b19fe08f263e3685a5e16e82912#code)
40
+ // The handler contract is provided by the integrator and must implement IExternalProtocolHandler.
41
+ // Different handlers serve different purposes and may have different prerequisites
42
+ // (e.g. token approvals, credit delegation, position setup).
43
+ const AAVE_HANDLER = '0xb4a2c36668cf8b19fe08f263e3685a5e16e82912';
44
+
45
+ // Aave-specific order types passed as `data` field.
46
+ // The `data` encoding is handler-specific — each handler defines its own format.
47
+ const AaveOrderTypes = {
48
+ COLLATERAL_SWAP:
49
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
50
+ DEBT_SWAP:
51
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
52
+ REPAY_WITH_COLLATERAL:
53
+ '0x0000000000000000000000000000000000000000000000000000000000000002',
54
+ };
55
+
56
+ // Aave Collateral Swap: swap one collateral asset for another (SELL side)
57
+ // Prerequisites: user must approve the source aToken to the handler
58
+ async function collateralSwapFlow() {
59
+ const amount = ethers.utils.parseUnits('1', 6).toString(); // 1 USDC
60
+
61
+ const deltaPrice = await deltaSDK.getDeltaPrice({
62
+ srcToken: USDC,
63
+ destToken: WETH,
64
+ amount,
65
+ userAddress: account,
66
+ srcDecimals: 6,
67
+ destDecimals: 18,
68
+ side: SwapSide.SELL,
69
+ });
70
+
71
+ const signableOrderData = await deltaSDK.buildExternalDeltaOrder({
72
+ deltaPrice,
73
+ owner: account,
74
+ handler: AAVE_HANDLER,
75
+ data: AaveOrderTypes.COLLATERAL_SWAP,
76
+ srcToken: USDC,
77
+ destToken: WETH,
78
+ srcAmount: amount,
79
+ slippage: 50, // 0.5% slippage in bps
80
+ });
81
+
82
+ const signature = await deltaSDK.signExternalDeltaOrder(signableOrderData);
83
+
84
+ const deltaAuction = await deltaSDK.postExternalDeltaOrder({
85
+ order: signableOrderData.data,
86
+ signature,
87
+ });
88
+
89
+ startStatusCheck(() => deltaSDK.getDeltaOrderById(deltaAuction.id));
90
+ }
91
+
92
+ // Aave Debt Swap: swap one debt for another (BUY side)
93
+ // Prerequisites: user must grant borrowAllowance on the source variable debt token to the handler
94
+ async function debtSwapFlow() {
95
+ const debtAmount = ethers.utils.parseUnits('1', 6).toString(); // amount of debt to swap
96
+
97
+ const deltaPrice = await deltaSDK.getDeltaPrice({
98
+ srcToken: USDC,
99
+ destToken: WETH,
100
+ amount: debtAmount,
101
+ userAddress: account,
102
+ srcDecimals: 6,
103
+ destDecimals: 18,
104
+ side: SwapSide.BUY,
105
+ });
106
+
107
+ const signableOrderData = await deltaSDK.buildExternalDeltaOrder({
108
+ deltaPrice,
109
+ owner: account,
110
+ handler: AAVE_HANDLER,
111
+ data: AaveOrderTypes.DEBT_SWAP,
112
+ srcToken: USDC,
113
+ destToken: WETH,
114
+ destAmount: debtAmount,
115
+ slippage: 50, // 0.5% slippage in bps
116
+ });
117
+
118
+ const signature = await deltaSDK.signExternalDeltaOrder(signableOrderData);
119
+
120
+ const deltaAuction = await deltaSDK.postExternalDeltaOrder({
121
+ order: signableOrderData.data,
122
+ signature,
123
+ });
124
+
125
+ startStatusCheck(() => deltaSDK.getDeltaOrderById(deltaAuction.id));
126
+ }
127
+
128
+ // Aave Repay with Collateral: use collateral to repay debt (BUY side)
129
+ // Prerequisites: user must approve the source aToken to the handler
130
+ async function repayWithCollateralFlow() {
131
+ const collateralAmount = ethers.utils.parseUnits('1', 6).toString();
132
+
133
+ const deltaPrice = await deltaSDK.getDeltaPrice({
134
+ srcToken: USDC,
135
+ destToken: WETH,
136
+ amount: collateralAmount,
137
+ userAddress: account,
138
+ srcDecimals: 6,
139
+ destDecimals: 18,
140
+ side: SwapSide.BUY,
141
+ });
142
+
143
+ const signableOrderData = await deltaSDK.buildExternalDeltaOrder({
144
+ deltaPrice,
145
+ owner: account,
146
+ handler: AAVE_HANDLER,
147
+ data: AaveOrderTypes.REPAY_WITH_COLLATERAL,
148
+ srcToken: USDC,
149
+ destToken: WETH,
150
+ destAmount: collateralAmount,
151
+ slippage: 50, // 0.5% slippage in bps
152
+ });
153
+
154
+ const signature = await deltaSDK.signExternalDeltaOrder(signableOrderData);
155
+
156
+ const deltaAuction = await deltaSDK.postExternalDeltaOrder({
157
+ order: signableOrderData.data,
158
+ signature,
159
+ });
160
+
161
+ startStatusCheck(() => deltaSDK.getDeltaOrderById(deltaAuction.id));
162
+ }
@@ -1,20 +1,24 @@
1
- import { DeltaAuction, DeltaOrderFromAPI } from '../..';
1
+ import { DeltaAuction } from '../..';
2
2
 
3
3
  function isExecutedDeltaAuction(
4
- auction: Omit<DeltaAuction, 'signature'>,
4
+ auction: DeltaAuction,
5
5
  waitForCrosschain = true // only consider executed when destChain work is done
6
6
  ) {
7
7
  if (auction.status !== 'EXECUTED') return false;
8
8
 
9
9
  // crosschain Order is executed on destChain if bridgeStatus is filled
10
- if (waitForCrosschain && auction.order.bridge.destinationChainId !== 0) {
10
+ if (
11
+ waitForCrosschain &&
12
+ auction.onChainOrderType === 'Order' &&
13
+ auction.order.bridge.destinationChainId !== 0
14
+ ) {
11
15
  return auction.bridgeStatus === 'filled';
12
16
  }
13
17
 
14
18
  return true;
15
19
  }
16
20
 
17
- type GetDeltaOrderFn = () => Promise<DeltaOrderFromAPI>;
21
+ type GetDeltaOrderFn = () => Promise<DeltaAuction>;
18
22
 
19
23
  function fetchOrderPeriodically(getDeltaOrder: GetDeltaOrderFn) {
20
24
  const intervalId = setInterval(async () => {
package/src/gas.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/src/index.js ADDED
@@ -0,0 +1,142 @@
1
+ import { constructApproveToken } from './methods/swap/approve';
2
+ import { constructGetBalances, isAllowance } from './methods/swap/balance';
3
+ import { constructGetSpender } from './methods/swap/spender';
4
+ import { constructGetAdapters } from './methods/swap/adapters';
5
+ import { constructGetRate } from './methods/swap/rates';
6
+ import { constructSwapTx } from './methods/swap/swapTx';
7
+ import { constructGetTokens } from './methods/swap/token';
8
+ import { constructBuildTx } from './methods/swap/transaction';
9
+ import { constructBuildLimitOrder } from './methods/limitOrders/buildOrder';
10
+ import { constructSignLimitOrder } from './methods/limitOrders/signOrder';
11
+ import { constructCancelLimitOrder } from './methods/limitOrders/cancelOrder';
12
+ import { constructFillOrderDirectly } from './methods/limitOrders/fillOrderDirectly';
13
+ import { constructGetLimitOrders } from './methods/limitOrders/getOrders';
14
+ import { constructPostLimitOrder } from './methods/limitOrders/postOrder';
15
+ import { constructApproveTokenForLimitOrder } from './methods/limitOrders/approveForOrder';
16
+ import { constructGetLimitOrdersContract } from './methods/limitOrders/getOrdersContract';
17
+ import { constructBuildLimitOrderTx } from './methods/limitOrders/transaction';
18
+ import { constructBuildNFTOrder } from './methods/nftOrders/buildOrder';
19
+ import { constructSignNFTOrder } from './methods/nftOrders/signOrder';
20
+ import { constructCancelNFTOrder } from './methods/nftOrders/cancelOrder';
21
+ import { constructGetNFTOrders } from './methods/nftOrders/getOrders';
22
+ import { constructPostNFTOrder } from './methods/nftOrders/postOrder';
23
+ import { constructApproveTokenForNFTOrder } from './methods/nftOrders/approveForOrder';
24
+ import { constructGetNFTOrdersContract } from './methods/nftOrders/getOrdersContract';
25
+ import { constructBuildNFTOrderTx } from './methods/nftOrders/transaction';
26
+ import {
27
+ constructEthersContractCaller,
28
+ constructEthersV5ContractCaller,
29
+ constructEthersV6ContractCaller,
30
+ constructWeb3ContractCaller,
31
+ constructViemContractCaller,
32
+ txParamsToViemTxParams,
33
+ constructAxiosFetcher,
34
+ constructFetchFetcher,
35
+ isFetcherError,
36
+ constructToken,
37
+ } from './helpers';
38
+ import { constructBuildDeltaOrder } from './methods/delta/buildDeltaOrder';
39
+ import { constructPostDeltaOrder } from './methods/delta/postDeltaOrder';
40
+ import { constructSignDeltaOrder } from './methods/delta/signDeltaOrder';
41
+ import { constructPreSignDeltaOrder } from './methods/delta/preSignDeltaOrder';
42
+ import { constructGetDeltaContract } from './methods/delta/getDeltaContract';
43
+ import { constructGetDeltaPrice } from './methods/delta/getDeltaPrice';
44
+ import { constructGetDeltaOrders } from './methods/delta/getDeltaOrders';
45
+ import { constructApproveTokenForDelta } from './methods/delta/approveForDelta';
46
+ import { constructGetPartnerFee } from './methods/delta/getPartnerFee';
47
+ import { constructGetBridgeInfo } from './methods/delta/getBridgeInfo';
48
+ import { constructIsTokenSupportedInDelta } from './methods/delta/isTokenSupportedInDelta';
49
+ import { constructBuildExternalDeltaOrder } from './methods/delta/buildExternalDeltaOrder';
50
+ import { constructSignExternalDeltaOrder } from './methods/delta/signExternalDeltaOrder';
51
+ import { constructPostExternalDeltaOrder } from './methods/delta/postExternalDeltaOrder';
52
+ import { constructPreSignExternalDeltaOrder } from './methods/delta/preSignExternalDeltaOrder';
53
+ import { constructGetQuote } from './methods/quote/getQuote';
54
+ import { constructCancelDeltaOrder } from './methods/delta/cancelDeltaOrder';
55
+ import { constructDeltaTokenModule } from './methods/delta/deltaTokenModule';
56
+ export { constructSwapSDK } from './methods/swap';
57
+ export {
58
+ constructAllLimitOrdersHandlers,
59
+ constructSubmitLimitOrder,
60
+ } from './methods/limitOrders';
61
+ export {
62
+ constructAllDeltaOrdersHandlers,
63
+ constructSubmitDeltaOrder,
64
+ constructSubmitExternalDeltaOrder,
65
+ } from './methods/delta';
66
+ export * from './constants';
67
+ // can import these individually
68
+ // and use in constructPartialSDK only what you need
69
+ // unused should tree-shake
70
+ export {
71
+ // swap methods:
72
+ constructApproveToken,
73
+ constructGetBalances, // getAllowances is inside
74
+ constructGetSpender, // this was getTokenTransferProxy
75
+ constructGetTokens,
76
+ constructBuildTx,
77
+ constructGetAdapters,
78
+ constructGetRate,
79
+ constructSwapTx,
80
+ // limitOrders methods:
81
+ constructBuildLimitOrder,
82
+ constructSignLimitOrder,
83
+ constructCancelLimitOrder,
84
+ constructFillOrderDirectly,
85
+ constructGetLimitOrders,
86
+ constructPostLimitOrder,
87
+ constructApproveTokenForLimitOrder,
88
+ constructGetLimitOrdersContract,
89
+ constructBuildLimitOrderTx,
90
+ // nftOrders methods
91
+ constructBuildNFTOrder,
92
+ constructSignNFTOrder,
93
+ constructCancelNFTOrder,
94
+ constructGetNFTOrders,
95
+ constructPostNFTOrder,
96
+ constructApproveTokenForNFTOrder,
97
+ constructGetNFTOrdersContract,
98
+ constructBuildNFTOrderTx,
99
+ // Delta methods
100
+ constructBuildDeltaOrder,
101
+ constructPostDeltaOrder,
102
+ constructSignDeltaOrder,
103
+ constructPreSignDeltaOrder,
104
+ constructGetDeltaContract,
105
+ constructGetDeltaPrice,
106
+ constructGetDeltaOrders,
107
+ constructCancelDeltaOrder,
108
+ constructDeltaTokenModule,
109
+ constructApproveTokenForDelta,
110
+ // External Delta methods
111
+ constructBuildExternalDeltaOrder,
112
+ constructSignExternalDeltaOrder,
113
+ constructPostExternalDeltaOrder,
114
+ constructPreSignExternalDeltaOrder,
115
+ // Quote methods
116
+ constructGetQuote,
117
+ // different helpers
118
+ constructGetPartnerFee,
119
+ constructGetBridgeInfo,
120
+ constructIsTokenSupportedInDelta,
121
+ constructEthersContractCaller, // same as constructEthersV5ContractCaller for backwards compatibility
122
+ constructEthersV5ContractCaller,
123
+ constructEthersV6ContractCaller,
124
+ constructWeb3ContractCaller,
125
+ constructViemContractCaller,
126
+ txParamsToViemTxParams,
127
+ constructAxiosFetcher,
128
+ constructFetchFetcher,
129
+ isFetcherError,
130
+ isAllowance,
131
+ constructToken,
132
+ };
133
+ export { constructPartialSDK } from './sdk/partial';
134
+ export { constructFullSDK } from './sdk/full';
135
+ export { constructSimpleSDK } from './sdk/simple';
136
+ // bundled methods for limitOrders
137
+ export * from './methods/limitOrders';
138
+ export * from './methods/limitOrders/helpers/types';
139
+ // bundled methods for nftOrders
140
+ export * from './methods/nftOrders';
141
+ export * from './methods/nftOrders/helpers/types';
142
+ export { AssetType } from './methods/nftOrders/helpers/misc';
package/src/index.ts CHANGED
@@ -144,17 +144,18 @@ import type {
144
144
  BridgeMetadata,
145
145
  BridgeStatus,
146
146
  Bridge,
147
+ ExternalDeltaOrder,
148
+ OnChainOrderType,
149
+ SwapSideUnion,
147
150
  } from './methods/delta/helpers/types';
148
151
  import {
149
152
  BuildDeltaOrderDataParams,
150
153
  BuildDeltaOrderFunctions,
151
154
  constructBuildDeltaOrder,
152
155
  SignableDeltaOrderData,
153
- SwapSideUnion,
154
156
  } from './methods/delta/buildDeltaOrder';
155
157
  import {
156
158
  constructPostDeltaOrder,
157
- DeltaOrderApiResponse,
158
159
  PostDeltaOrderFunctions,
159
160
  PostDeltaOrderParams,
160
161
  } from './methods/delta/postDeltaOrder';
@@ -203,6 +204,26 @@ import {
203
204
  IsTokenSupportedInDeltaFunctions,
204
205
  } from './methods/delta/isTokenSupportedInDelta';
205
206
 
207
+ import {
208
+ constructBuildExternalDeltaOrder,
209
+ BuildExternalDeltaOrderFunctions,
210
+ BuildExternalDeltaOrderParams,
211
+ } from './methods/delta/buildExternalDeltaOrder';
212
+ import type { SignableExternalOrderData } from './methods/delta/helpers/buildExternalOrderData';
213
+ import {
214
+ constructSignExternalDeltaOrder,
215
+ SignExternalDeltaOrderFunctions,
216
+ } from './methods/delta/signExternalDeltaOrder';
217
+ import {
218
+ constructPostExternalDeltaOrder,
219
+ PostExternalDeltaOrderFunctions,
220
+ PostExternalDeltaOrderParams,
221
+ } from './methods/delta/postExternalDeltaOrder';
222
+ import {
223
+ constructPreSignExternalDeltaOrder,
224
+ PreSignExternalDeltaOrderFunctions,
225
+ } from './methods/delta/preSignExternalDeltaOrder';
226
+
206
227
  import {
207
228
  constructGetQuote,
208
229
  GetQuoteFunctions,
@@ -235,8 +256,10 @@ export {
235
256
  export {
236
257
  constructAllDeltaOrdersHandlers,
237
258
  constructSubmitDeltaOrder,
259
+ constructSubmitExternalDeltaOrder,
238
260
  DeltaOrderHandlers,
239
261
  SubmitDeltaOrderParams,
262
+ SubmitExternalDeltaOrderParams,
240
263
  } from './methods/delta';
241
264
 
242
265
  export type {
@@ -309,6 +332,11 @@ export {
309
332
  constructCancelDeltaOrder,
310
333
  constructDeltaTokenModule,
311
334
  constructApproveTokenForDelta,
335
+ // External Delta methods
336
+ constructBuildExternalDeltaOrder,
337
+ constructSignExternalDeltaOrder,
338
+ constructPostExternalDeltaOrder,
339
+ constructPreSignExternalDeltaOrder,
312
340
  // Quote methods
313
341
  constructGetQuote,
314
342
  // different helpers
@@ -382,7 +410,6 @@ export type {
382
410
  DeltaAuction,
383
411
  DeltaAuctionStatus,
384
412
  DeltaOrderFilterByStatus,
385
- DeltaOrderApiResponse,
386
413
  DeltaOrderFromAPI,
387
414
  // bridge part of DeltaOrder
388
415
  BridgeMetadata,
@@ -407,6 +434,16 @@ export type {
407
434
  CancelAndWithdrawDeltaOrderParams,
408
435
  DepositNativeAndPreSignParams,
409
436
  DepositNativeAndPreSignDeltaOrderParams,
437
+ // External Delta types
438
+ ExternalDeltaOrder,
439
+ OnChainOrderType,
440
+ SignableExternalOrderData,
441
+ BuildExternalDeltaOrderParams,
442
+ BuildExternalDeltaOrderFunctions,
443
+ SignExternalDeltaOrderFunctions,
444
+ PostExternalDeltaOrderFunctions,
445
+ PostExternalDeltaOrderParams,
446
+ PreSignExternalDeltaOrderFunctions,
410
447
  // types for Quote methods
411
448
  GetQuoteFunctions,
412
449
  QuoteParams,
@@ -1,8 +1,4 @@
1
- import type {
2
- ConstructFetchInput,
3
- EnumerateLiteral,
4
- RequestParameters,
5
- } from '../../types';
1
+ import type { ConstructFetchInput, RequestParameters } from '../../types';
6
2
  import { constructGetDeltaContract } from './getDeltaContract';
7
3
  import type { BridgePrice } from './getDeltaPrice';
8
4
  import { constructGetPartnerFee } from './getPartnerFee';
@@ -11,15 +7,13 @@ import {
11
7
  type BuildDeltaOrderDataInput,
12
8
  type SignableDeltaOrderData,
13
9
  } from './helpers/buildDeltaOrderData';
10
+ import type { AmountsWithSlippage } from './helpers/types';
14
11
  import { SwapSideToOrderKind } from './helpers/types';
15
- import { SwapSide } from '../../constants';
12
+ import { resolvePartnerFee, resolveAmounts } from './helpers/misc';
16
13
  import type { MarkOptional } from 'ts-essentials';
17
- import { ZERO_ADDRESS } from '../common/orders/buildOrderData';
18
14
  export type { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';
19
15
 
20
- export type SwapSideUnion = EnumerateLiteral<typeof SwapSide>;
21
-
22
- export type BuildDeltaOrderDataParams = {
16
+ type BuildDeltaOrderDataParamsBase = {
23
17
  /** @description The address of the order owner */
24
18
  owner: string;
25
19
  /** @description The address of the order beneficiary */
@@ -28,10 +22,6 @@ export type BuildDeltaOrderDataParams = {
28
22
  srcToken: string; // lowercase
29
23
  /** @description The address of the dest token. For Crosschain Order - destination token on the destination chain */
30
24
  destToken: string; // lowercase
31
- /** @description The amount of src token to swap */
32
- srcAmount: string; // wei
33
- /** @description The minimum amount of dest token to receive */
34
- destAmount: string; // wei, deltaPrice.destAmount - slippage
35
25
  /** @description The deadline for the order */
36
26
  deadline?: number; // seconds
37
27
  /** @description The nonce of the order */
@@ -68,12 +58,13 @@ export type BuildDeltaOrderDataParams = {
68
58
  /** @description A boolean indicating whether the surplus should be capped. True by default */
69
59
  capSurplus?: boolean;
70
60
 
71
- /** @description The side of the order. Default is SELL */
72
- side?: SwapSideUnion;
73
61
  /** @description Metadata for the order, hex string */
74
62
  metadata?: string;
75
63
  };
76
64
 
65
+ export type BuildDeltaOrderDataParams = BuildDeltaOrderDataParamsBase &
66
+ AmountsWithSlippage;
67
+
77
68
  type BuildDeltaOrder = (
78
69
  buildOrderParams: BuildDeltaOrderDataParams,
79
70
  requestParams?: RequestParameters
@@ -100,50 +91,11 @@ export const constructBuildDeltaOrder = (
100
91
  throw new Error(`Delta is not available on chain ${chainId}`);
101
92
  }
102
93
 
103
- ////// Partner logic //////
104
-
105
- // externally supplied partner fee data takes precedence
106
- let partnerAddress = options.partnerAddress;
107
- let partnerFeeBps =
108
- options.partnerFeeBps ??
109
- (options.deltaPrice.partnerFee
110
- ? options.deltaPrice.partnerFee * 100
111
- : undefined);
112
- let partnerTakesSurplus = options.partnerTakesSurplus;
113
-
114
- // if fee given, takeSurplus is ignored
115
- const feeOrTakeSurplusSupplied =
116
- partnerFeeBps !== undefined || partnerTakesSurplus !== undefined;
117
-
118
- if (partnerAddress === undefined || feeOrTakeSurplusSupplied) {
119
- const partner = options.partner || options.deltaPrice.partner;
120
- if (!partner) {
121
- // if no partner given in options or deltaPrice, default partnerAddress to zero,
122
- // unless supplied explicitly
123
- partnerAddress = partnerAddress ?? ZERO_ADDRESS;
124
- } else {
125
- const partnerFeeResponse = await getPartnerFee(
126
- { partner },
127
- requestParams
128
- );
129
-
130
- partnerAddress = partnerAddress ?? partnerFeeResponse.partnerAddress;
131
- // deltaPrice.partnerFee and partnerFeeResponse.partnerFee should be the same, but give priority to externally provided
132
- partnerFeeBps = partnerFeeBps ?? partnerFeeResponse.partnerFee;
133
- partnerTakesSurplus =
134
- partnerTakesSurplus ?? partnerFeeResponse.takeSurplus;
135
- }
136
- }
137
-
138
- partnerFeeBps = partnerFeeBps ?? 0;
139
- partnerTakesSurplus = partnerTakesSurplus ?? false;
140
-
141
- const swapSide = options.side ?? SwapSide.SELL;
94
+ const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =
95
+ await resolvePartnerFee(options, getPartnerFee, requestParams);
142
96
 
143
- const expectedAmount =
144
- swapSide === SwapSide.SELL
145
- ? options.deltaPrice.destAmount
146
- : options.deltaPrice.srcAmount;
97
+ const { srcAmount, destAmount, expectedAmount, swapSide } =
98
+ resolveAmounts(options);
147
99
 
148
100
  const input: BuildDeltaOrderDataInput = {
149
101
  owner: options.owner,
@@ -152,8 +104,8 @@ export const constructBuildDeltaOrder = (
152
104
  // for some cases of WETH->ETH crosschain swaps, the destToken is changed to WETH or ETH,
153
105
  // this is already reflected in deltaPrice
154
106
  destToken: options.deltaPrice.destToken,
155
- srcAmount: options.srcAmount,
156
- destAmount: options.destAmount,
107
+ srcAmount,
108
+ destAmount,
157
109
  expectedAmount,
158
110
  deadline: options.deadline,
159
111
  nonce: options.nonce?.toString(10),