@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,161 @@
1
+ import type { OptimalRate, OptionalRate, ParaSwapVersion } from '@paraswap/core';
2
+ import type { Address, AddressOrSymbol, PriceString, Token, TxHash } from './helpers/token';
3
+ import type { SignableTypedData } from './methods/common/orders/buildOrderData';
4
+ import { TransactionParams } from './methods/swap/transaction';
5
+ export type { Address, AddressOrSymbol, PriceString, Token, TxHash, OptimalRate, OptionalRate, };
6
+ export type EnumerateLiteral<T extends Record<string, any>> = {
7
+ [K in keyof T]: T[K] extends `${infer n}` ? n : never;
8
+ }[keyof T];
9
+ /** @description Passed to version API endpoints as ?version: to /prices and /adapters */
10
+ export type APIVersion = EnumerateLiteral<typeof ParaSwapVersion>;
11
+ export interface ConstructBaseInput {
12
+ apiURL?: string;
13
+ version?: APIVersion;
14
+ chainId: number;
15
+ }
16
+ /** @description Any params that can be passed to fetcher. E.g. Axios fetcher can accept signal and timeout, fetch can accept signal */
17
+ export type RequestParameters = {
18
+ [K: string]: any;
19
+ signal?: AbortSignal;
20
+ };
21
+ interface FetcherInputBase<URL extends string = string> {
22
+ url: URL;
23
+ headers?: Record<string, string>;
24
+ requestParams?: RequestParameters;
25
+ }
26
+ export interface FetcherGetInput<URL extends string = string> extends FetcherInputBase<URL> {
27
+ method: 'GET';
28
+ }
29
+ export interface FetcherPostInput<URL extends string = string> extends FetcherInputBase<URL> {
30
+ method: 'POST';
31
+ data: Record<string, any>;
32
+ }
33
+ export type FetcherFunction = <T, URL extends string = string>(params: FetcherGetInput<URL> | FetcherPostInput<URL>) => Promise<T>;
34
+ export type ExtraFetchParams = {
35
+ apiKey?: string;
36
+ };
37
+ export interface ConstructFetchInput extends ConstructBaseInput {
38
+ fetcher: FetcherFunction;
39
+ }
40
+ interface OverridesBase {
41
+ from?: string;
42
+ gasPrice?: string;
43
+ maxFeePerGas?: string;
44
+ maxPriorityFeePerGas?: string;
45
+ gas?: number;
46
+ value?: number | string;
47
+ }
48
+ type BlockTag = string | number | 'latest' | 'pending' | 'earliest' | 'genesis';
49
+ export interface StaticCallOverrides extends OverridesBase {
50
+ block?: BlockTag;
51
+ }
52
+ export interface TxSendOverrides extends OverridesBase {
53
+ nonce?: number;
54
+ }
55
+ interface ContractCallInput<T extends string> {
56
+ address: Address;
57
+ abi: ReadonlyArray<JsonFragment>;
58
+ contractMethod: T;
59
+ args: any[];
60
+ }
61
+ export interface ContractCallStaticInput<T extends string> extends ContractCallInput<T> {
62
+ overrides: StaticCallOverrides;
63
+ }
64
+ interface ContractCallTransactionInput<T extends string> extends ContractCallInput<T> {
65
+ overrides: TxSendOverrides;
66
+ }
67
+ export type StaticContractCallerFn = <T, M extends string = string>(params: ContractCallStaticInput<M>) => Promise<T>;
68
+ export type TransactionContractCallerFn<T> = <M extends string = string>(params: ContractCallTransactionInput<M>) => Promise<T>;
69
+ export type SignTypedDataContractCallerFn = (typedData: SignableTypedData) => Promise<string>;
70
+ export interface ContractCallerFunctions<T> {
71
+ staticCall: StaticContractCallerFn;
72
+ transactCall: TransactionContractCallerFn<T>;
73
+ signTypedDataCall: SignTypedDataContractCallerFn;
74
+ }
75
+ export interface ConstructProviderFetchInput<T, D extends keyof ContractCallerFunctions<T> = keyof ContractCallerFunctions<T>> extends ConstructFetchInput {
76
+ contractCaller: Pick<ContractCallerFunctions<T>, D>;
77
+ }
78
+ export type TokenFromApi = Pick<Token, 'address' | 'decimals' | 'symbol' | 'balance' | 'allowance'>;
79
+ export interface TokensApiResponse {
80
+ tokens: TokenFromApi[];
81
+ }
82
+ export interface TokenApiResponse {
83
+ token?: TokenFromApi;
84
+ }
85
+ export type NoExtraKeysCheck<Checking, CheckAgainst> = Exclude<keyof Checking, keyof CheckAgainst> extends never ? Checking : never;
86
+ export type PriceRouteApiResponse = {
87
+ priceRoute: OptimalRate;
88
+ };
89
+ export type SwapApiResponse = {
90
+ priceRoute: OptimalRate;
91
+ txParams: Omit<TransactionParams, 'gas'>;
92
+ };
93
+ export type PriceRouteApiErrorResponse = {
94
+ error: string;
95
+ } | {
96
+ error: string;
97
+ value: string;
98
+ priceRoute: OptimalRate;
99
+ };
100
+ export type AnyFunction = (...args: any[]) => any;
101
+ export interface JsonFragmentType {
102
+ /**
103
+ * The parameter name.
104
+ */
105
+ readonly name?: string;
106
+ /**
107
+ * If the parameter is indexed.
108
+ */
109
+ readonly indexed?: boolean;
110
+ /**
111
+ * The type of the parameter.
112
+ */
113
+ readonly type?: string;
114
+ /**
115
+ * The internal Solidity type.
116
+ */
117
+ readonly internalType?: string;
118
+ /**
119
+ * The components for a tuple.
120
+ */
121
+ readonly components?: ReadonlyArray<JsonFragmentType>;
122
+ }
123
+ export interface JsonFragment {
124
+ /**
125
+ * The name of the error, event, function, etc.
126
+ */
127
+ readonly name?: string;
128
+ /**
129
+ * The type of the fragment (e.g. ``event``, ``"function"``, etc.)
130
+ */
131
+ readonly type?: string;
132
+ /**
133
+ * If the event is anonymous.
134
+ */
135
+ readonly anonymous?: boolean;
136
+ /**
137
+ * If the function is payable.
138
+ */
139
+ readonly payable?: boolean;
140
+ /**
141
+ * If the function is constant.
142
+ */
143
+ readonly constant?: boolean;
144
+ /**
145
+ * The mutability state of the function.
146
+ */
147
+ readonly stateMutability?: string;
148
+ /**
149
+ * The input parameters.
150
+ */
151
+ readonly inputs?: ReadonlyArray<JsonFragmentType>;
152
+ /**
153
+ * The output parameters.
154
+ */
155
+ readonly outputs?: ReadonlyArray<JsonFragmentType>;
156
+ /**
157
+ * The gas limit to use when sending a transaction for this function.
158
+ */
159
+ readonly gas?: string;
160
+ }
161
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/docs/DELTA.md ADDED
@@ -0,0 +1,207 @@
1
+ **Velora Delta** is an intent-based protocol that enables a Velora user to make gasless swaps where multiple agents compete to execute the trade at the best price possible.
2
+ This way the user doesn't need to make a transaction themselves but only to sign a Delta Order.
3
+ The easiest way to make use of the Delta Order is to use the SDK following these steps:
4
+
5
+ ### 1. Construct an SDK object
6
+
7
+ ```ts
8
+ const account = userAddress;
9
+ const deltaSDK = constructSimpleSDK(
10
+ {chainId: 1, axios},
11
+ {
12
+ ethersProviderOrSigner: provider, // JsonRpcProvider
13
+ EthersContract: ethers.Contract,
14
+ account,
15
+ });
16
+ // for usage with different web3 provider libraries refer to the main [README](./README.md)
17
+ ```
18
+
19
+ ### 2. Request prices for a Token pair
20
+
21
+ ```ts
22
+ const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
23
+ const USDC_TOKEN = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
24
+ const amount = '1000000000000'; // in wei
25
+
26
+ const deltaPrice = await deltaSDK.getDeltaPrice({
27
+ srcToken: DAI_TOKEN,
28
+ destToken: USDC_TOKEN,
29
+ amount,
30
+ userAddress: account,
31
+ srcDecimals: 18,
32
+ destDecimals: 6,
33
+ // partner: "..." // if available
34
+ });
35
+ ```
36
+
37
+
38
+ ### 3. Approve srcToken for DeltaContract
39
+
40
+ ```ts
41
+ const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
42
+ await tx.wait();
43
+ ```
44
+
45
+ Alternatively sign Permit (DAI or Permit1) or Permit2 TransferFrom with DeltaContract as the verifyingContract
46
+
47
+ ```ts
48
+ const DeltaContract = await deltaSDK.getDeltaContract();
49
+
50
+ // values depend on the Permit type and the srcToken
51
+ const signature = await signer._signTypedData(domain, types, message);
52
+ ```
53
+
54
+ See more on accepted Permit variants in [Velora documentation](https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#supported-permits)
55
+
56
+
57
+ ### 4. Sign and submit a Delta Order
58
+
59
+ ```ts
60
+ // calculate acceptable destAmount
61
+ const slippagePercent = 0.5;
62
+ const destAmountAfterSlippage = (
63
+ +deltaPrice.destAmount *
64
+ (1 - slippagePercent / 100)
65
+ ).toString(10);
66
+
67
+ const deltaAuction = await deltaSDK.submitDeltaOrder({
68
+ deltaPrice,
69
+ owner: account,
70
+ // beneficiary: anotherAccount, // if need to send destToken to another account
71
+ // permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
72
+ srcToken: DAI_TOKEN,
73
+ destToken: USDC_TOKEN,
74
+ srcAmount: amount,
75
+ destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
76
+ });
77
+ ```
78
+
79
+ ### 5. Wait for Delta Order execution
80
+
81
+ ```ts
82
+ // poll if necessary
83
+ const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
84
+ if (auction?.status === 'EXECUTED') {
85
+ console.log('Auction was executed');
86
+ }
87
+ ```
88
+
89
+ #### A more detailed example of Delta Order usage can be found in [examples/delta](./src/examples/delta.ts)
90
+
91
+
92
+
93
+
94
+ ---------------------------------------------------
95
+
96
+ ## Crosschain Delta Orders
97
+
98
+ In case you want to perform a crosschain swap, the process is a little more involved.
99
+
100
+ ### 1. Construct an SDK object
101
+
102
+ ```ts
103
+ const SRC_CHAIN_ID = 1 // Ethereum
104
+ const DEST_CHAIN_ID = 10; // Optimism
105
+
106
+ const account = userAddress;
107
+ const deltaSDK = constructSimpleSDK(
108
+ {chainId: SRC_CHAIN_ID, axios},
109
+ {
110
+ ethersProviderOrSigner: provider, // JsonRpcProvider
111
+ EthersContract: ethers.Contract,
112
+ account,
113
+ });
114
+ // for usage with different web3 provider libraries refer to the main [README](./README.md)
115
+ ```
116
+
117
+ ### 2. Check which tokens are available on the destination chain.
118
+
119
+ A limited list of tokens are available in Across, the service facilitating crosschain bridging
120
+
121
+ ```ts
122
+ const bridgeInfo = await deltaSDK.getBridgeInfo();
123
+
124
+ const tokensAvailableForBridging = bridgeInfo[SRC_CHAIN_ID]?.[DEST_CHAIN_ID]
125
+ ```
126
+
127
+
128
+ ### 3. Request prices for a Token pair
129
+
130
+ ```ts
131
+ const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
132
+
133
+ const USDC_TOKEN_ON_DEST_CHAIN = '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'; // available for bridging on Optimism
134
+ const amount = '1000000000000'; // in wei
135
+
136
+ const deltaPrice = await deltaSDK.getDeltaPrice({
137
+ srcToken: DAI_TOKEN,
138
+ destToken: USDC_TOKEN_ON_DEST_CHAIN,
139
+ destChainId: DEST_CHAIN_ID, // required to get deltaPrice for a Crosschain Order
140
+ amount,
141
+ userAddress: account,
142
+ srcDecimals: 18,
143
+ destDecimals: 6,
144
+ // partner: "..." // if available
145
+ });
146
+ ```
147
+
148
+
149
+ ### 4. Approve srcToken for DeltaContract
150
+
151
+ ```ts
152
+ const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
153
+ await tx.wait();
154
+ ```
155
+
156
+ Alternatively sign Permit (DAI or Permit1) or Permit2 TransferFrom with DeltaContract as the verifyingContract
157
+
158
+ ```ts
159
+ const DeltaContract = await deltaSDK.getDeltaContract();
160
+
161
+ // values depend on the Permit type and the srcToken
162
+ const signature = await signer._signTypedData(domain, types, message);
163
+ ```
164
+
165
+ See more on accepted Permit variants in [Velora documentation](https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#supported-permits)
166
+
167
+
168
+ ### 5. Sign and submit a Delta Order
169
+
170
+ ```ts
171
+ // calculate acceptable destAmount
172
+ const slippagePercent = 0.5;
173
+ const destAmountAfterSlippage = (
174
+ +deltaPrice.destAmount *
175
+ (1 - slippagePercent / 100)
176
+ ).toString(10);
177
+
178
+ const deltaAuction = await deltaSDK.submitDeltaOrder({
179
+ deltaPrice,
180
+ owner: account,
181
+ // permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
182
+ srcToken: DAI_TOKEN,
183
+ destToken: USDC_TOKEN_ON_DEST_CHAIN,
184
+ srcAmount: amount,
185
+ destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
186
+ destChainId: DEST_CHAIN_ID, // required to construct a Crosschain Order
187
+ beneficiary: anotherAccount, // if need to send destToken to another account on destChain
188
+ beneficiaryType: 'EOA', // whether the beneficiary on destChain is a smart contract
189
+ // bridge, // user-constructed Bridge object for Crosschain Orders
190
+ });
191
+ ```
192
+
193
+ To construct a Crosschain Delta Order it is required to either:
194
+ * provide both `beneficiary` address and `beneficiaryType` value, so that the `Order.bridge` can be constructed automatically by the SDK.
195
+ * construct Bridge object. Refer to [documentation](https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#sign-an-order-cross-chain) for how to do that.
196
+
197
+ This is necessary because Across, the service facilitating crosschain bridging, has [special logic when it comes to transferring ETH and WETH](https://docs.across.to/introduction/technical-faq#what-is-the-behavior-of-eth-weth-in-transfers).
198
+
199
+ ### 5. Wait for Delta Order execution
200
+
201
+ ```ts
202
+ // poll if necessary
203
+ const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
204
+ if (auction?.status === 'EXECUTED' && auction.bridgeStatus === "filled") {
205
+ console.log('Auction was executed');
206
+ }
207
+ ```
package/package.json ADDED
@@ -0,0 +1,126 @@
1
+ {
2
+ "name": "@velora-dex/sdk",
3
+ "version": "8.0.0",
4
+ "main": "dist/index.js",
5
+ "module": "dist/sdk.esm.js",
6
+ "typings": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "src",
10
+ "docs/DELTA.md"
11
+ ],
12
+ "scripts": {
13
+ "analyze": "size-limit --why",
14
+ "build": "dts build",
15
+ "lint": "dts lint",
16
+ "prepare": "dts build",
17
+ "size": "size-limit",
18
+ "start": "dts watch",
19
+ "test": "dts test",
20
+ "docs:html": "typedoc --gitRevision \"$(git branch --show-current)\"",
21
+ "docs:md": "MD=true yarn docs:html",
22
+ "docs": "yarn docs:html && yarn docs:md"
23
+ },
24
+ "husky": {
25
+ "hooks": {
26
+ "pre-commit": "dts lint --fix"
27
+ }
28
+ },
29
+ "prettier": {
30
+ "printWidth": 80,
31
+ "semi": true,
32
+ "singleQuote": true,
33
+ "trailingComma": "es5"
34
+ },
35
+ "jest": {
36
+ "testEnvironment": "node"
37
+ },
38
+ "engines": {
39
+ "node": ">=18"
40
+ },
41
+ "size-limit": [
42
+ {
43
+ "path": "dist/sdk.cjs.production.min.js",
44
+ "limit": "25 KB"
45
+ },
46
+ {
47
+ "path": "dist/sdk.esm.js",
48
+ "limit": "25 KB"
49
+ }
50
+ ],
51
+ "devDependencies": {
52
+ "@size-limit/preset-small-lib": "^11.1.6",
53
+ "@tsconfig/recommended": "^1.0.8",
54
+ "axios": "^1.7.7",
55
+ "bignumber.js": "^9.1.2",
56
+ "dotenv": "^16.4.5",
57
+ "dts-cli": "^2.0.5",
58
+ "ethers": "^6.13.4",
59
+ "ethersV5": "npm:ethers@5",
60
+ "hardhat": "^2.22.15",
61
+ "hardhat-switch-network": "^1.1.1",
62
+ "husky": "^9.1.6",
63
+ "isomorphic-unfetch": "^4.0.2",
64
+ "size-limit": "^11.1.6",
65
+ "tslib": "^2.8.1",
66
+ "typedoc": "^0.26.11",
67
+ "typedoc-plugin-markdown": "^4.2.10",
68
+ "typedoc-plugin-missing-exports": "^3.0.0",
69
+ "typedoc-plugin-replace-text": "^4.0.0",
70
+ "typescript": "^5.6.3",
71
+ "viem": "^2.21.39",
72
+ "wagmi": "^2.12.25",
73
+ "web3": "^4.14.0"
74
+ },
75
+ "peerDependencies": {
76
+ "axios": ">=0.25.0 <2.0.0",
77
+ "ethers": "^5.5.0 || ^6.0.0",
78
+ "viem": "^2.21.0",
79
+ "web3": "^4.14.0"
80
+ },
81
+ "peerDependenciesMeta": {
82
+ "axios": {
83
+ "optional": true
84
+ },
85
+ "ethers": {
86
+ "optional": true
87
+ },
88
+ "web3": {
89
+ "optional": true
90
+ },
91
+ "viem": {
92
+ "optional": true
93
+ }
94
+ },
95
+ "dependencies": {
96
+ "@paraswap/core": "2.4.0",
97
+ "ts-essentials": "^10.0.3"
98
+ },
99
+ "author": "Velora",
100
+ "description": "Velora SDK",
101
+ "license": "MIT",
102
+ "keywords": [
103
+ "web3",
104
+ "web3js",
105
+ "ethereum",
106
+ "crypto",
107
+ "blockchain",
108
+ "DEX",
109
+ "velora",
110
+ "ether",
111
+ "eth",
112
+ "dai",
113
+ "tokens",
114
+ "exchange",
115
+ "erc-20",
116
+ "erc20"
117
+ ],
118
+ "repository": {
119
+ "type": "git",
120
+ "url": "https://github.com/VeloraDEX/paraswap-sdk"
121
+ },
122
+ "publishConfig": {
123
+ "access": "public"
124
+ },
125
+ "bugs": "https://github.com/VeloraDEX/paraswap-sdk/issues"
126
+ }
@@ -0,0 +1,16 @@
1
+ import { EnumerateLiteral, APIVersion } from './types';
2
+
3
+ import type { ContractMethod } from '@paraswap/core';
4
+
5
+ export {
6
+ SwapSide,
7
+ ContractMethod,
8
+ ContractMethodV5,
9
+ ContractMethodV6,
10
+ } from '@paraswap/core';
11
+
12
+ // allows to pass by name instead of importing enum first
13
+ export type ContractMethodByName = EnumerateLiteral<typeof ContractMethod>;
14
+
15
+ export const API_URL = 'https://api.paraswap.io';
16
+ export const DEFAULT_VERSION = '6.2' satisfies APIVersion;
@@ -0,0 +1,44 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { constructSimpleSDK, FetcherFunction } from '../';
3
+
4
+ // mock superagent module without adding a dependency
5
+ interface SuperAgentStatic
6
+ extends Promise<{
7
+ body: any;
8
+ ok: boolean;
9
+ status: number;
10
+ statusCode: number;
11
+ error: false | { status: number; textx: string };
12
+ }> {
13
+ set(headers: Record<string, string>): this;
14
+ get(url: string): this;
15
+ post(url: string): this;
16
+ send(body: any): this;
17
+ }
18
+ // pretend we do `import superagent from "superagent"
19
+ declare const superagent: SuperAgentStatic;
20
+
21
+ export const superagentFetcher = (): FetcherFunction =>
22
+ async function (options) {
23
+ if (options.method.toLowerCase() === 'post' && 'data' in options) {
24
+ const response = await superagent
25
+ .post(options.url)
26
+ .set(options?.headers || {})
27
+ .send(options.data);
28
+
29
+ return response.body;
30
+ } else {
31
+ const response = await superagent
32
+ .get(options.url)
33
+ .set(options?.headers || {});
34
+
35
+ return response.body;
36
+ }
37
+
38
+ // Add error handling with FetcherError;
39
+ // handle options.requestParams.signal;
40
+ // pass any other paramteres in requestParams
41
+ };
42
+
43
+ const fetcher: FetcherFunction = superagentFetcher();
44
+ const sdk = constructSimpleSDK({ fetcher, chainId: 1 });
@@ -0,0 +1,127 @@
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
+ } from '..';
10
+
11
+ const fetcher = constructAxiosFetcher(axios);
12
+
13
+ const provider = ethers.getDefaultProvider(1);
14
+ const signer = Wallet.createRandom().connect(provider);
15
+ const account = signer.address;
16
+ const contractCaller = constructEthersContractCaller({
17
+ ethersProviderOrSigner: provider,
18
+ EthersContract: ethers.Contract,
19
+ });
20
+
21
+ // type AdaptersFunctions & ApproveTokenFunctions<ethers.ContractTransaction>
22
+ const deltaSDK = constructPartialSDK(
23
+ {
24
+ chainId: 1,
25
+ fetcher,
26
+ contractCaller,
27
+ },
28
+ constructAllDeltaOrdersHandlers
29
+ );
30
+
31
+ const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
32
+ const USDC_TOKEN = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
33
+
34
+ async function simpleDeltaFlow() {
35
+ const amount = '1000000000000'; // wei
36
+
37
+ const deltaPrice = await deltaSDK.getDeltaPrice({
38
+ srcToken: DAI_TOKEN,
39
+ destToken: USDC_TOKEN,
40
+ amount,
41
+ userAddress: account,
42
+ srcDecimals: 18,
43
+ destDecimals: 18,
44
+ // partner: "..." // if available
45
+ });
46
+
47
+ const DeltaContract = await deltaSDK.getDeltaContract();
48
+
49
+ // or sign a Permit1 or Permit2 TransferFrom for DeltaContract
50
+ const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
51
+ await tx.wait();
52
+
53
+ const slippagePercent = 0.5;
54
+ const destAmountAfterSlippage = BigInt(
55
+ // get rid of exponential notation
56
+
57
+ +(+deltaPrice.destAmount * (1 - slippagePercent / 100)).toFixed(0)
58
+ // get rid of decimals
59
+ ).toString(10);
60
+
61
+ const deltaAuction = await deltaSDK.submitDeltaOrder({
62
+ deltaPrice,
63
+ owner: account,
64
+ // beneficiary: anotherAccount, // if need to send destToken to another account
65
+ // permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
66
+ srcToken: DAI_TOKEN,
67
+ destToken: USDC_TOKEN,
68
+ srcAmount: amount,
69
+ destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
70
+ });
71
+
72
+ // poll if necessary
73
+ const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
74
+ if (auction?.status === 'EXECUTED') {
75
+ console.log('Auction was executed');
76
+ }
77
+ }
78
+ async function manualDeltaFlow() {
79
+ const amount = '1000000000000'; // wei
80
+
81
+ const deltaPrice = await deltaSDK.getDeltaPrice({
82
+ srcToken: DAI_TOKEN,
83
+ destToken: USDC_TOKEN,
84
+ amount,
85
+ userAddress: account,
86
+ srcDecimals: 18,
87
+ destDecimals: 18,
88
+ // partner: "..." // if available
89
+ });
90
+
91
+ const DeltaContract = await deltaSDK.getDeltaContract();
92
+
93
+ // or sign a Permit1 or Permit2 TransferFrom for DeltaContract
94
+ const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
95
+ await tx.wait();
96
+
97
+ const slippagePercent = 0.5;
98
+ const destAmountAfterSlippage = (
99
+ +deltaPrice.destAmount *
100
+ (1 - slippagePercent / 100)
101
+ ).toString(10);
102
+
103
+ const signableOrderData = await deltaSDK.buildDeltaOrder({
104
+ deltaPrice,
105
+ owner: account,
106
+ // beneficiary: anotherAccount, // if need to send destToken to another account
107
+ // permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
108
+ srcToken: DAI_TOKEN,
109
+ destToken: USDC_TOKEN,
110
+ srcAmount: amount,
111
+ destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
112
+ });
113
+
114
+ const signature = await deltaSDK.signDeltaOrder(signableOrderData);
115
+
116
+ const deltaAuction = await deltaSDK.postDeltaOrder({
117
+ // partner: "..." // if available
118
+ order: signableOrderData.data,
119
+ signature,
120
+ });
121
+
122
+ // poll if necessary
123
+ const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
124
+ if (auction?.status === 'EXECUTED') {
125
+ console.log('Auction was executed');
126
+ }
127
+ }