@lifi/sdk 4.0.1 → 4.2.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 (241) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/actions/getChains.d.ts +7 -8
  3. package/dist/cjs/actions/getConnections.d.ts +6 -7
  4. package/dist/cjs/actions/getContractCallsQuote.d.ts +7 -8
  5. package/dist/cjs/actions/getGasRecommendation.d.ts +7 -8
  6. package/dist/cjs/actions/getNameServiceAddress.d.ts +6 -7
  7. package/dist/cjs/actions/getQuote.d.ts +7 -8
  8. package/dist/cjs/actions/getQuote.js +2 -1
  9. package/dist/cjs/actions/getQuote.js.map +1 -1
  10. package/dist/cjs/actions/getRelayedTransactionStatus.d.ts +7 -8
  11. package/dist/cjs/actions/getRelayerQuote.d.ts +7 -8
  12. package/dist/cjs/actions/getRoutes.d.ts +10 -10
  13. package/dist/cjs/actions/getRoutes.js.map +1 -1
  14. package/dist/cjs/actions/getStatus.d.ts +7 -8
  15. package/dist/cjs/actions/getStepTransaction.d.ts +10 -10
  16. package/dist/cjs/actions/getStepTransaction.js +2 -0
  17. package/dist/cjs/actions/getStepTransaction.js.map +1 -1
  18. package/dist/cjs/actions/getToken.d.ts +8 -9
  19. package/dist/cjs/actions/getTokenBalance.d.ts +8 -9
  20. package/dist/cjs/actions/getTokenBalances.d.ts +8 -9
  21. package/dist/cjs/actions/getTokenBalancesByChain.d.ts +8 -9
  22. package/dist/cjs/actions/getTokenBalancesByChain.js +4 -2
  23. package/dist/cjs/actions/getTokenBalancesByChain.js.map +1 -1
  24. package/dist/cjs/actions/getTokens.d.ts +6 -7
  25. package/dist/cjs/actions/getTools.d.ts +6 -7
  26. package/dist/cjs/actions/getTransactionHistory.d.ts +13 -19
  27. package/dist/cjs/actions/getWalletBalances.d.ts +7 -8
  28. package/dist/cjs/actions/index.d.ts +115 -113
  29. package/dist/cjs/actions/index.js.map +1 -1
  30. package/dist/cjs/actions/patchContractCalls.d.ts +0 -1
  31. package/dist/cjs/actions/relayTransaction.d.ts +7 -8
  32. package/dist/cjs/client/createClient.d.ts +0 -1
  33. package/dist/cjs/client/getClientStorage.d.ts +0 -1
  34. package/dist/cjs/core/BaseStepExecutionTask.d.ts +0 -1
  35. package/dist/cjs/core/BaseStepExecutor.d.ts +0 -1
  36. package/dist/cjs/core/StatusManager.d.ts +40 -51
  37. package/dist/cjs/core/TaskPipeline.d.ts +0 -1
  38. package/dist/cjs/core/actionMessages.d.ts +0 -1
  39. package/dist/cjs/core/execution.d.ts +29 -30
  40. package/dist/cjs/core/executionState.d.ts +0 -1
  41. package/dist/cjs/core/prepareRestart.d.ts +0 -1
  42. package/dist/cjs/core/tasks/CheckBalanceTask.d.ts +6 -7
  43. package/dist/cjs/core/tasks/PrepareTransactionTask.d.ts +0 -1
  44. package/dist/cjs/core/tasks/WaitForTransactionStatusTask.d.ts +0 -1
  45. package/dist/cjs/core/tasks/helpers/checkBalance.d.ts +17 -18
  46. package/dist/cjs/core/tasks/helpers/getTransactionRequestData.d.ts +0 -1
  47. package/dist/cjs/core/tasks/helpers/stepComparison.d.ts +11 -12
  48. package/dist/cjs/core/tasks/helpers/waitForTransactionStatus.d.ts +0 -1
  49. package/dist/cjs/core/utils.d.ts +7 -8
  50. package/dist/cjs/errors/SDKError.d.ts +0 -1
  51. package/dist/cjs/errors/baseError.d.ts +0 -1
  52. package/dist/cjs/errors/errors.d.ts +4 -5
  53. package/dist/cjs/errors/httpError.d.ts +0 -1
  54. package/dist/cjs/errors/httpError.js +1 -1
  55. package/dist/cjs/errors/httpError.js.map +1 -1
  56. package/dist/cjs/errors/utils/baseErrorRootCause.d.ts +0 -1
  57. package/dist/cjs/index.d.ts +2 -1
  58. package/dist/cjs/types/actions.d.ts +23 -3
  59. package/dist/cjs/types/core.d.ts +3 -4
  60. package/dist/cjs/types/execution.d.ts +0 -1
  61. package/dist/cjs/utils/checkPackageUpdates.js +1 -1
  62. package/dist/cjs/utils/convertQuoteToRoute.d.ts +9 -10
  63. package/dist/cjs/utils/formatUnits.d.ts +2 -2
  64. package/dist/cjs/utils/getTransactionMessage.d.ts +0 -1
  65. package/dist/cjs/utils/isHex.d.ts +1 -3
  66. package/dist/cjs/utils/isRoutesRequest.d.ts +0 -1
  67. package/dist/cjs/utils/isStep.d.ts +0 -1
  68. package/dist/cjs/utils/isStep.js +2 -1
  69. package/dist/cjs/utils/isStep.js.map +1 -1
  70. package/dist/cjs/utils/isToken.d.ts +0 -1
  71. package/dist/cjs/utils/parseUnits.d.ts +2 -2
  72. package/dist/cjs/utils/request.d.ts +0 -1
  73. package/dist/cjs/utils/toQueryString.d.ts +5 -0
  74. package/dist/cjs/utils/toQueryString.js +17 -0
  75. package/dist/cjs/utils/toQueryString.js.map +1 -0
  76. package/dist/cjs/utils/waitForResult.d.ts +8 -8
  77. package/dist/cjs/utils/withDedupe.d.ts +5 -8
  78. package/dist/cjs/utils/withTimeout.d.ts +10 -16
  79. package/dist/cjs/version.d.ts +1 -1
  80. package/dist/cjs/version.js +1 -1
  81. package/dist/cjs/version.js.map +1 -1
  82. package/dist/esm/actions/getChains.d.ts +7 -8
  83. package/dist/esm/actions/getChains.d.ts.map +1 -1
  84. package/dist/esm/actions/getConnections.d.ts +6 -7
  85. package/dist/esm/actions/getConnections.d.ts.map +1 -1
  86. package/dist/esm/actions/getContractCallsQuote.d.ts +7 -8
  87. package/dist/esm/actions/getContractCallsQuote.d.ts.map +1 -1
  88. package/dist/esm/actions/getGasRecommendation.d.ts +7 -8
  89. package/dist/esm/actions/getGasRecommendation.d.ts.map +1 -1
  90. package/dist/esm/actions/getNameServiceAddress.d.ts +6 -7
  91. package/dist/esm/actions/getNameServiceAddress.d.ts.map +1 -1
  92. package/dist/esm/actions/getQuote.d.ts +7 -8
  93. package/dist/esm/actions/getQuote.d.ts.map +1 -1
  94. package/dist/esm/actions/getQuote.js +2 -1
  95. package/dist/esm/actions/getQuote.js.map +1 -1
  96. package/dist/esm/actions/getRelayedTransactionStatus.d.ts +7 -8
  97. package/dist/esm/actions/getRelayedTransactionStatus.d.ts.map +1 -1
  98. package/dist/esm/actions/getRelayerQuote.d.ts +7 -8
  99. package/dist/esm/actions/getRelayerQuote.d.ts.map +1 -1
  100. package/dist/esm/actions/getRoutes.d.ts +10 -10
  101. package/dist/esm/actions/getRoutes.d.ts.map +1 -1
  102. package/dist/esm/actions/getRoutes.js.map +1 -1
  103. package/dist/esm/actions/getStatus.d.ts +7 -8
  104. package/dist/esm/actions/getStatus.d.ts.map +1 -1
  105. package/dist/esm/actions/getStepTransaction.d.ts +10 -10
  106. package/dist/esm/actions/getStepTransaction.d.ts.map +1 -1
  107. package/dist/esm/actions/getStepTransaction.js +2 -0
  108. package/dist/esm/actions/getStepTransaction.js.map +1 -1
  109. package/dist/esm/actions/getToken.d.ts +8 -9
  110. package/dist/esm/actions/getToken.d.ts.map +1 -1
  111. package/dist/esm/actions/getTokenBalance.d.ts +8 -9
  112. package/dist/esm/actions/getTokenBalance.d.ts.map +1 -1
  113. package/dist/esm/actions/getTokenBalances.d.ts +8 -9
  114. package/dist/esm/actions/getTokenBalances.d.ts.map +1 -1
  115. package/dist/esm/actions/getTokenBalancesByChain.d.ts +8 -9
  116. package/dist/esm/actions/getTokenBalancesByChain.d.ts.map +1 -1
  117. package/dist/esm/actions/getTokenBalancesByChain.js +4 -2
  118. package/dist/esm/actions/getTokenBalancesByChain.js.map +1 -1
  119. package/dist/esm/actions/getTokens.d.ts +6 -7
  120. package/dist/esm/actions/getTokens.d.ts.map +1 -1
  121. package/dist/esm/actions/getTools.d.ts +6 -7
  122. package/dist/esm/actions/getTools.d.ts.map +1 -1
  123. package/dist/esm/actions/getTransactionHistory.d.ts +13 -19
  124. package/dist/esm/actions/getTransactionHistory.d.ts.map +1 -1
  125. package/dist/esm/actions/getWalletBalances.d.ts +7 -8
  126. package/dist/esm/actions/getWalletBalances.d.ts.map +1 -1
  127. package/dist/esm/actions/index.d.ts +115 -113
  128. package/dist/esm/actions/index.d.ts.map +1 -1
  129. package/dist/esm/actions/index.js.map +1 -1
  130. package/dist/esm/actions/patchContractCalls.d.ts +0 -1
  131. package/dist/esm/actions/patchContractCalls.d.ts.map +1 -1
  132. package/dist/esm/actions/relayTransaction.d.ts +7 -8
  133. package/dist/esm/actions/relayTransaction.d.ts.map +1 -1
  134. package/dist/esm/client/createClient.d.ts +0 -1
  135. package/dist/esm/client/createClient.d.ts.map +1 -1
  136. package/dist/esm/client/getClientStorage.d.ts +0 -1
  137. package/dist/esm/client/getClientStorage.d.ts.map +1 -1
  138. package/dist/esm/core/BaseStepExecutionTask.d.ts +0 -1
  139. package/dist/esm/core/BaseStepExecutionTask.d.ts.map +1 -1
  140. package/dist/esm/core/BaseStepExecutor.d.ts +0 -1
  141. package/dist/esm/core/BaseStepExecutor.d.ts.map +1 -1
  142. package/dist/esm/core/StatusManager.d.ts +40 -51
  143. package/dist/esm/core/StatusManager.d.ts.map +1 -1
  144. package/dist/esm/core/TaskPipeline.d.ts +0 -1
  145. package/dist/esm/core/TaskPipeline.d.ts.map +1 -1
  146. package/dist/esm/core/actionMessages.d.ts +0 -1
  147. package/dist/esm/core/actionMessages.d.ts.map +1 -1
  148. package/dist/esm/core/execution.d.ts +29 -30
  149. package/dist/esm/core/execution.d.ts.map +1 -1
  150. package/dist/esm/core/executionState.d.ts +0 -1
  151. package/dist/esm/core/executionState.d.ts.map +1 -1
  152. package/dist/esm/core/prepareRestart.d.ts +0 -1
  153. package/dist/esm/core/prepareRestart.d.ts.map +1 -1
  154. package/dist/esm/core/storage.d.ts.map +1 -1
  155. package/dist/esm/core/tasks/CheckBalanceTask.d.ts +6 -7
  156. package/dist/esm/core/tasks/CheckBalanceTask.d.ts.map +1 -1
  157. package/dist/esm/core/tasks/PrepareTransactionTask.d.ts +0 -1
  158. package/dist/esm/core/tasks/PrepareTransactionTask.d.ts.map +1 -1
  159. package/dist/esm/core/tasks/WaitForTransactionStatusTask.d.ts +0 -1
  160. package/dist/esm/core/tasks/WaitForTransactionStatusTask.d.ts.map +1 -1
  161. package/dist/esm/core/tasks/helpers/checkBalance.d.ts +17 -18
  162. package/dist/esm/core/tasks/helpers/checkBalance.d.ts.map +1 -1
  163. package/dist/esm/core/tasks/helpers/getTransactionRequestData.d.ts +0 -1
  164. package/dist/esm/core/tasks/helpers/getTransactionRequestData.d.ts.map +1 -1
  165. package/dist/esm/core/tasks/helpers/stepComparison.d.ts +11 -12
  166. package/dist/esm/core/tasks/helpers/stepComparison.d.ts.map +1 -1
  167. package/dist/esm/core/tasks/helpers/waitForTransactionStatus.d.ts +0 -1
  168. package/dist/esm/core/tasks/helpers/waitForTransactionStatus.d.ts.map +1 -1
  169. package/dist/esm/core/utils.d.ts +7 -8
  170. package/dist/esm/core/utils.d.ts.map +1 -1
  171. package/dist/esm/errors/SDKError.d.ts +0 -1
  172. package/dist/esm/errors/SDKError.d.ts.map +1 -1
  173. package/dist/esm/errors/baseError.d.ts +0 -1
  174. package/dist/esm/errors/baseError.d.ts.map +1 -1
  175. package/dist/esm/errors/constants.d.ts.map +1 -1
  176. package/dist/esm/errors/errors.d.ts +4 -5
  177. package/dist/esm/errors/errors.d.ts.map +1 -1
  178. package/dist/esm/errors/httpError.d.ts +0 -1
  179. package/dist/esm/errors/httpError.d.ts.map +1 -1
  180. package/dist/esm/errors/httpError.js +1 -1
  181. package/dist/esm/errors/httpError.js.map +1 -1
  182. package/dist/esm/errors/utils/baseErrorRootCause.d.ts +0 -1
  183. package/dist/esm/errors/utils/baseErrorRootCause.d.ts.map +1 -1
  184. package/dist/esm/errors/utils/rootCause.d.ts.map +1 -1
  185. package/dist/esm/index.d.ts +2 -1
  186. package/dist/esm/types/actions.d.ts +23 -3
  187. package/dist/esm/types/actions.d.ts.map +1 -1
  188. package/dist/esm/types/core.d.ts +3 -4
  189. package/dist/esm/types/core.d.ts.map +1 -1
  190. package/dist/esm/types/execution.d.ts +0 -1
  191. package/dist/esm/types/execution.d.ts.map +1 -1
  192. package/dist/esm/types/request.d.ts.map +1 -1
  193. package/dist/esm/utils/checkPackageUpdates.d.ts.map +1 -1
  194. package/dist/esm/utils/checkPackageUpdates.js +1 -1
  195. package/dist/esm/utils/convertQuoteToRoute.d.ts +9 -10
  196. package/dist/esm/utils/convertQuoteToRoute.d.ts.map +1 -1
  197. package/dist/esm/utils/decode.d.ts.map +1 -1
  198. package/dist/esm/utils/fetchTxErrorDetails.d.ts.map +1 -1
  199. package/dist/esm/utils/formatUnits.d.ts +2 -2
  200. package/dist/esm/utils/formatUnits.d.ts.map +1 -1
  201. package/dist/esm/utils/getTransactionMessage.d.ts +0 -1
  202. package/dist/esm/utils/getTransactionMessage.d.ts.map +1 -1
  203. package/dist/esm/utils/isHex.d.ts +1 -3
  204. package/dist/esm/utils/isHex.d.ts.map +1 -1
  205. package/dist/esm/utils/isRoutesRequest.d.ts +0 -1
  206. package/dist/esm/utils/isRoutesRequest.d.ts.map +1 -1
  207. package/dist/esm/utils/isStep.d.ts +0 -1
  208. package/dist/esm/utils/isStep.d.ts.map +1 -1
  209. package/dist/esm/utils/isStep.js +2 -1
  210. package/dist/esm/utils/isStep.js.map +1 -1
  211. package/dist/esm/utils/isToken.d.ts +0 -1
  212. package/dist/esm/utils/isToken.d.ts.map +1 -1
  213. package/dist/esm/utils/parseUnits.d.ts +2 -2
  214. package/dist/esm/utils/parseUnits.d.ts.map +1 -1
  215. package/dist/esm/utils/request.d.ts +0 -1
  216. package/dist/esm/utils/request.d.ts.map +1 -1
  217. package/dist/esm/utils/sleep.d.ts.map +1 -1
  218. package/dist/esm/utils/toQueryString.d.ts +5 -0
  219. package/dist/esm/utils/toQueryString.d.ts.map +1 -0
  220. package/dist/esm/utils/toQueryString.js +16 -0
  221. package/dist/esm/utils/toQueryString.js.map +1 -0
  222. package/dist/esm/utils/waitForResult.d.ts +8 -8
  223. package/dist/esm/utils/waitForResult.d.ts.map +1 -1
  224. package/dist/esm/utils/withDedupe.d.ts +5 -8
  225. package/dist/esm/utils/withDedupe.d.ts.map +1 -1
  226. package/dist/esm/utils/withTimeout.d.ts +10 -16
  227. package/dist/esm/utils/withTimeout.d.ts.map +1 -1
  228. package/dist/esm/version.d.ts +1 -1
  229. package/dist/esm/version.d.ts.map +1 -1
  230. package/dist/esm/version.js +1 -1
  231. package/dist/esm/version.js.map +1 -1
  232. package/package.json +1 -1
  233. package/src/actions/getQuote.ts +3 -2
  234. package/src/actions/getRoutes.ts +2 -1
  235. package/src/actions/getStepTransaction.ts +7 -2
  236. package/src/actions/index.ts +8 -5
  237. package/src/index.ts +7 -0
  238. package/src/types/actions.ts +29 -0
  239. package/src/utils/isStep.ts +4 -1
  240. package/src/utils/toQueryString.ts +35 -0
  241. package/src/version.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  //#region src/version.ts
