@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,154 @@
1
+ import type {
2
+ Address,
3
+ ContractCallerFunctions,
4
+ SignTypedDataContractCallerFn,
5
+ StaticContractCallerFn,
6
+ TransactionContractCallerFn,
7
+ } from '../../types';
8
+ import type { PayableCallOptions, AbiItem } from 'web3';
9
+ import type Web3 from 'web3';
10
+ import type { ContractAbi, Contract as Web3Contract } from 'web3';
11
+ import type { PayableTxOptions } from 'web3-eth-contract';
12
+ import { assert } from 'ts-essentials';
13
+ import { findPrimaryType } from './helpers';
14
+
15
+ type ContractMethodRes = ReturnType<Web3ContractSendMethod>;
16
+ export type Web3UnpromiEvent = Pick<
17
+ ReturnType<ContractMethodRes['send']>,
18
+ 'on' | 'once'
19
+ >;
20
+
21
+ type SendOptions = PayableTxOptions;
22
+ type CallOptions = PayableCallOptions;
23
+
24
+ export const constructContractCaller = (
25
+ web3: Web3,
26
+ account?: Address
27
+ ): ContractCallerFunctions<Web3UnpromiEvent> => {
28
+ const staticCall: StaticContractCallerFn = async (params) => {
29
+ assert(web3.currentProvider, 'web3.currentProvider is not set');
30
+
31
+ const { address, abi, contractMethod, args, overrides } = params;
32
+
33
+ const contract = new web3.eth.Contract(
34
+ abi as AbiItem[], // FIXME abi types ethers dependant
35
+ address
36
+ );
37
+
38
+ assertWeb3ContractHasMethods(contract, contractMethod);
39
+
40
+ const { block, gas, value, ...restOverrides } = overrides;
41
+
42
+ const normalizedOverrides: CallOptions = {
43
+ ...restOverrides,
44
+ gas: gas?.toString(10),
45
+ value: value?.toString(10),
46
+ };
47
+
48
+ return contract.methods[contractMethod](...args).call(normalizedOverrides);
49
+ };
50
+
51
+ const transactCall: TransactionContractCallerFn<Web3UnpromiEvent> = async (
52
+ params
53
+ ) => {
54
+ assert(web3.currentProvider, 'web3.currentProvider is not set');
55
+
56
+ assert(account, 'account must be specified to send transactions');
57
+
58
+ const { address, abi, contractMethod, args, overrides } = params;
59
+
60
+ const contract = new web3.eth.Contract(
61
+ abi as unknown as AbiItem[], // FIXME
62
+ address
63
+ );
64
+
65
+ assertWeb3ContractHasMethods(contract, contractMethod);
66
+
67
+ const { gas, from, value, nonce, ...restOverrides } = overrides;
68
+
69
+ const _from = from || account;
70
+
71
+ assert(_from, 'from is required');
72
+
73
+ const normalizedOverrides: SendOptions = {
74
+ ...restOverrides,
75
+ from: _from,
76
+ gas: gas?.toString(10),
77
+ value: value?.toString(10),
78
+ nonce: nonce?.toString(10),
79
+ };
80
+
81
+ const preparedCall = contract.methods[contractMethod](...args);
82
+
83
+ const promiEvent = preparedCall.send(normalizedOverrides);
84
+
85
+ // can't just return promiEvent, because async function returns a Promise<PromiEvent>
86
+ // and await Promise<PromiEvent> automatically awaits the value of PromiEvent,
87
+ // that is await Promise<PromiEvent> = Awaited<PromiEvent> that doesn't have .on|once
88
+ // so that functionality becomes lost
89
+ // transactCall can be made sync, but approve has to be async to await getSpender()
90
+ const unpromiEvent: Web3UnpromiEvent = {
91
+ on: promiEvent.on.bind(promiEvent),
92
+ once: promiEvent.once.bind(promiEvent),
93
+ };
94
+
95
+ return unpromiEvent;
96
+ };
97
+
98
+ const signTypedDataCall: SignTypedDataContractCallerFn = async (
99
+ typedData
100
+ ) => {
101
+ assert(web3.currentProvider, 'web3.currentProvider is not set');
102
+
103
+ assert(account, 'account must be specified to sign data');
104
+
105
+ const { data, domain, types } = typedData;
106
+
107
+ const _typedData = {
108
+ types: {
109
+ EIP712Domain: [
110
+ { name: 'name', type: 'string' },
111
+ { name: 'version', type: 'string' },
112
+ { name: 'chainId', type: 'uint256' },
113
+ { name: 'verifyingContract', type: 'address' },
114
+ ],
115
+ ...types,
116
+ },
117
+ primaryType: findPrimaryType(types),
118
+ domain,
119
+ message: data,
120
+ };
121
+
122
+ // account must be among unlocked accounts
123
+ const signature = await web3.eth.signTypedData(account, _typedData as any);
124
+ return signature;
125
+ };
126
+
127
+ return { staticCall, transactCall, signTypedDataCall };
128
+ };
129
+
130
+ /// web3@4
131
+ type Web3ContractSendMethod = Web3Contract<ContractAbi>['methods'][string];
132
+
133
+ type Web3ContractWithMethod<T extends string> = Web3Contract<ContractAbi> & {
134
+ methods: { [method in T]: Web3ContractSendMethod };
135
+ };
136
+
137
+ function web3ContractHasMethods<T extends string>(
138
+ contract: Web3Contract<ContractAbi>,
139
+ ...methods: T[]
140
+ ): contract is Web3ContractWithMethod<T> {
141
+ return methods.every(
142
+ (method) => typeof contract.methods[method] === 'function'
143
+ );
144
+ }
145
+
146
+ function assertWeb3ContractHasMethods<T extends string>(
147
+ contract: Web3Contract<ContractAbi>,
148
+ ...methods: T[]
149
+ ): asserts contract is Web3ContractWithMethod<T> {
150
+ assert(
151
+ web3ContractHasMethods(contract, ...methods),
152
+ `Contract must have methods: ${methods.join(', ')}`
153
+ );
154
+ }
@@ -0,0 +1,75 @@
1
+ import type { MarkOptional } from 'ts-essentials';
2
+
3
+ /**
4
+ * @type hex token or account address
5
+ */
6
+ export type Address = string;
7
+ /**
8
+ * @type hex token address or token symbol
9
+ */
10
+ export type AddressOrSymbol = string;
11
+ /**
12
+ * @type number in string form
13
+ */
14
+ export type PriceString = string;
15
+ /**
16
+ * @type transaction hash
17
+ */
18
+ export type TxHash = `0x${string}`;
19
+
20
+ // @TODO sync with what it actually is
21
+ export type LendingToken =
22
+ | 'cToken'
23
+ | 'iToken'
24
+ | 'aToken'
25
+ | 'aToken2'
26
+ | 'idleToken'
27
+ | 'Chai'
28
+ | 'bDAI';
29
+
30
+ export type TokenType = 'ETH' | 'ERC20' | 'SYNTH';
31
+
32
+ /**
33
+ * @type Token object returned from API used internally in API
34
+ */
35
+ // consider if need the old class Token for backwards compatipility
36
+ // otherwise no real need
37
+ export type Token = {
38
+ address: string;
39
+ decimals: number;
40
+ symbol?: string | undefined;
41
+ tokenType: LendingToken | TokenType;
42
+ mainConnector: string;
43
+ connectors: string[];
44
+ network: number;
45
+ img?: string | undefined;
46
+ allowance?: string | undefined;
47
+ balance?: string | undefined;
48
+ };
49
+
50
+ type ConstructTokenInput = MarkOptional<
51
+ Token,
52
+ // these props are constructed from other, required props
53
+ 'tokenType' | 'mainConnector' | 'connectors' | 'network'
54
+ >;
55
+
56
+ export const constructToken = (tokenProps: ConstructTokenInput): Token => {
57
+ const {
58
+ tokenType = 'ERC20',
59
+ mainConnector = 'ETH',
60
+ connectors: connectorsInput = [],
61
+ network = 1,
62
+ ...rest
63
+ } = tokenProps;
64
+
65
+ const connectors: Token['connectors'] =
66
+ connectorsInput.length > 0 ? connectorsInput : [mainConnector];
67
+
68
+ return {
69
+ tokenType,
70
+ connectors,
71
+ mainConnector,
72
+ network,
73
+ ...rest,
74
+ };
75
+ };
package/src/index.ts ADDED
@@ -0,0 +1,425 @@
1
+ import {
2
+ constructApproveToken,
3
+ ApproveTokenFunctions,
4
+ } from './methods/swap/approve';
5
+ import {
6
+ constructGetBalances,
7
+ GetBalancesFunctions,
8
+ isAllowance,
9
+ Allowance,
10
+ } from './methods/swap/balance';
11
+ import {
12
+ constructGetSpender,
13
+ GetSpenderFunctions,
14
+ } from './methods/swap/spender';
15
+ import {
16
+ constructGetAdapters,
17
+ GetAdaptersFunctions,
18
+ } from './methods/swap/adapters';
19
+ import { constructGetRate, GetRateFunctions } from './methods/swap/rates';
20
+ import { constructSwapTx, GetSwapTxFunctions } from './methods/swap/swapTx';
21
+ import { constructGetTokens, GetTokensFunctions } from './methods/swap/token';
22
+ import { BuildTxFunctions, constructBuildTx } from './methods/swap/transaction';
23
+
24
+ import {
25
+ BuildLimitOrderFunctions,
26
+ BuildLimitOrderInput,
27
+ BuildOrderDataInput,
28
+ constructBuildLimitOrder,
29
+ } from './methods/limitOrders/buildOrder';
30
+ import {
31
+ SignLimitOrderFunctions,
32
+ constructSignLimitOrder,
33
+ } from './methods/limitOrders/signOrder';
34
+ import {
35
+ CancelLimitOrderFunctions,
36
+ constructCancelLimitOrder,
37
+ } from './methods/limitOrders/cancelOrder';
38
+ import {
39
+ FillOrderDirectlyFunctions,
40
+ constructFillOrderDirectly,
41
+ } from './methods/limitOrders/fillOrderDirectly';
42
+ import {
43
+ GetLimitOrdersFunctions,
44
+ constructGetLimitOrders,
45
+ LimitOrdersUserParams,
46
+ } from './methods/limitOrders/getOrders';
47
+ import {
48
+ PostLimitOrderFunctions,
49
+ constructPostLimitOrder,
50
+ } from './methods/limitOrders/postOrder';
51
+ import {
52
+ ApproveTokenForLimitOrderFunctions,
53
+ constructApproveTokenForLimitOrder,
54
+ } from './methods/limitOrders/approveForOrder';
55
+ import {
56
+ GetLimitOrdersContractFunctions,
57
+ constructGetLimitOrdersContract,
58
+ } from './methods/limitOrders/getOrdersContract';
59
+ import {
60
+ BuildLimitOrdersTxFunctions,
61
+ constructBuildLimitOrderTx,
62
+ } from './methods/limitOrders/transaction';
63
+
64
+ import {
65
+ BuildNFTOrderFunctions,
66
+ BuildNFTOrderInput,
67
+ BuildNFTOrderDataInput,
68
+ constructBuildNFTOrder,
69
+ } from './methods/nftOrders/buildOrder';
70
+ import {
71
+ SignNFTOrderFunctions,
72
+ constructSignNFTOrder,
73
+ } from './methods/nftOrders/signOrder';
74
+ import {
75
+ CancelNFTOrderFunctions,
76
+ constructCancelNFTOrder,
77
+ } from './methods/nftOrders/cancelOrder';
78
+ import {
79
+ GetNFTOrdersFunctions,
80
+ constructGetNFTOrders,
81
+ NFTOrdersUserParams,
82
+ } from './methods/nftOrders/getOrders';
83
+ import {
84
+ PostNFTOrderFunctions,
85
+ constructPostNFTOrder,
86
+ } from './methods/nftOrders/postOrder';
87
+ import {
88
+ ApproveTokenForNFTOrderFunctions,
89
+ constructApproveTokenForNFTOrder,
90
+ } from './methods/nftOrders/approveForOrder';
91
+ import {
92
+ GetNFTOrdersContractFunctions,
93
+ constructGetNFTOrdersContract,
94
+ } from './methods/nftOrders/getOrdersContract';
95
+ import {
96
+ BuildNFTOrdersTxFunctions,
97
+ constructBuildNFTOrderTx,
98
+ } from './methods/nftOrders/transaction';
99
+
100
+ import {
101
+ constructEthersContractCaller,
102
+ constructEthersV5ContractCaller,
103
+ constructEthersV6ContractCaller,
104
+ constructWeb3ContractCaller,
105
+ constructViemContractCaller,
106
+ txParamsToViemTxParams,
107
+ constructAxiosFetcher,
108
+ constructFetchFetcher,
109
+ isFetcherError,
110
+ FetcherErrorInterface,
111
+ EthersProviderDeps,
112
+ EthersV5ProviderDeps,
113
+ EthersV6ProviderDeps,
114
+ MinViemClient,
115
+ constructToken,
116
+ FetcherError,
117
+ } from './helpers';
118
+ import type {
119
+ ConstructFetchInput,
120
+ ContractCallerFunctions,
121
+ ConstructProviderFetchInput,
122
+ Address,
123
+ AddressOrSymbol,
124
+ FetcherFunction,
125
+ Token,
126
+ PriceString,
127
+ TxHash,
128
+ TxSendOverrides,
129
+ OptimalRate,
130
+ OptionalRate,
131
+ APIVersion,
132
+ } from './types';
133
+
134
+ import type {
135
+ DeltaAuctionOrder,
136
+ DeltaAuction,
137
+ BridgeMetadata,
138
+ BridgeStatus,
139
+ Bridge,
140
+ } from './methods/delta/helpers/types';
141
+ import {
142
+ BuildDeltaOrderDataParams,
143
+ BuildDeltaOrderFunctions,
144
+ constructBuildDeltaOrder,
145
+ SignableDeltaOrderData,
146
+ } from './methods/delta/buildDeltaOrder';
147
+ import {
148
+ constructBuildCrosschainOrderBridge,
149
+ BuildCrosschainOrderBridgeFunctions,
150
+ BuildCrosschainOrderBridgeParams,
151
+ CrosschainOrderBridgeAndChanges,
152
+ } from './methods/delta/buildCrosschainOrderBridge';
153
+ import {
154
+ constructPostDeltaOrder,
155
+ PostDeltaOrderFunctions,
156
+ PostDeltaOrderParams,
157
+ } from './methods/delta/postDeltaOrder';
158
+ import {
159
+ constructSignDeltaOrder,
160
+ SignDeltaOrderFunctions,
161
+ } from './methods/delta/signDeltaOrder';
162
+ import {
163
+ GetDeltaContractFunctions,
164
+ constructGetDeltaContract,
165
+ } from './methods/delta/getDeltaContract';
166
+ import {
167
+ constructGetDeltaPrice,
168
+ GetDeltaPriceFunctions,
169
+ DeltaPrice,
170
+ BridgePrice,
171
+ DeltaPriceParams,
172
+ } from './methods/delta/getDeltaPrice';
173
+ import {
174
+ constructGetDeltaOrders,
175
+ GetDeltaOrdersFunctions,
176
+ } from './methods/delta/getDeltaOrders';
177
+ import {
178
+ ApproveTokenForDeltaFunctions,
179
+ constructApproveTokenForDelta,
180
+ } from './methods/delta/approveForDelta';
181
+ import {
182
+ constructGetPartnerFee,
183
+ GetPartnerFeeFunctions,
184
+ } from './methods/delta/getPartnerFee';
185
+ import {
186
+ constructGetBridgeInfo,
187
+ GetBridgeInfoFunctions,
188
+ BridgeInfo,
189
+ } from './methods/delta/getBridgeInfo';
190
+ import {
191
+ constructGetMulticallHandlers,
192
+ GetMulticallHandlersFunctions,
193
+ MulticallHandlersResponse,
194
+ } from './methods/delta/getMulticallHandlers';
195
+ import {
196
+ constructIsTokenSupportedInDelta,
197
+ IsTokenSupportedInDeltaFunctions,
198
+ } from './methods/delta/isTokenSupportedInDelta';
199
+
200
+ import {
201
+ constructGetQuote,
202
+ GetQuoteFunctions,
203
+ QuoteParams,
204
+ QuoteResponse,
205
+ QuoteWithDeltaPrice,
206
+ QuoteWithMarketPrice,
207
+ QuoteWithMarketPriceAsFallback,
208
+ } from './methods/quote/getQuote';
209
+
210
+ export { constructSwapSDK, SwapSDKMethods } from './methods/swap';
211
+
212
+ export {
213
+ constructAllLimitOrdersHandlers,
214
+ constructSubmitLimitOrder,
215
+ LimitOrderHandlers,
216
+ } from './methods/limitOrders';
217
+
218
+ export {
219
+ constructAllDeltaOrdersHandlers,
220
+ constructSubmitDeltaOrder,
221
+ DeltaOrderHandlers,
222
+ SubmitDeltaOrderParams,
223
+ } from './methods/delta';
224
+
225
+ export type {
226
+ TransactionParams,
227
+ BuildOptions,
228
+ BuildOptionsBase,
229
+ BuildOptionsWitWithMaxFee,
230
+ BuildOptionsWithGasPrice,
231
+ BuildTxInput,
232
+ BuildSwapTxInput,
233
+ BuildLimitOrderTxInput,
234
+ BuildNFTOrderTxInput,
235
+ BuildSwapAndLimitOrderTxInput,
236
+ BuildSwapAndNFTOrderTxInput,
237
+ SwappableOrder,
238
+ SwappableNFTOrder,
239
+ } from './methods/swap/transaction';
240
+ export type { Web3UnpromiEvent } from './helpers';
241
+ export * from './constants';
242
+ export type {
243
+ SignableOrderData,
244
+ OrderData,
245
+ } from './methods/limitOrders/helpers/buildOrderData';
246
+ export type {
247
+ SignableNFTOrderData,
248
+ NFTOrderData,
249
+ } from './methods/nftOrders/helpers/buildOrderData';
250
+ export type { SignableTypedData } from './methods/common/orders/buildOrderData';
251
+
252
+ // can import these individually
253
+ // and use in constructPartialSDK only what you need
254
+ // unused should tree-shake
255
+ export {
256
+ // swap methods:
257
+ constructApproveToken,
258
+ constructGetBalances, // getAllowances is inside
259
+ constructGetSpender, // this was getTokenTransferProxy
260
+ constructGetTokens,
261
+ constructBuildTx,
262
+ constructGetAdapters,
263
+ constructGetRate,
264
+ constructSwapTx,
265
+ // limitOrders methods:
266
+ constructBuildLimitOrder,
267
+ constructSignLimitOrder,
268
+ constructCancelLimitOrder,
269
+ constructFillOrderDirectly,
270
+ constructGetLimitOrders,
271
+ constructPostLimitOrder,
272
+ constructApproveTokenForLimitOrder,
273
+ constructGetLimitOrdersContract,
274
+ constructBuildLimitOrderTx,
275
+ // nftOrders methods
276
+ constructBuildNFTOrder,
277
+ constructSignNFTOrder,
278
+ constructCancelNFTOrder,
279
+ constructGetNFTOrders,
280
+ constructPostNFTOrder,
281
+ constructApproveTokenForNFTOrder,
282
+ constructGetNFTOrdersContract,
283
+ constructBuildNFTOrderTx,
284
+ // Delta methods
285
+ constructBuildDeltaOrder,
286
+ constructBuildCrosschainOrderBridge,
287
+ constructPostDeltaOrder,
288
+ constructSignDeltaOrder,
289
+ constructGetDeltaContract,
290
+ constructGetDeltaPrice,
291
+ constructGetDeltaOrders,
292
+ constructApproveTokenForDelta,
293
+ // Quote methods
294
+ constructGetQuote,
295
+ // different helpers
296
+ constructGetPartnerFee,
297
+ constructGetBridgeInfo,
298
+ constructIsTokenSupportedInDelta,
299
+ constructGetMulticallHandlers,
300
+ constructEthersContractCaller, // same as constructEthersV5ContractCaller for backwards compatibility
301
+ constructEthersV5ContractCaller,
302
+ constructEthersV6ContractCaller,
303
+ constructWeb3ContractCaller,
304
+ constructViemContractCaller,
305
+ txParamsToViemTxParams,
306
+ constructAxiosFetcher,
307
+ constructFetchFetcher,
308
+ isFetcherError,
309
+ isAllowance,
310
+ constructToken,
311
+ // custom fetcher
312
+ FetcherError,
313
+ FetcherFunction,
314
+ };
315
+
316
+ export type {
317
+ Allowance,
318
+ // contractCaller requirements
319
+ EthersProviderDeps,
320
+ EthersV5ProviderDeps,
321
+ EthersV6ProviderDeps,
322
+ MinViemClient,
323
+ // types for swap methods:
324
+ ApproveTokenFunctions,
325
+ GetBalancesFunctions,
326
+ GetSpenderFunctions,
327
+ GetTokensFunctions,
328
+ GetAdaptersFunctions,
329
+ GetRateFunctions,
330
+ BuildTxFunctions,
331
+ GetSwapTxFunctions,
332
+ // types for limitOrders methods:
333
+ BuildLimitOrderFunctions,
334
+ SignLimitOrderFunctions,
335
+ CancelLimitOrderFunctions,
336
+ FillOrderDirectlyFunctions,
337
+ GetLimitOrdersContractFunctions,
338
+ BuildLimitOrdersTxFunctions,
339
+ BuildLimitOrderInput,
340
+ BuildOrderDataInput,
341
+ PostLimitOrderFunctions,
342
+ ApproveTokenForLimitOrderFunctions,
343
+ GetLimitOrdersFunctions,
344
+ LimitOrdersUserParams,
345
+ // types for nftOrders methods:
346
+ SignNFTOrderFunctions,
347
+ CancelNFTOrderFunctions,
348
+ GetNFTOrdersFunctions,
349
+ PostNFTOrderFunctions,
350
+ ApproveTokenForNFTOrderFunctions,
351
+ GetNFTOrdersContractFunctions,
352
+ BuildNFTOrdersTxFunctions,
353
+ BuildNFTOrderFunctions,
354
+ BuildNFTOrderInput,
355
+ BuildNFTOrderDataInput,
356
+ NFTOrdersUserParams,
357
+ //types for Delta methods
358
+ DeltaPrice,
359
+ BridgePrice,
360
+ DeltaPriceParams,
361
+ DeltaAuctionOrder,
362
+ DeltaAuction,
363
+ // bridge part of DeltaOrder
364
+ BridgeMetadata,
365
+ BridgeStatus,
366
+ Bridge,
367
+ BridgeInfo,
368
+ BuildDeltaOrderDataParams,
369
+ BuildDeltaOrderFunctions,
370
+ SignableDeltaOrderData,
371
+ BuildCrosschainOrderBridgeFunctions,
372
+ BuildCrosschainOrderBridgeParams,
373
+ CrosschainOrderBridgeAndChanges,
374
+ PostDeltaOrderFunctions,
375
+ PostDeltaOrderParams,
376
+ SignDeltaOrderFunctions,
377
+ GetDeltaContractFunctions,
378
+ GetDeltaPriceFunctions,
379
+ GetDeltaOrdersFunctions,
380
+ ApproveTokenForDeltaFunctions,
381
+ // types for Quote methods
382
+ GetQuoteFunctions,
383
+ QuoteParams,
384
+ QuoteResponse,
385
+ QuoteWithDeltaPrice,
386
+ QuoteWithMarketPrice,
387
+ QuoteWithMarketPriceAsFallback,
388
+ //common
389
+ ConstructFetchInput,
390
+ ContractCallerFunctions,
391
+ ConstructProviderFetchInput,
392
+ // other types
393
+ GetPartnerFeeFunctions,
394
+ GetBridgeInfoFunctions,
395
+ IsTokenSupportedInDeltaFunctions,
396
+ GetMulticallHandlersFunctions,
397
+ MulticallHandlersResponse,
398
+ Token,
399
+ Address,
400
+ AddressOrSymbol,
401
+ PriceString,
402
+ TxHash,
403
+ TxSendOverrides,
404
+ OptimalRate,
405
+ OptionalRate,
406
+ FetcherErrorInterface,
407
+ APIVersion,
408
+ };
409
+
410
+ export { SDKConfig, constructPartialSDK } from './sdk/partial';
411
+ export { AllSDKMethods, constructFullSDK } from './sdk/full';
412
+ export {
413
+ SimpleFetchSDK,
414
+ SimpleSDK,
415
+ constructSimpleSDK,
416
+ ProviderOptions as SimpleSDKProviderOptions,
417
+ } from './sdk/simple';
418
+
419
+ // bundled methods for limitOrders
420
+ export * from './methods/limitOrders';
421
+ export * from './methods/limitOrders/helpers/types';
422
+ // bundled methods for nftOrders
423
+ export * from './methods/nftOrders';
424
+ export * from './methods/nftOrders/helpers/types';
425
+ export { AssetType } from './methods/nftOrders/helpers/misc';
@@ -0,0 +1,29 @@
1
+ export const name = 'AUGUSTUS RFQ';
2
+ export const version = '1';
3
+ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
4
+
5
+ type TypedDataDomain = {
6
+ name?: string;
7
+ version?: string;
8
+ chainId?: bigint | string | number;
9
+ verifyingContract?: string;
10
+ salt?: string;
11
+ };
12
+
13
+ export type TypedDataField = {
14
+ name: string;
15
+ type: string;
16
+ };
17
+
18
+ export type SignableTypedData = {
19
+ types: Record<string, TypedDataField[]>;
20
+ domain: TypedDataDomain;
21
+ data: Record<string, any>;
22
+ };
23
+
24
+ export type Domain = {
25
+ name: string;
26
+ version: string;
27
+ chainId: number;
28
+ verifyingContract: string;
29
+ };