@velora-dex/sdk 8.0.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 (284) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +494 -0
  3. package/dist/constants.d.ts +7 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/examples/customFetcher.d.ts +3 -0
  6. package/dist/examples/customFetcher.d.ts.map +1 -0
  7. package/dist/examples/delta.d.ts +2 -0
  8. package/dist/examples/delta.d.ts.map +1 -0
  9. package/dist/examples/ethersV6.d.ts +2 -0
  10. package/dist/examples/ethersV6.d.ts.map +1 -0
  11. package/dist/examples/limitOrders_all.d.ts +2 -0
  12. package/dist/examples/limitOrders_all.d.ts.map +1 -0
  13. package/dist/examples/limitOrders_partial.d.ts +2 -0
  14. package/dist/examples/limitOrders_partial.d.ts.map +1 -0
  15. package/dist/examples/limitOrders_postOrder.d.ts +2 -0
  16. package/dist/examples/limitOrders_postOrder.d.ts.map +1 -0
  17. package/dist/examples/partial.d.ts +2 -0
  18. package/dist/examples/partial.d.ts.map +1 -0
  19. package/dist/examples/quote.d.ts +2 -0
  20. package/dist/examples/quote.d.ts.map +1 -0
  21. package/dist/examples/sdk.d.ts +2 -0
  22. package/dist/examples/sdk.d.ts.map +1 -0
  23. package/dist/examples/simple.d.ts +2 -0
  24. package/dist/examples/simple.d.ts.map +1 -0
  25. package/dist/examples/simpleQuote.d.ts +2 -0
  26. package/dist/examples/simpleQuote.d.ts.map +1 -0
  27. package/dist/examples/viem.d.ts +2 -0
  28. package/dist/examples/viem.d.ts.map +1 -0
  29. package/dist/examples/wagmi.d.ts +43 -0
  30. package/dist/examples/wagmi.d.ts.map +1 -0
  31. package/dist/examples/web3.d.ts +2 -0
  32. package/dist/examples/web3.d.ts.map +1 -0
  33. package/dist/gas.d.ts +8 -0
  34. package/dist/gas.d.ts.map +1 -0
  35. package/dist/helpers/approve.d.ts +8 -0
  36. package/dist/helpers/approve.d.ts.map +1 -0
  37. package/dist/helpers/fetchers/axios.d.ts +5 -0
  38. package/dist/helpers/fetchers/axios.d.ts.map +1 -0
  39. package/dist/helpers/fetchers/fetch.d.ts +5 -0
  40. package/dist/helpers/fetchers/fetch.d.ts.map +1 -0
  41. package/dist/helpers/index.d.ts +13 -0
  42. package/dist/helpers/index.d.ts.map +1 -0
  43. package/dist/helpers/misc.d.ts +48 -0
  44. package/dist/helpers/misc.d.ts.map +1 -0
  45. package/dist/helpers/providers/ethers.d.ts +10 -0
  46. package/dist/helpers/providers/ethers.d.ts.map +1 -0
  47. package/dist/helpers/providers/ethersV6.d.ts +8 -0
  48. package/dist/helpers/providers/ethersV6.d.ts.map +1 -0
  49. package/dist/helpers/providers/helpers.d.ts +3 -0
  50. package/dist/helpers/providers/helpers.d.ts.map +1 -0
  51. package/dist/helpers/providers/viem.d.ts +23 -0
  52. package/dist/helpers/providers/viem.d.ts.map +1 -0
  53. package/dist/helpers/providers/web3.d.ts +9 -0
  54. package/dist/helpers/providers/web3.d.ts.map +1 -0
  55. package/dist/helpers/token.d.ts +38 -0
  56. package/dist/helpers/token.d.ts.map +1 -0
  57. package/dist/index.d.ts +64 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +8 -0
  60. package/dist/methods/common/orders/buildOrderData.d.ts +27 -0
  61. package/dist/methods/common/orders/buildOrderData.d.ts.map +1 -0
  62. package/dist/methods/common/orders/encoding.d.ts +23 -0
  63. package/dist/methods/common/orders/encoding.d.ts.map +1 -0
  64. package/dist/methods/common/orders/misc.d.ts +27 -0
  65. package/dist/methods/common/orders/misc.d.ts.map +1 -0
  66. package/dist/methods/common/orders/signature.d.ts +9 -0
  67. package/dist/methods/common/orders/signature.d.ts.map +1 -0
  68. package/dist/methods/common/orders/types.d.ts +8 -0
  69. package/dist/methods/common/orders/types.d.ts.map +1 -0
  70. package/dist/methods/delta/approveForDelta.d.ts +8 -0
  71. package/dist/methods/delta/approveForDelta.d.ts.map +1 -0
  72. package/dist/methods/delta/buildCrosschainOrderBridge.d.ts +23 -0
  73. package/dist/methods/delta/buildCrosschainOrderBridge.d.ts.map +1 -0
  74. package/dist/methods/delta/buildDeltaOrder.d.ts +49 -0
  75. package/dist/methods/delta/buildDeltaOrder.d.ts.map +1 -0
  76. package/dist/methods/delta/getBridgeInfo.d.ts +9 -0
  77. package/dist/methods/delta/getBridgeInfo.d.ts.map +1 -0
  78. package/dist/methods/delta/getDeltaContract.d.ts +9 -0
  79. package/dist/methods/delta/getDeltaContract.d.ts.map +1 -0
  80. package/dist/methods/delta/getDeltaOrders.d.ts +22 -0
  81. package/dist/methods/delta/getDeltaOrders.d.ts.map +1 -0
  82. package/dist/methods/delta/getDeltaPrice.d.ts +58 -0
  83. package/dist/methods/delta/getDeltaPrice.d.ts.map +1 -0
  84. package/dist/methods/delta/getMulticallHandlers.d.ts +9 -0
  85. package/dist/methods/delta/getMulticallHandlers.d.ts.map +1 -0
  86. package/dist/methods/delta/getPartnerFee.d.ts +16 -0
  87. package/dist/methods/delta/getPartnerFee.d.ts.map +1 -0
  88. package/dist/methods/delta/helpers/across.d.ts +22 -0
  89. package/dist/methods/delta/helpers/across.d.ts.map +1 -0
  90. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts +35 -0
  91. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts.map +1 -0
  92. package/dist/methods/delta/helpers/composePermit.d.ts +5 -0
  93. package/dist/methods/delta/helpers/composePermit.d.ts.map +1 -0
  94. package/dist/methods/delta/helpers/misc.d.ts +3 -0
  95. package/dist/methods/delta/helpers/misc.d.ts.map +1 -0
  96. package/dist/methods/delta/helpers/types.d.ts +96 -0
  97. package/dist/methods/delta/helpers/types.d.ts.map +1 -0
  98. package/dist/methods/delta/index.d.ts +28 -0
  99. package/dist/methods/delta/index.d.ts.map +1 -0
  100. package/dist/methods/delta/isTokenSupportedInDelta.d.ts +8 -0
  101. package/dist/methods/delta/isTokenSupportedInDelta.d.ts.map +1 -0
  102. package/dist/methods/delta/postDeltaOrder.d.ts +23 -0
  103. package/dist/methods/delta/postDeltaOrder.d.ts.map +1 -0
  104. package/dist/methods/delta/signDeltaOrder.d.ts +12 -0
  105. package/dist/methods/delta/signDeltaOrder.d.ts.map +1 -0
  106. package/dist/methods/limitOrders/approveForOrder.d.ts +12 -0
  107. package/dist/methods/limitOrders/approveForOrder.d.ts.map +1 -0
  108. package/dist/methods/limitOrders/buildOrder.d.ts +11 -0
  109. package/dist/methods/limitOrders/buildOrder.d.ts.map +1 -0
  110. package/dist/methods/limitOrders/cancelOrder.d.ts +9 -0
  111. package/dist/methods/limitOrders/cancelOrder.d.ts.map +1 -0
  112. package/dist/methods/limitOrders/fillOrderDirectly.d.ts +30 -0
  113. package/dist/methods/limitOrders/fillOrderDirectly.d.ts.map +1 -0
  114. package/dist/methods/limitOrders/getOrders.d.ts +39 -0
  115. package/dist/methods/limitOrders/getOrders.d.ts.map +1 -0
  116. package/dist/methods/limitOrders/getOrdersContract.d.ts +8 -0
  117. package/dist/methods/limitOrders/getOrdersContract.d.ts.map +1 -0
  118. package/dist/methods/limitOrders/helpers/buildOrderData.d.ts +43 -0
  119. package/dist/methods/limitOrders/helpers/buildOrderData.d.ts.map +1 -0
  120. package/dist/methods/limitOrders/helpers/misc.d.ts +9 -0
  121. package/dist/methods/limitOrders/helpers/misc.d.ts.map +1 -0
  122. package/dist/methods/limitOrders/helpers/types.d.ts +49 -0
  123. package/dist/methods/limitOrders/helpers/types.d.ts.map +1 -0
  124. package/dist/methods/limitOrders/index.d.ts +30 -0
  125. package/dist/methods/limitOrders/index.d.ts.map +1 -0
  126. package/dist/methods/limitOrders/postOrder.d.ts +10 -0
  127. package/dist/methods/limitOrders/postOrder.d.ts.map +1 -0
  128. package/dist/methods/limitOrders/signOrder.d.ts +7 -0
  129. package/dist/methods/limitOrders/signOrder.d.ts.map +1 -0
  130. package/dist/methods/limitOrders/transaction.d.ts +23 -0
  131. package/dist/methods/limitOrders/transaction.d.ts.map +1 -0
  132. package/dist/methods/nftOrders/approveForOrder.d.ts +12 -0
  133. package/dist/methods/nftOrders/approveForOrder.d.ts.map +1 -0
  134. package/dist/methods/nftOrders/buildOrder.d.ts +11 -0
  135. package/dist/methods/nftOrders/buildOrder.d.ts.map +1 -0
  136. package/dist/methods/nftOrders/cancelOrder.d.ts +8 -0
  137. package/dist/methods/nftOrders/cancelOrder.d.ts.map +1 -0
  138. package/dist/methods/nftOrders/getOrders.d.ts +18 -0
  139. package/dist/methods/nftOrders/getOrders.d.ts.map +1 -0
  140. package/dist/methods/nftOrders/getOrdersContract.d.ts +8 -0
  141. package/dist/methods/nftOrders/getOrdersContract.d.ts.map +1 -0
  142. package/dist/methods/nftOrders/helpers/buildOrderData.d.ts +52 -0
  143. package/dist/methods/nftOrders/helpers/buildOrderData.d.ts.map +1 -0
  144. package/dist/methods/nftOrders/helpers/misc.d.ts +13 -0
  145. package/dist/methods/nftOrders/helpers/misc.d.ts.map +1 -0
  146. package/dist/methods/nftOrders/helpers/types.d.ts +39 -0
  147. package/dist/methods/nftOrders/helpers/types.d.ts.map +1 -0
  148. package/dist/methods/nftOrders/index.d.ts +23 -0
  149. package/dist/methods/nftOrders/index.d.ts.map +1 -0
  150. package/dist/methods/nftOrders/postOrder.d.ts +10 -0
  151. package/dist/methods/nftOrders/postOrder.d.ts.map +1 -0
  152. package/dist/methods/nftOrders/signOrder.d.ts +7 -0
  153. package/dist/methods/nftOrders/signOrder.d.ts.map +1 -0
  154. package/dist/methods/nftOrders/transaction.d.ts +23 -0
  155. package/dist/methods/nftOrders/transaction.d.ts.map +1 -0
  156. package/dist/methods/quote/getQuote.d.ts +51 -0
  157. package/dist/methods/quote/getQuote.d.ts.map +1 -0
  158. package/dist/methods/swap/adapters.d.ts +8 -0
  159. package/dist/methods/swap/adapters.d.ts.map +1 -0
  160. package/dist/methods/swap/approve.d.ts +10 -0
  161. package/dist/methods/swap/approve.d.ts.map +1 -0
  162. package/dist/methods/swap/balance.d.ts +23 -0
  163. package/dist/methods/swap/balance.d.ts.map +1 -0
  164. package/dist/methods/swap/helpers/normalizeRateOptions.d.ts +12 -0
  165. package/dist/methods/swap/helpers/normalizeRateOptions.d.ts.map +1 -0
  166. package/dist/methods/swap/index.d.ts +13 -0
  167. package/dist/methods/swap/index.d.ts.map +1 -0
  168. package/dist/methods/swap/rates.d.ts +52 -0
  169. package/dist/methods/swap/rates.d.ts.map +1 -0
  170. package/dist/methods/swap/spender.d.ts +21 -0
  171. package/dist/methods/swap/spender.d.ts.map +1 -0
  172. package/dist/methods/swap/swapTx.d.ts +158 -0
  173. package/dist/methods/swap/swapTx.d.ts.map +1 -0
  174. package/dist/methods/swap/token.d.ts +8 -0
  175. package/dist/methods/swap/token.d.ts.map +1 -0
  176. package/dist/methods/swap/transaction.d.ts +115 -0
  177. package/dist/methods/swap/transaction.d.ts.map +1 -0
  178. package/dist/sdk/full.d.ts +17 -0
  179. package/dist/sdk/full.d.ts.map +1 -0
  180. package/dist/sdk/partial.d.ts +31 -0
  181. package/dist/sdk/partial.d.ts.map +1 -0
  182. package/dist/sdk/simple.d.ts +75 -0
  183. package/dist/sdk/simple.d.ts.map +1 -0
  184. package/dist/sdk.cjs.development.js +5182 -0
  185. package/dist/sdk.cjs.development.js.map +1 -0
  186. package/dist/sdk.cjs.production.min.js +2 -0
  187. package/dist/sdk.cjs.production.min.js.map +1 -0
  188. package/dist/sdk.esm.js +5102 -0
  189. package/dist/sdk.esm.js.map +1 -0
  190. package/dist/types.d.ts +161 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/docs/DELTA.md +207 -0
  193. package/package.json +126 -0
  194. package/src/constants.ts +16 -0
  195. package/src/examples/customFetcher.ts +44 -0
  196. package/src/examples/delta.ts +127 -0
  197. package/src/examples/ethersV6.ts +38 -0
  198. package/src/examples/limitOrders_all.ts +135 -0
  199. package/src/examples/limitOrders_partial.ts +171 -0
  200. package/src/examples/limitOrders_postOrder.ts +77 -0
  201. package/src/examples/partial.ts +34 -0
  202. package/src/examples/quote.ts +205 -0
  203. package/src/examples/sdk.ts +39 -0
  204. package/src/examples/simple.ts +44 -0
  205. package/src/examples/simpleQuote.ts +98 -0
  206. package/src/examples/viem.ts +120 -0
  207. package/src/examples/wagmi.ts +68 -0
  208. package/src/examples/web3.ts +32 -0
  209. package/src/gas.ts +7 -0
  210. package/src/helpers/approve.ts +60 -0
  211. package/src/helpers/fetchers/axios.ts +34 -0
  212. package/src/helpers/fetchers/fetch.ts +67 -0
  213. package/src/helpers/index.ts +27 -0
  214. package/src/helpers/misc.ts +160 -0
  215. package/src/helpers/providers/ethers.ts +192 -0
  216. package/src/helpers/providers/ethersV6.ts +121 -0
  217. package/src/helpers/providers/helpers.ts +36 -0
  218. package/src/helpers/providers/viem.ts +205 -0
  219. package/src/helpers/providers/web3.ts +154 -0
  220. package/src/helpers/token.ts +75 -0
  221. package/src/index.ts +425 -0
  222. package/src/methods/common/orders/buildOrderData.ts +29 -0
  223. package/src/methods/common/orders/encoding.ts +216 -0
  224. package/src/methods/common/orders/misc.ts +86 -0
  225. package/src/methods/common/orders/signature.ts +68 -0
  226. package/src/methods/common/orders/types.ts +13 -0
  227. package/src/methods/delta/approveForDelta.ts +38 -0
  228. package/src/methods/delta/buildCrosschainOrderBridge.ts +84 -0
  229. package/src/methods/delta/buildDeltaOrder.ts +192 -0
  230. package/src/methods/delta/getBridgeInfo.ts +38 -0
  231. package/src/methods/delta/getDeltaContract.ts +29 -0
  232. package/src/methods/delta/getDeltaOrders.ts +102 -0
  233. package/src/methods/delta/getDeltaPrice.ts +122 -0
  234. package/src/methods/delta/getMulticallHandlers.ts +44 -0
  235. package/src/methods/delta/getPartnerFee.ts +58 -0
  236. package/src/methods/delta/helpers/across.ts +255 -0
  237. package/src/methods/delta/helpers/buildDeltaOrderData.ts +153 -0
  238. package/src/methods/delta/helpers/composePermit.ts +76 -0
  239. package/src/methods/delta/helpers/misc.ts +32 -0
  240. package/src/methods/delta/helpers/types.ts +110 -0
  241. package/src/methods/delta/index.ts +146 -0
  242. package/src/methods/delta/isTokenSupportedInDelta.ts +54 -0
  243. package/src/methods/delta/postDeltaOrder.ts +50 -0
  244. package/src/methods/delta/signDeltaOrder.ts +41 -0
  245. package/src/methods/limitOrders/approveForOrder.ts +36 -0
  246. package/src/methods/limitOrders/buildOrder.ts +56 -0
  247. package/src/methods/limitOrders/cancelOrder.ts +111 -0
  248. package/src/methods/limitOrders/fillOrderDirectly.ts +277 -0
  249. package/src/methods/limitOrders/getOrders.ts +151 -0
  250. package/src/methods/limitOrders/getOrdersContract.ts +20 -0
  251. package/src/methods/limitOrders/helpers/buildOrderData.ts +121 -0
  252. package/src/methods/limitOrders/helpers/misc.ts +64 -0
  253. package/src/methods/limitOrders/helpers/types.ts +70 -0
  254. package/src/methods/limitOrders/index.ts +154 -0
  255. package/src/methods/limitOrders/postOrder.ts +74 -0
  256. package/src/methods/limitOrders/signOrder.ts +29 -0
  257. package/src/methods/limitOrders/transaction.ts +231 -0
  258. package/src/methods/nftOrders/approveForOrder.ts +79 -0
  259. package/src/methods/nftOrders/buildOrder.ts +52 -0
  260. package/src/methods/nftOrders/cancelOrder.ts +23 -0
  261. package/src/methods/nftOrders/getOrders.ts +84 -0
  262. package/src/methods/nftOrders/getOrdersContract.ts +24 -0
  263. package/src/methods/nftOrders/helpers/buildOrderData.ts +131 -0
  264. package/src/methods/nftOrders/helpers/misc.ts +92 -0
  265. package/src/methods/nftOrders/helpers/types.ts +50 -0
  266. package/src/methods/nftOrders/index.ts +139 -0
  267. package/src/methods/nftOrders/postOrder.ts +71 -0
  268. package/src/methods/nftOrders/signOrder.ts +29 -0
  269. package/src/methods/nftOrders/transaction.ts +234 -0
  270. package/src/methods/quote/getQuote.ts +131 -0
  271. package/src/methods/swap/adapters.ts +49 -0
  272. package/src/methods/swap/approve.ts +51 -0
  273. package/src/methods/swap/balance.ts +147 -0
  274. package/src/methods/swap/helpers/normalizeRateOptions.ts +55 -0
  275. package/src/methods/swap/index.ts +38 -0
  276. package/src/methods/swap/rates.ts +276 -0
  277. package/src/methods/swap/spender.ts +76 -0
  278. package/src/methods/swap/swapTx.ts +266 -0
  279. package/src/methods/swap/token.ts +35 -0
  280. package/src/methods/swap/transaction.ts +310 -0
  281. package/src/sdk/full.ts +54 -0
  282. package/src/sdk/partial.ts +107 -0
  283. package/src/sdk/simple.ts +429 -0
  284. package/src/types.ts +240 -0