2
2
  const name = "@lifi/sdk";
3
- const version = "4.0.1";
3
+ const version = "4.2.0";
4
4
  //#endregion
5
5
  export { name, version };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk'\nexport const version = '4.0.1'\n"],"mappings":";AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
1
+ {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk'\nexport const version = '4.2.0'\n"],"mappings":";AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/sdk",
3
- "version": "4.0.1",
3
+ "version": "4.2.0",
4
4
  "description": "LI.FI SDK for Any-to-Any Cross-Chain-Swap",
5
5
  "homepage": "https://github.com/lifinance/sdk",
6
6
  "bugs": {
@@ -8,6 +8,7 @@ import type {
8
8
  } from '../types/actions.js'
9
9
  import type { SDKClient } from '../types/core.js'
10
10
  import { request } from '../utils/request.js'
11
+ import { toQueryString } from '../utils/toQueryString.js'
11
12
 
12
13
  /**
13
14
  * Get a quote for a token transfer
@@ -95,8 +96,8 @@ export async function getQuote(
95
96
 
96
97
  return await request<LiFiStep>(
97
98
  client.config,
98
- `${client.config.apiUrl}/${isFromAmountRequest ? 'quote' : 'quote/toAmount'}?${new URLSearchParams(
99
- params as unknown as Record<string, string>
99
+ `${client.config.apiUrl}/${isFromAmountRequest ? 'quote' : 'quote/toAmount'}?${toQueryString(
100
+ params as Record<string, unknown>
100
101
  )}`,
101
102
  {
102
103
  signal: options?.signal,
@@ -1,6 +1,7 @@
1
- import type { RequestOptions, RoutesRequest, RoutesResponse } from '@lifi/types'
1
+ import type { RequestOptions, RoutesResponse } from '@lifi/types'
2
2
  import { ValidationError } from '../errors/errors.js'
3
3
  import { SDKError } from '../errors/SDKError.js'
4
+ import type { RoutesRequest } from '../types/actions.js'
4
5
  import type { SDKClient } from '../types/core.js'
5
6
  import { isRoutesRequest } from '../utils/isRoutesRequest.js'
6
7
  import { request } from '../utils/request.js'
@@ -1,5 +1,6 @@
1
- import type { LiFiStep, RequestOptions, SignedLiFiStep } from '@lifi/types'
1
+ import type { LiFiStep, RequestOptions } from '@lifi/types'
2
2
  import { ChainId } from '@lifi/types'
3
+ import type { LiFiStepRequest } from '../types/actions.js'
3
4
  import type { SDKClient } from '../types/core.js'
4
5
  import { isStep } from '../utils/isStep.js'
5
6
  import { request } from '../utils/request.js'
@@ -14,7 +15,7 @@ import { request } from '../utils/request.js'
14
15
  */
15
16
  export const getStepTransaction = async (
16
17
  client: SDKClient,
17
- step: LiFiStep | SignedLiFiStep,
18
+ step: LiFiStepRequest,
18
19
  options?: RequestOptions
19
20
  ): Promise<LiFiStep> => {
20
21
  if (!isStep(step)) {
@@ -27,6 +28,7 @@ export const getStepTransaction = async (
27
28
  let requestUrl = `${config.apiUrl}/advanced/stepTransaction`
28
29
  const jitoBundle = config.routeOptions?.jitoBundle
29
30
  const svmSponsor = config.routeOptions?.svmSponsor
31
+ const svmPriorityFeeLevel = config.routeOptions?.svmPriorityFeeLevel
30
32
 
31
33
  if (step.action.fromChainId === ChainId.SOL) {
32
34
  const queryParams = new URLSearchParams()
@@ -36,6 +38,9 @@ export const getStepTransaction = async (
36
38
  if (svmSponsor) {
37
39
  queryParams.set('svmSponsor', svmSponsor)
38
40
  }
41
+ if (svmPriorityFeeLevel) {
42
+ queryParams.set('svmPriorityFeeLevel', svmPriorityFeeLevel)
43
+ }
39
44
  if (queryParams.size > 0) {
40
45
  requestUrl = `${requestUrl}?${queryParams}`
41
46
  }
@@ -16,9 +16,7 @@ import type {
16
16
  RelayStatusRequest,
17
17
  RelayStatusResponseData,
18
18
  RequestOptions,
19
- RoutesRequest,
20
19
  RoutesResponse,
21
- SignedLiFiStep,
22
20
  StatusResponse,
23
21
  Token,
24
22
  TokenAmount,
@@ -34,7 +32,9 @@ import type {
34
32
  } from '@lifi/types'
35
33
  import type {
36
34
  GetStatusRequestExtended,
35
+ LiFiStepRequest,
37
36
  QuoteRequestFromAmount,
37
+ RoutesRequest,
38
38
  } from '../types/actions.js'
39
39
  import type { SDKClient } from '../types/core.js'
40
40
  import { getChains } from './getChains.js'
@@ -152,7 +152,9 @@ export type Actions = {
152
152
  ) => Promise<LiFiStep>
153
153
 
154
154
  /**
155
- * Get a set of routes for a request that describes a transfer of tokens
155
+ * Get a set of routes for a request that describes a transfer of tokens.
156
+ * Optional limit-order fields (`toAmount`, `validUntil`, `partiallyFillable`)
157
+ * may be supplied and are resolved on the backend.
156
158
  * @param params - A description of the transfer
157
159
  * @param options - Request options
158
160
  * @returns The resulting routes that can be used to realize the described transfer
@@ -174,13 +176,14 @@ export type Actions = {
174
176
  ) => Promise<StatusResponse>
175
177
 
176
178
  /**
177
- * Get a step transaction
179
+ * Get a step transaction. The step's `action` may carry the optional
180
+ * limit-order fields, which are resolved on the backend.
178
181
  * @param params - The configuration of the requested step transaction
179
182
  * @param options - Request options
180
183
  * @returns Step transaction
181
184
  */
182
185
  getStepTransaction: (
183
- params: LiFiStep | SignedLiFiStep,
186
+ params: LiFiStepRequest,
184
187
  options?: RequestOptions
185
188
  ) => Promise<LiFiStep>
186
189
 
package/src/index.ts CHANGED
@@ -67,6 +67,13 @@ export {
67
67
  } from './errors/errors.js'
68
68
  export { HTTPError } from './errors/httpError.js'
69
69
  export { SDKError } from './errors/SDKError.js'
70
+ export type {
71
+ GetStatusRequestExtended,
72
+ LiFiStepRequest,
73
+ QuoteRequest,
74
+ QuoteRequestFromAmount,
75
+ QuoteRequestToAmount,
76
+ } from './types/actions.js'
70
77
  export type {
71
78
  AcceptExchangeRateUpdateHook,
72
79
  AcceptSlippageUpdateHook,
@@ -1,12 +1,41 @@
1
1
  import type {
2
+ Action,
2
3
  GetStatusRequest,
4
+ LiFiStep,
3
5
  QuoteRequest as QuoteRequestBase,
6
+ RoutesRequest as RoutesRequestBase,
7
+ SignedLiFiStep,
4
8
  } from '@lifi/types'
5
9
 
6
10
  export type GetStatusRequestExtended = GetStatusRequest & {
7
11
  fromAddress?: string
8
12
  }
9
13
 
14
+ /**
15
+ * Optional limit-order fields. Supplying them opts a request into limit-order
16
+ * handling; resolution happens on the backend.
17
+ */
18
+ type OrderFields = {
19
+ toAmount?: string
20
+ validUntil?: number
21
+ partiallyFillable?: boolean
22
+ }
23
+
24
+ export type RoutesRequest = Omit<RoutesRequestBase, 'options'> &
25
+ OrderFields & {
26
+ options?: RoutesRequestBase['options'] & {
27
+ /** (default: false) Whether to request private routes */
28
+ private?: boolean
29
+ }
30
+ }
31
+
32
+ /**
33
+ * A step request that may carry the optional limit-order `action` fields.
34
+ */
35
+ export type LiFiStepRequest = (LiFiStep | SignedLiFiStep) & {
36
+ action: Action & OrderFields
37
+ }
38
+
10
39
  export type QuoteRequestFromAmount = QuoteRequestBase
11
40
 
12
41
  export type QuoteRequestToAmount = Omit<QuoteRequestBase, 'fromAmount'> & {
@@ -15,6 +15,9 @@ const isAction = (action: Action): action is Action => {
15
15
  }
16
16
 
17
17
  const isEstimate = (estimate: Estimate): estimate is Estimate => {
18
+ if (!estimate) {
19
+ return false
20
+ }
18
21
  const { fromAmount, toAmount, toAmountMin, approvalAddress } = estimate
19
22
 
20
23
  return (
@@ -36,6 +39,6 @@ export const isStep = (step: LiFiStep): step is LiFiStep => {
36
39
  ['swap', 'cross', 'lifi'].includes(type) &&
37
40
  typeof tool === 'string' &&
38
41
  isAction(action) &&
39
- isEstimate(estimate)
42
+ (!estimate || isEstimate(estimate))
40
43
  )
41
44
  }
@@ -0,0 +1,35 @@
1
+ type QueryPrimitive = string | number | boolean | bigint
2
+
3
+ const isPrimitive = (value: unknown): value is QueryPrimitive =>
4
+ typeof value === 'string' ||
5
+ typeof value === 'number' ||
6
+ typeof value === 'boolean' ||
7
+ typeof value === 'bigint'
8
+
9
+ // Arrays of objects use qs indices notation (`key[0][subKey]=value`) to match
10
+ // the backend's `qs.parse(str, { comma: true })`; only values are encoded.
11
+ const serialize = (key: string, value: unknown): string[] => {
12
+ if (value === undefined || value === null) {
13
+ return []
14
+ }
15
+ if (isPrimitive(value)) {
16
+ return [`${key}=${encodeURIComponent(String(value))}`]
17
+ }
18
+ if (Array.isArray(value)) {
19
+ // Scalar arrays stay comma-joined (backend splits on `comma: true`).
20
+ if (value.every(isPrimitive)) {
21
+ return [`${key}=${encodeURIComponent(value.join(','))}`]
22
+ }
23
+ return value.flatMap((item, index) => serialize(`${key}[${index}]`, item))
24
+ }
25
+ return Object.entries(value as Record<string, unknown>).flatMap(
26
+ ([subKey, subValue]) => serialize(`${key}[${subKey}]`, subValue)
27
+ )
28
+ }
29
+
30
+ // Encode params into a query string (no leading `?`). Drop-in for
31
+ // `URLSearchParams` that handles nested array/object params; skips null/undefined.
32
+ export const toQueryString = (params: Record<string, unknown>): string =>
33
+ Object.entries(params)
34
+ .flatMap(([key, value]) => serialize(key, value))
35
+ .join('&')
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/sdk'
2
- export const version = '4.0.1'
2
+ export const version = '4.2.0'