@@ -0,0 +1,38 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import { ethers } from 'ethers';
4
+ import {
5
+ constructPartialSDK,
6
+ constructFullSDK,
7
+ constructGetAdapters,
8
+ constructEthersV6ContractCaller,
9
+ constructAxiosFetcher,
10
+ } from '..';
11
+
12
+ const fetcher = constructAxiosFetcher(axios);
13
+
14
+ const provider = ethers.getDefaultProvider(1);
15
+ const contractCaller = constructEthersV6ContractCaller({
16
+ ethersV6ProviderOrSigner: provider,
17
+ EthersV6Contract: ethers.Contract,
18
+ });
19
+
20
+ const sdk = constructFullSDK({
21
+ chainId: 1,
22
+ fetcher,
23
+ contractCaller,
24
+ });
25
+
26
+ const res = sdk.swap.getAdapters();
27
+
28
+ // type Promise<ContractTransaction>
29
+ const txResponse = sdk.swap.approveToken('1', '0x...');
30
+ // type Promise<ContractTransaction[]>
31
+ const txResponses = sdk.swap.approveTokenBulk('1', ['0x...']);
32
+
33
+ const partial = constructPartialSDK(
34
+ { apiURL: '', chainId: 1, fetcher },
35
+ constructGetAdapters
36
+ );
37
+
38
+ const res1 = partial.getAdapters();
@@ -0,0 +1,135 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import BigNumber from 'bignumber.js';
4
+ import { ethers } from 'ethersV5';
5
+ import { assert } from 'ts-essentials';
6
+ import {
7
+ // swap methods
8
+ constructPartialSDK,
9
+ constructEthersContractCaller,
10
+ constructAxiosFetcher,
11
+ // limitOrders methods
12
+ constructAllLimitOrdersHandlers,
13
+ // extra types
14
+ LimitOrderFromApi,
15
+ SwappableOrder,
16
+ } from '..';
17
+
18
+ const account = '0x1234...';
19
+
20
+ const fetcher = constructAxiosFetcher(axios);
21
+
22
+ // provider must have write access to account
23
+ // this would usually be wallet provider (Metamask)
24
+ const provider = ethers.getDefaultProvider(1);
25
+ const contractCaller = constructEthersContractCaller(
26
+ {
27
+ ethersProviderOrSigner: provider,
28
+ EthersContract: ethers.Contract,
29
+ },
30
+ account
31
+ );
32
+
33
+ // type BuildLimitOrderFunctions
34
+ // & SignLimitOrderFunctions
35
+ // & CancelLimitOrderFunctions<ethers.ContractTransaction>
36
+ // & ApproveTokenFunctions<ethers.ContractTransaction>
37
+ const limitOrderSDK = constructPartialSDK(
38
+ {
39
+ chainId: 1,
40
+ fetcher,
41
+ contractCaller,
42
+ },
43
+ constructAllLimitOrdersHandlers
44
+ );
45
+
46
+ const DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
47
+ const HEX = '0x2b591e99afe9f32eaa6214f7b7629768c40eeb39';
48
+
49
+ const orderInput = {
50
+ nonce: 1,
51
+ expiry: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7, // week from now, in sec
52
+ makerAsset: DAI,
53
+ takerAsset: HEX,
54
+ makerAmount: (1e18).toString(10),
55
+ takerAmount: (8e18).toString(10),
56
+ maker: account,
57
+ };
58
+
59
+ async function run() {
60
+ // approve token for the limit order
61
+ const tx1: ethers.ContractTransaction =
62
+ await limitOrderSDK.approveMakerTokenForLimitOrder(
63
+ orderInput.makerAmount,
64
+ orderInput.makerAsset
65
+ );
66
+
67
+ // builds + signs + posts order to API
68
+ // new limit order returned from API
69
+ const newLimitOrder: LimitOrderFromApi = await limitOrderSDK.submitLimitOrder(
70
+ orderInput
71
+ );
72
+
73
+ // to act as order taker
74
+ const anotherAccount = '0x5678...';
75
+
76
+ const limitOrdersSDKForTaker = constructPartialSDK(
77
+ {
78
+ chainId: 1,
79
+ fetcher,
80
+ contractCaller: constructEthersContractCaller(
81
+ {
82
+ ethersProviderOrSigner: provider,
83
+ EthersContract: ethers.Contract,
84
+ },
85
+ anotherAccount
86
+ ),
87
+ },
88
+ constructAllLimitOrdersHandlers
89
+ );
90
+
91
+ const tx2: ethers.ContractTransaction =
92
+ await limitOrdersSDKForTaker.approveTakerTokenForLimitOrder(
93
+ orderInput.takerAmount,
94
+ orderInput.takerAsset
95
+ );
96
+
97
+ const executingOrder: SwappableOrder = {
98
+ ...newLimitOrder,
99
+ permitMakerAsset: newLimitOrder.permitMakerAsset || undefined,
100
+ };
101
+
102
+ const { gas: payloadGas, ...LOPayloadTxParams } =
103
+ await limitOrdersSDKForTaker.buildLimitOrderTx({
104
+ srcDecimals: 18,
105
+ destDecimals: 18,
106
+ userAddress: anotherAccount, // taker
107
+ orders: [executingOrder],
108
+ });
109
+
110
+ const tx5Params = {
111
+ ...LOPayloadTxParams,
112
+ gasPrice:
113
+ LOPayloadTxParams.gasPrice &&
114
+ '0x' + new BigNumber(LOPayloadTxParams.gasPrice).toString(16),
115
+ maxFeePerGas:
116
+ LOPayloadTxParams.maxFeePerGas &&
117
+ '0x' + new BigNumber(LOPayloadTxParams.maxFeePerGas).toString(16),
118
+ maxPriorityFeePerGas:
119
+ LOPayloadTxParams.maxPriorityFeePerGas &&
120
+ '0x' + new BigNumber(LOPayloadTxParams.maxPriorityFeePerGas).toString(16),
121
+ gasLimit: '0x' + new BigNumber(payloadGas || 5000000).toString(16),
122
+ value: '0x' + new BigNumber(LOPayloadTxParams.value).toString(16),
123
+ };
124
+
125
+ console.log('SENDING TX', tx5Params);
126
+
127
+ assert(
128
+ provider instanceof ethers.providers.JsonRpcProvider,
129
+ 'provider has signer (JsonRpcProvider)'
130
+ );
131
+
132
+ const tx3 = await provider
133
+ .getSigner(anotherAccount)
134
+ .sendTransaction(tx5Params);
135
+ }
@@ -0,0 +1,171 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import BigNumber from 'bignumber.js';
4
+ import { ethers } from 'ethersV5';
5
+ import { assert } from 'ts-essentials';
6
+ import {
7
+ // swap methods
8
+ constructPartialSDK,
9
+ constructEthersContractCaller,
10
+ constructAxiosFetcher,
11
+ // limitOrders methods
12
+ constructBuildLimitOrder,
13
+ constructCancelLimitOrder,
14
+ constructSignLimitOrder,
15
+ constructGetLimitOrders,
16
+ constructPostLimitOrder,
17
+ constructApproveTokenForLimitOrder,
18
+ // extra types
19
+ SignableOrderData,
20
+ LimitOrderToSend,
21
+ constructBuildLimitOrderTx,
22
+ } from '..';
23
+
24
+ const account = '0x1234...';
25
+
26
+ const fetcher = constructAxiosFetcher(axios);
27
+
28
+ // provider must have write access to account
29
+ // this would usually be wallet provider (Metamask)
30
+ const provider = ethers.getDefaultProvider(1);
31
+ const contractCaller = constructEthersContractCaller(
32
+ {
33
+ ethersProviderOrSigner: provider,
34
+ EthersContract: ethers.Contract,
35
+ },
36
+ account
37
+ );
38
+
39
+ // type BuildLimitOrderFunctions
40
+ // & SignLimitOrderFunctions
41
+ // & CancelLimitOrderFunctions<ethers.ContractTransaction>
42
+ // & ApproveTokenFunctions<ethers.ContractTransaction>
43
+ const limitOrderSDK = constructPartialSDK(
44
+ {
45
+ chainId: 1,
46
+ fetcher,
47
+ contractCaller,
48
+ },
49
+ constructBuildLimitOrder,
50
+ constructCancelLimitOrder,
51
+ constructSignLimitOrder,
52
+ constructPostLimitOrder,
53
+ constructGetLimitOrders,
54
+ constructApproveTokenForLimitOrder
55
+ );
56
+
57
+ const DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
58
+ const HEX = '0x2b591e99afe9f32eaa6214f7b7629768c40eeb39';
59
+
60
+ const orderInput = {
61
+ nonce: 1,
62
+ expiry: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7, // week from now, in sec
63
+ makerAsset: DAI,
64
+ takerAsset: HEX,
65
+ makerAmount: (1e18).toString(10),
66
+ takerAmount: (8e18).toString(10),
67
+ maker: account,
68
+ };
69
+
70
+ async function run() {
71
+ /// cancelling current orders
72
+ const { orders: currentOrders } = await limitOrderSDK.getLimitOrders({
73
+ maker: account,
74
+ type: 'LIMIT',
75
+ });
76
+
77
+ if (currentOrders[0]?.orderHash) {
78
+ const tx1: ethers.ContractTransaction =
79
+ await limitOrderSDK.cancelLimitOrder(currentOrders[0].orderHash);
80
+ }
81
+
82
+ const moreOrderHashes = currentOrders
83
+ .slice(1, 2)
84
+ .map((order) => order.orderHash);
85
+
86
+ const tx2: ethers.ContractTransaction =
87
+ await limitOrderSDK.cancelLimitOrderBulk(moreOrderHashes);
88
+
89
+ /// creating a new order
90
+
91
+ const tx3: ethers.ContractTransaction =
92
+ await limitOrderSDK.approveMakerTokenForLimitOrder(
93
+ orderInput.makerAmount,
94
+ orderInput.makerAsset
95
+ );
96
+
97
+ const signableOrderData: SignableOrderData =
98
+ await limitOrderSDK.buildLimitOrder(orderInput);
99
+
100
+ const signature: string = await limitOrderSDK.signLimitOrder(
101
+ signableOrderData
102
+ );
103
+
104
+ const orderToPostToApi: LimitOrderToSend = {
105
+ ...signableOrderData.data,
106
+ signature,
107
+ };
108
+
109
+ const newOrder = await limitOrderSDK.postLimitOrder(orderToPostToApi);
110
+
111
+ /// filling an order
112
+
113
+ // to act as order taker
114
+ const anotherAccount = '0x5678...';
115
+
116
+ const limitOrderSDKForTaker = constructPartialSDK(
117
+ {
118
+ chainId: 1,
119
+ fetcher,
120
+ contractCaller: constructEthersContractCaller(
121
+ {
122
+ ethersProviderOrSigner: provider,
123
+ EthersContract: ethers.Contract,
124
+ },
125
+ anotherAccount
126
+ ),
127
+ },
128
+ constructBuildLimitOrderTx,
129
+ constructApproveTokenForLimitOrder
130
+ );
131
+
132
+ const tx4: ethers.ContractTransaction =
133
+ await limitOrderSDKForTaker.approveTakerTokenForLimitOrder(
134
+ orderInput.takerAmount,
135
+ orderInput.takerAsset
136
+ );
137
+
138
+ const { gas: payloadGas, ...LOPayloadTxParams } =
139
+ await limitOrderSDKForTaker.buildLimitOrderTx({
140
+ srcDecimals: 18,
141
+ destDecimals: 18,
142
+ userAddress: anotherAccount, // taker
143
+ orders: [orderToPostToApi],
144
+ });
145
+
146
+ const tx5Params = {
147
+ ...LOPayloadTxParams,
148
+ gasPrice:
149
+ LOPayloadTxParams.gasPrice &&
150
+ '0x' + new BigNumber(LOPayloadTxParams.gasPrice).toString(16),
151
+ maxFeePerGas:
152
+ LOPayloadTxParams.maxFeePerGas &&
153
+ '0x' + new BigNumber(LOPayloadTxParams.maxFeePerGas).toString(16),
154
+ maxPriorityFeePerGas:
155
+ LOPayloadTxParams.maxPriorityFeePerGas &&
156
+ '0x' + new BigNumber(LOPayloadTxParams.maxPriorityFeePerGas).toString(16),
157
+ gasLimit: '0x' + new BigNumber(payloadGas || 5000000).toString(16),
158
+ value: '0x' + new BigNumber(LOPayloadTxParams.value).toString(16),
159
+ };
160
+
161
+ console.log('SENDING TX', tx5Params);
162
+
163
+ assert(
164
+ provider instanceof ethers.providers.JsonRpcProvider,
165
+ 'provider has signer (JsonRpcProvider)'
166
+ );
167
+
168
+ const tx5 = await provider
169
+ .getSigner(anotherAccount)
170
+ .sendTransaction(tx5Params);
171
+ }
@@ -0,0 +1,77 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import { ethers } from 'ethersV5';
4
+
5
+ import {
6
+ // swap methods
7
+ constructPartialSDK,
8
+ constructEthersContractCaller,
9
+ constructAxiosFetcher,
10
+ // limitOrders methods
11
+ constructBuildLimitOrder,
12
+ constructSignLimitOrder,
13
+ constructPostLimitOrder,
14
+ // extra types
15
+ SignableOrderData,
16
+ LimitOrderToSend,
17
+ } from '..';
18
+
19
+ const wallet = ethers.Wallet.createRandom();
20
+
21
+ const fetcher = constructAxiosFetcher(axios);
22
+
23
+ const provider = wallet.connect(ethers.getDefaultProvider(1));
24
+ const contractCaller = constructEthersContractCaller(
25
+ {
26
+ ethersProviderOrSigner: provider,
27
+ EthersContract: ethers.Contract,
28
+ },
29
+ wallet.address
30
+ );
31
+
32
+ // type BuildLimitOrderFunctions
33
+ // & SignLimitOrderFunctions
34
+ // & PostLimitOrderFunctions
35
+
36
+ const limitOrderSDK = constructPartialSDK(
37
+ {
38
+ chainId: 1,
39
+ fetcher,
40
+ contractCaller,
41
+ },
42
+ constructBuildLimitOrder,
43
+ constructSignLimitOrder,
44
+ constructPostLimitOrder
45
+ );
46
+
47
+ const DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
48
+ const HEX = '0x2b591e99afe9f32eaa6214f7b7629768c40eeb39';
49
+
50
+ const orderInput = {
51
+ nonce: 1,
52
+ expiry: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7, // week from now, in sec
53
+ makerAsset: DAI,
54
+ takerAsset: HEX,
55
+ makerAmount: (1e18).toString(10),
56
+ takerAmount: (8e18).toString(10),
57
+ maker: wallet.address,
58
+ };
59
+
60
+ async function run() {
61
+ const signableOrderData: SignableOrderData =
62
+ await limitOrderSDK.buildLimitOrder(orderInput);
63
+
64
+ const signature: string = await limitOrderSDK.signLimitOrder(
65
+ signableOrderData
66
+ );
67
+
68
+ const orderToPostToApi: LimitOrderToSend = {
69
+ ...signableOrderData.data,
70
+ signature,
71
+ };
72
+
73
+ const newOrder = await limitOrderSDK.postLimitOrder(orderToPostToApi);
74
+ console.log(newOrder);
75
+ }
76
+
77
+ run();
@@ -0,0 +1,34 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import { ethers } from 'ethersV5';
4
+ import {
5
+ constructPartialSDK,
6
+ constructGetAdapters,
7
+ constructApproveToken,
8
+ constructEthersContractCaller,
9
+ constructAxiosFetcher,
10
+ } from '..';
11
+
12
+ const fetcher = constructAxiosFetcher(axios);
13
+
14
+ const provider = ethers.getDefaultProvider(1);
15
+ const contractCaller = constructEthersContractCaller({
16
+ ethersProviderOrSigner: provider,
17
+ EthersContract: ethers.Contract,
18
+ });
19
+
20
+ // type AdaptersFunctions & ApproveTokenFunctions<ethers.ContractTransaction>
21
+ const part1 = constructPartialSDK(
22
+ {
23
+ chainId: 1,
24
+ fetcher,
25
+ contractCaller,
26
+ },
27
+ constructGetAdapters,
28
+ constructApproveToken
29
+ );
30
+
31
+ // type Promise<AdaptersAsObject>
32
+ const res1 = part1.getAdapters();
33
+ // type Promise<ethers.ContractTransaction>
34
+ const res2 = part1.approveToken('123', '0x...');
@@ -0,0 +1,205 @@
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
+ constructGetQuote,
10
+ constructSwapSDK,
11
+ OptimalRate,
12
+ DeltaPrice,
13
+ isFetcherError,
14
+ } from '..';
15
+
16
+ const fetcher = constructAxiosFetcher(axios);
17
+
18
+ const provider = ethers.getDefaultProvider(1);
19
+ const signer = Wallet.createRandom().connect(provider);
20
+ const account = signer.address;
21
+ const contractCaller = constructEthersContractCaller({
22
+ ethersProviderOrSigner: provider,
23
+ EthersContract: ethers.Contract,
24
+ });
25
+
26
+ // type AdaptersFunctions & ApproveTokenFunctions<ethers.ContractTransaction>
27
+ const quoteSDK = constructPartialSDK(
28
+ {
29
+ chainId: 1,
30
+ fetcher,
31
+ contractCaller,
32
+ },
33
+ constructAllDeltaOrdersHandlers,
34
+ constructSwapSDK,
35
+ constructGetQuote
36
+ );
37
+
38
+ const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
39
+ const USDC_TOKEN = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
40
+
41
+ /**
42
+ * mode='delta' example
43
+ */
44
+ async function deltaQuote() {
45
+ const amount = '1000000000000'; // wei
46
+
47
+ const quote = await quoteSDK.getQuote({
48
+ srcToken: DAI_TOKEN,
49
+ destToken: USDC_TOKEN,
50
+ amount,
51
+ userAddress: account,
52
+ srcDecimals: 18,
53
+ destDecimals: 18,
54
+ mode: 'delta',
55
+ side: 'SELL',
56
+ // partner: "..." // if available
57
+ });
58
+
59
+ try {
60
+ const deltaPrice = quote.delta;
61
+ await handleDeltaQuote({ amount, deltaPrice });
62
+ } catch (error) {
63
+ if (isFetcherError(error)) {
64
+ const data = error.response?.data;
65
+ console.log(`Delta Quote failed: ${data.errorType} - ${data.details}`);
66
+ }
67
+ }
68
+ }
69
+
70
+ /**
71
+ * mode='market' example
72
+ */
73
+ async function marketQuote() {
74
+ const amount = '1000000000000'; // wei
75
+
76
+ const quote = await quoteSDK.getQuote({
77
+ srcToken: DAI_TOKEN,
78
+ destToken: USDC_TOKEN,
79
+ amount,
80
+ userAddress: account,
81
+ srcDecimals: 18,
82
+ destDecimals: 18,
83
+ mode: 'market',
84
+ side: 'SELL',
85
+ // partner: "..." // if available
86
+ });
87
+
88
+ const TokenTransferProxy = await quoteSDK.getSpender();
89
+
90
+ // or sign a Permit1 or Permit2 TransferFrom for TokenTransferProxy
91
+ const approveTxHash = quoteSDK.approveToken(amount, DAI_TOKEN);
92
+
93
+ const txParams = await quoteSDK.buildTx({
94
+ srcToken: DAI_TOKEN,
95
+ destToken: USDC_TOKEN,
96
+ srcAmount: amount,
97
+ slippage: 250, // 2.5%
98
+ priceRoute: quote.market,
99
+ userAddress: account,
100
+ // partner: '...' // if available
101
+ });
102
+
103
+ const swapTx = await handleMarketQuote({ amount, priceRoute: quote.market });
104
+ }
105
+
106
+ /**
107
+ * mode='all' example
108
+ */
109
+ async function allQuote() {
110
+ const amount = '1000000000000'; // wei
111
+
112
+ const quote = await quoteSDK.getQuote({
113
+ srcToken: DAI_TOKEN,
114
+ destToken: USDC_TOKEN,
115
+ amount,
116
+ userAddress: account,
117
+ srcDecimals: 18,
118
+ destDecimals: 18,
119
+ mode: 'all',
120
+ side: 'SELL',
121
+ // partner: "..." // if available
122
+ });
123
+
124
+ if ('delta' in quote) {
125
+ const deltaPrice = quote.delta;
126
+ await handleDeltaQuote({ amount, deltaPrice });
127
+ } else {
128
+ console.log(
129
+ `Delta Quote failed: ${quote.fallbackReason.errorType} - ${quote.fallbackReason.details}`
130
+ );
131
+ const swapTx = await handleMarketQuote({
132
+ amount,
133
+ priceRoute: quote.market,
134
+ });
135
+ }
136
+ }
137
+
138
+ async function handleDeltaQuote({
139
+ amount,
140
+ deltaPrice,
141
+ }: {
142
+ amount: string;
143
+ deltaPrice: DeltaPrice;
144
+ }) {
145
+ /**
146
+ * refer to examples/delta for more details
147
+ */
148
+ const DeltaContract = await quoteSDK.getDeltaContract();
149
+
150
+ // or sign a Permit1 or Permit2 TransferFrom for DeltaContract
151
+ await quoteSDK.approveTokenForDelta(amount, DAI_TOKEN);
152
+
153
+ const slippagePercent = 0.5;
154
+ const destAmountAfterSlippage = BigInt(
155
+ // get rid of exponential notation
156
+
157
+ +(+deltaPrice.destAmount * (1 - slippagePercent / 100)).toFixed(0)
158
+ // get rid of decimals
159
+ ).toString(10);
160
+
161
+ const deltaAuction = await quoteSDK.submitDeltaOrder({
162
+ deltaPrice,
163
+ owner: account,
164
+ // beneficiary: anotherAccount, // if need to send destToken to another account
165
+ // permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
166
+ srcToken: DAI_TOKEN,
167
+ destToken: USDC_TOKEN,
168
+ srcAmount: amount,
169
+ destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
170
+ });
171
+
172
+ // poll if necessary
173
+ const auction = await quoteSDK.getDeltaOrderById(deltaAuction.id);
174
+ if (auction?.status === 'EXECUTED') {
175
+ console.log('Auction was executed');
176
+ }
177
+
178
+ return auction;
179
+ }
180
+
181
+ async function handleMarketQuote({
182
+ amount,
183
+ priceRoute,
184
+ }: {
185
+ amount: string;
186
+ priceRoute: OptimalRate;
187
+ }) {
188
+ const TokenTransferProxy = await quoteSDK.getSpender();
189
+
190
+ // or sign a Permit1 or Permit2 TransferFrom for TokenTransferProxy
191
+ const approveTxHash = quoteSDK.approveToken(amount, DAI_TOKEN);
192
+
193
+ const txParams = await quoteSDK.buildTx({
194
+ srcToken: DAI_TOKEN,
195
+ destToken: USDC_TOKEN,
196
+ srcAmount: amount,
197
+ slippage: 250, // 2.5%
198
+ priceRoute,
199
+ userAddress: account,
200
+ // partner: '...' // if available
201
+ });
202
+
203
+ const swapTx = await signer.sendTransaction(txParams);
204
+ return swapTx;
205
+ }
@@ -0,0 +1,39 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import axios from 'axios';
3
+ import { ethers } from 'ethersV5';
4
+ import {
5
+ constructPartialSDK,
6
+ constructFullSDK,
7
+ constructGetAdapters,
8
+ constructEthersV5ContractCaller,
9
+ constructAxiosFetcher,
10
+ } from '..';
11
+
12
+ const fetcher = constructAxiosFetcher(axios);
13
+
14
+ const provider = ethers.getDefaultProvider(1);
15
+ const contractCaller = constructEthersV5ContractCaller({
16
+ ethersProviderOrSigner: provider,
17
+ EthersContract: ethers.Contract,
18
+ });
19
+
20
+ const sdk = constructFullSDK({
21
+ apiURL: '',
22
+ chainId: 1,
23
+ fetcher,
24
+ contractCaller,
25
+ });
26
+
27
+ const res = sdk.swap.getAdapters();
28
+
29
+ // type Promise<ContractTransaction>
30
+ const txResponse = sdk.swap.approveToken('1', '0x...');
31
+ // type Promise<ContractTransaction[]>
32
+ const txResponses = sdk.swap.approveTokenBulk('1', ['0x...']);
33
+
34
+ const partial = constructPartialSDK(
35
+ { apiURL: '', chainId: 1, fetcher },
36
+ constructGetAdapters
37
+ );
38
+
39
+ const res1 = partial.getAdapters();