@luxexchange/api 1.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 (336) hide show
  1. package/.depcheckrc +17 -0
  2. package/.eslintrc.js +30 -0
  3. package/README.md +5 -0
  4. package/package.json +74 -0
  5. package/project.json +94 -0
  6. package/scripts/fixGraphQLApiTypes.mts +91 -0
  7. package/scripts/modifyTradingApiTypes.mts +232 -0
  8. package/src/client.ts +66 -0
  9. package/src/clients/auctions/createAuctionServiceClient.ts +44 -0
  10. package/src/clients/base/SharedQueryClient.ts +25 -0
  11. package/src/clients/base/auth.ts +43 -0
  12. package/src/clients/base/createFetchClient.ts +133 -0
  13. package/src/clients/base/errors.ts +32 -0
  14. package/src/clients/base/types.ts +26 -0
  15. package/src/clients/base/urls.test.ts +297 -0
  16. package/src/clients/base/urls.ts +85 -0
  17. package/src/clients/base/utils.test.ts +131 -0
  18. package/src/clients/base/utils.ts +54 -0
  19. package/src/clients/blockaid/createBlockaidApiClient.ts +185 -0
  20. package/src/clients/blockaid/types.ts +495 -0
  21. package/src/clients/content/types.ts +22 -0
  22. package/src/clients/conversionTracking/api-ConversionProxyService_connectquery.ts +20 -0
  23. package/src/clients/conversionTracking/api_connect.ts +24 -0
  24. package/src/clients/conversionTracking/api_pb.ts +184 -0
  25. package/src/clients/conversionTracking/index.ts +4 -0
  26. package/src/clients/data/createDataServiceApiClient.ts +101 -0
  27. package/src/clients/dataApi/createDataApiServiceClient.ts +29 -0
  28. package/src/clients/dataApi/getGetPortfolioQueryOptions.test.ts +122 -0
  29. package/src/clients/dataApi/getGetPortfolioQueryOptions.ts +76 -0
  30. package/src/clients/embeddedWallet/createEmbeddedWalletApiClient.ts +325 -0
  31. package/src/clients/for/createForApiClient.ts +187 -0
  32. package/src/clients/for/types.ts +39 -0
  33. package/src/clients/for/utils.ts +13 -0
  34. package/src/clients/graphql/__generated__/operations.ts +605 -0
  35. package/src/clients/graphql/__generated__/react-hooks.ts +4245 -0
  36. package/src/clients/graphql/__generated__/resolvers.ts +1469 -0
  37. package/src/clients/graphql/__generated__/schema-types.ts +2099 -0
  38. package/src/clients/graphql/codegen.config.ts +50 -0
  39. package/src/clients/graphql/fragments.ts +96 -0
  40. package/src/clients/graphql/generated.ts +5 -0
  41. package/src/clients/graphql/queries.graphql +1028 -0
  42. package/src/clients/graphql/queries.ts +19 -0
  43. package/src/clients/graphql/schema.graphql +1585 -0
  44. package/src/clients/graphql/types.ts +9 -0
  45. package/src/clients/graphql/utils.ts +21 -0
  46. package/src/clients/graphql/web/LuxPrices.graphql +18 -0
  47. package/src/clients/graphql/web/RecentTokenTransfers.graphql +93 -0
  48. package/src/clients/graphql/web/SimpleToken.graphql +12 -0
  49. package/src/clients/graphql/web/TokenSpotPrice.graphql +19 -0
  50. package/src/clients/graphql/web/activity.graphql +272 -0
  51. package/src/clients/graphql/web/allV3Ticks.graphql +11 -0
  52. package/src/clients/graphql/web/allV4Ticks.graphql +11 -0
  53. package/src/clients/graphql/web/feeTierDistribution.graphql +7 -0
  54. package/src/clients/graphql/web/landing.graphql +38 -0
  55. package/src/clients/graphql/web/latestSubgraphBlock.graphql +3 -0
  56. package/src/clients/graphql/web/nft/CollectionSearch.graphql +34 -0
  57. package/src/clients/graphql/web/nft/NftBalance.graphql +109 -0
  58. package/src/clients/graphql/web/pool.graphql +199 -0
  59. package/src/clients/graphql/web/poolTransactions.graphql +84 -0
  60. package/src/clients/graphql/web/portfolios.graphql +68 -0
  61. package/src/clients/graphql/web/token.graphql +97 -0
  62. package/src/clients/graphql/web/tokenCharts.graphql +85 -0
  63. package/src/clients/graphql/web/tokenTransactions.graphql +25 -0
  64. package/src/clients/graphql/web/topPools.graphql +78 -0
  65. package/src/clients/graphql/web/transactions.graphql +56 -0
  66. package/src/clients/jupiter/createJupiterApiClient.ts +42 -0
  67. package/src/clients/jupiter/types.ts +92 -0
  68. package/src/clients/jupiter/utils.ts +27 -0
  69. package/src/clients/liquidity/createAuctionMutationClient.ts +41 -0
  70. package/src/clients/liquidity/createLiquidityServiceClient.ts +56 -0
  71. package/src/clients/lux/createLuxApiClient.ts +100 -0
  72. package/src/clients/notifications/createNotificationsApiClient.ts +72 -0
  73. package/src/clients/notifications/types.ts +102 -0
  74. package/src/clients/trading/__generated__/core/ApiError.ts +25 -0
  75. package/src/clients/trading/__generated__/core/ApiRequestOptions.ts +17 -0
  76. package/src/clients/trading/__generated__/core/ApiResult.ts +11 -0
  77. package/src/clients/trading/__generated__/core/CancelablePromise.ts +131 -0
  78. package/src/clients/trading/__generated__/core/OpenAPI.ts +32 -0
  79. package/src/clients/trading/__generated__/core/request.ts +322 -0
  80. package/src/clients/trading/__generated__/index.ts +221 -0
  81. package/src/clients/trading/__generated__/models/Address.ts +5 -0
  82. package/src/clients/trading/__generated__/models/AggregatedOutput.ts +20 -0
  83. package/src/clients/trading/__generated__/models/ApprovalRequest.ts +25 -0
  84. package/src/clients/trading/__generated__/models/ApprovalResponse.ts +18 -0
  85. package/src/clients/trading/__generated__/models/AutoSlippage.ts +14 -0
  86. package/src/clients/trading/__generated__/models/BridgeQuote.ts +55 -0
  87. package/src/clients/trading/__generated__/models/ChainDelegationMap.ts +9 -0
  88. package/src/clients/trading/__generated__/models/ChainId.ts +29 -0
  89. package/src/clients/trading/__generated__/models/ChainedQuote.ts +63 -0
  90. package/src/clients/trading/__generated__/models/CheckApprovalLPRequest.ts +35 -0
  91. package/src/clients/trading/__generated__/models/CheckApprovalLPResponse.ts +29 -0
  92. package/src/clients/trading/__generated__/models/ClaimLPFeesRequest.ts +20 -0
  93. package/src/clients/trading/__generated__/models/ClaimLPFeesResponse.ts +13 -0
  94. package/src/clients/trading/__generated__/models/ClaimLPRewardsRequest.ts +19 -0
  95. package/src/clients/trading/__generated__/models/ClaimLPRewardsResponse.ts +13 -0
  96. package/src/clients/trading/__generated__/models/ClassicGasUseEstimateUSD.ts +8 -0
  97. package/src/clients/trading/__generated__/models/ClassicInput.ts +11 -0
  98. package/src/clients/trading/__generated__/models/ClassicOutput.ts +13 -0
  99. package/src/clients/trading/__generated__/models/ClassicQuote.ts +69 -0
  100. package/src/clients/trading/__generated__/models/ClientContext.ts +18 -0
  101. package/src/clients/trading/__generated__/models/CosignerData.ts +21 -0
  102. package/src/clients/trading/__generated__/models/CreateLPPositionRequest.ts +40 -0
  103. package/src/clients/trading/__generated__/models/CreateLPPositionResponse.ts +21 -0
  104. package/src/clients/trading/__generated__/models/CreatePlanRequest.ts +23 -0
  105. package/src/clients/trading/__generated__/models/CreateSendRequest.ts +22 -0
  106. package/src/clients/trading/__generated__/models/CreateSendResponse.ts +18 -0
  107. package/src/clients/trading/__generated__/models/CreateSwap5792Request.ts +17 -0
  108. package/src/clients/trading/__generated__/models/CreateSwap5792Response.ts +17 -0
  109. package/src/clients/trading/__generated__/models/CreateSwap7702Request.ts +21 -0
  110. package/src/clients/trading/__generated__/models/CreateSwap7702Response.ts +13 -0
  111. package/src/clients/trading/__generated__/models/CreateSwapRequest.ts +42 -0
  112. package/src/clients/trading/__generated__/models/CreateSwapResponse.ts +16 -0
  113. package/src/clients/trading/__generated__/models/Curve.ts +9 -0
  114. package/src/clients/trading/__generated__/models/DEXOrder.ts +35 -0
  115. package/src/clients/trading/__generated__/models/DecreaseLPPositionRequest.ts +33 -0
  116. package/src/clients/trading/__generated__/models/DecreaseLPPositionResponse.ts +19 -0
  117. package/src/clients/trading/__generated__/models/DelegationDetails.ts +19 -0
  118. package/src/clients/trading/__generated__/models/Distributor.ts +10 -0
  119. package/src/clients/trading/__generated__/models/DutchInput.ts +13 -0
  120. package/src/clients/trading/__generated__/models/DutchInputV3.ts +15 -0
  121. package/src/clients/trading/__generated__/models/DutchOrderInfo.ts +41 -0
  122. package/src/clients/trading/__generated__/models/DutchOrderInfoV2.ts +27 -0
  123. package/src/clients/trading/__generated__/models/DutchOrderInfoV3.ts +28 -0
  124. package/src/clients/trading/__generated__/models/DutchOutput.ts +15 -0
  125. package/src/clients/trading/__generated__/models/DutchOutputV3.ts +18 -0
  126. package/src/clients/trading/__generated__/models/DutchQuote.ts +27 -0
  127. package/src/clients/trading/__generated__/models/DutchQuoteV2.ts +28 -0
  128. package/src/clients/trading/__generated__/models/DutchQuoteV3.ts +30 -0
  129. package/src/clients/trading/__generated__/models/Encode7702ResponseBody.ts +11 -0
  130. package/src/clients/trading/__generated__/models/Err400.ts +9 -0
  131. package/src/clients/trading/__generated__/models/Err401.ts +9 -0
  132. package/src/clients/trading/__generated__/models/Err404.ts +17 -0
  133. package/src/clients/trading/__generated__/models/Err422.ts +9 -0
  134. package/src/clients/trading/__generated__/models/Err429.ts +9 -0
  135. package/src/clients/trading/__generated__/models/Err500.ts +9 -0
  136. package/src/clients/trading/__generated__/models/Err504.ts +9 -0
  137. package/src/clients/trading/__generated__/models/GasStrategy.ts +46 -0
  138. package/src/clients/trading/__generated__/models/GetOrdersResponse.ts +12 -0
  139. package/src/clients/trading/__generated__/models/GetSwappableTokensResponse.ts +29 -0
  140. package/src/clients/trading/__generated__/models/GetSwapsResponse.ts +18 -0
  141. package/src/clients/trading/__generated__/models/HooksOptions.ts +12 -0
  142. package/src/clients/trading/__generated__/models/IncreaseLPPositionRequest.ts +39 -0
  143. package/src/clients/trading/__generated__/models/IncreaseLPPositionResponse.ts +21 -0
  144. package/src/clients/trading/__generated__/models/IndependentToken.ts +8 -0
  145. package/src/clients/trading/__generated__/models/IndicativeQuoteRequest.ts +18 -0
  146. package/src/clients/trading/__generated__/models/IndicativeQuoteResponse.ts +14 -0
  147. package/src/clients/trading/__generated__/models/IndicativeQuoteToken.ts +13 -0
  148. package/src/clients/trading/__generated__/models/LimitOrderQuoteRequest.ts +22 -0
  149. package/src/clients/trading/__generated__/models/LimitOrderQuoteResponse.ts +19 -0
  150. package/src/clients/trading/__generated__/models/MigrateLPPositionRequest.ts +41 -0
  151. package/src/clients/trading/__generated__/models/MigrateLPPositionResponse.ts +13 -0
  152. package/src/clients/trading/__generated__/models/NullablePermit.ts +13 -0
  153. package/src/clients/trading/__generated__/models/OrderIds.ts +5 -0
  154. package/src/clients/trading/__generated__/models/OrderInput.ts +13 -0
  155. package/src/clients/trading/__generated__/models/OrderOutput.ts +16 -0
  156. package/src/clients/trading/__generated__/models/OrderRequest.ts +17 -0
  157. package/src/clients/trading/__generated__/models/OrderResponse.ts +13 -0
  158. package/src/clients/trading/__generated__/models/OrderStatus.ts +23 -0
  159. package/src/clients/trading/__generated__/models/OrderType.ts +11 -0
  160. package/src/clients/trading/__generated__/models/OrderTypeQuery.ts +12 -0
  161. package/src/clients/trading/__generated__/models/Permit.ts +13 -0
  162. package/src/clients/trading/__generated__/models/PermitAmount.ts +11 -0
  163. package/src/clients/trading/__generated__/models/PlanResponse.ts +75 -0
  164. package/src/clients/trading/__generated__/models/PlanStatus.ts +14 -0
  165. package/src/clients/trading/__generated__/models/PlanStep.ts +59 -0
  166. package/src/clients/trading/__generated__/models/PlanStepMethod.ts +12 -0
  167. package/src/clients/trading/__generated__/models/PlanStepPayloadType.ts +12 -0
  168. package/src/clients/trading/__generated__/models/PlanStepProof.ts +20 -0
  169. package/src/clients/trading/__generated__/models/PlanStepStatus.ts +14 -0
  170. package/src/clients/trading/__generated__/models/PlanStepType.ts +23 -0
  171. package/src/clients/trading/__generated__/models/Pool.ts +15 -0
  172. package/src/clients/trading/__generated__/models/PoolInfoRequest.ts +20 -0
  173. package/src/clients/trading/__generated__/models/PoolInfoResponse.ts +16 -0
  174. package/src/clients/trading/__generated__/models/PoolInformation.ts +44 -0
  175. package/src/clients/trading/__generated__/models/PoolParameters.ts +19 -0
  176. package/src/clients/trading/__generated__/models/PoolReferenceByProtocol.ts +12 -0
  177. package/src/clients/trading/__generated__/models/Position.ts +11 -0
  178. package/src/clients/trading/__generated__/models/PriorityInput.ts +12 -0
  179. package/src/clients/trading/__generated__/models/PriorityOrderInfo.ts +29 -0
  180. package/src/clients/trading/__generated__/models/PriorityOutput.ts +17 -0
  181. package/src/clients/trading/__generated__/models/PriorityQuote.ts +31 -0
  182. package/src/clients/trading/__generated__/models/ProtocolItems.ts +15 -0
  183. package/src/clients/trading/__generated__/models/Protocols.ts +9 -0
  184. package/src/clients/trading/__generated__/models/Quote.ts +14 -0
  185. package/src/clients/trading/__generated__/models/QuoteRequest.ts +41 -0
  186. package/src/clients/trading/__generated__/models/QuoteResponse.ts +19 -0
  187. package/src/clients/trading/__generated__/models/RequestId.ts +8 -0
  188. package/src/clients/trading/__generated__/models/Routing.ts +20 -0
  189. package/src/clients/trading/__generated__/models/RoutingPreference.ts +16 -0
  190. package/src/clients/trading/__generated__/models/SafetyLevel.ts +10 -0
  191. package/src/clients/trading/__generated__/models/ScopeData.ts +28 -0
  192. package/src/clients/trading/__generated__/models/SettledAmount.ts +14 -0
  193. package/src/clients/trading/__generated__/models/SortKey.ts +7 -0
  194. package/src/clients/trading/__generated__/models/SpreadOptimization.ts +11 -0
  195. package/src/clients/trading/__generated__/models/StepUpdate.ts +25 -0
  196. package/src/clients/trading/__generated__/models/SwapSafetyMode.ts +10 -0
  197. package/src/clients/trading/__generated__/models/SwapStatus.ts +11 -0
  198. package/src/clients/trading/__generated__/models/TokenInRoute.ts +20 -0
  199. package/src/clients/trading/__generated__/models/TokenProject.ts +13 -0
  200. package/src/clients/trading/__generated__/models/TokenProjectLogo.ts +8 -0
  201. package/src/clients/trading/__generated__/models/TradeType.ts +11 -0
  202. package/src/clients/trading/__generated__/models/TransactionFailureReason.ts +11 -0
  203. package/src/clients/trading/__generated__/models/TransactionHash.ts +8 -0
  204. package/src/clients/trading/__generated__/models/TransactionRequest.ts +29 -0
  205. package/src/clients/trading/__generated__/models/TransactionRequest5792.ts +25 -0
  206. package/src/clients/trading/__generated__/models/TruncatedPlanStep.ts +21 -0
  207. package/src/clients/trading/__generated__/models/UniversalRouterVersion.ts +8 -0
  208. package/src/clients/trading/__generated__/models/UpdatePlanRequest.ts +12 -0
  209. package/src/clients/trading/__generated__/models/Urgency.ts +12 -0
  210. package/src/clients/trading/__generated__/models/V2PoolInRoute.ts +19 -0
  211. package/src/clients/trading/__generated__/models/V2Reserve.ts +16 -0
  212. package/src/clients/trading/__generated__/models/V3PoolInRoute.ts +24 -0
  213. package/src/clients/trading/__generated__/models/V4PoolInRoute.ts +30 -0
  214. package/src/clients/trading/__generated__/models/WalletCheckDelegationRequestBody.ts +17 -0
  215. package/src/clients/trading/__generated__/models/WalletCheckDelegationResponseBody.ts +14 -0
  216. package/src/clients/trading/__generated__/models/WalletEncode7702RequestBody.ts +21 -0
  217. package/src/clients/trading/__generated__/models/WalletExecutionContext.ts +17 -0
  218. package/src/clients/trading/__generated__/models/WalletInfo.ts +22 -0
  219. package/src/clients/trading/__generated__/models/WalletProperties.ts +12 -0
  220. package/src/clients/trading/__generated__/models/WrapUnwrapQuote.ts +31 -0
  221. package/src/clients/trading/__generated__/models/additionalValidationContract.ts +9 -0
  222. package/src/clients/trading/__generated__/models/additionalValidationData.ts +9 -0
  223. package/src/clients/trading/__generated__/models/bps.ts +8 -0
  224. package/src/clients/trading/__generated__/models/bpsFee.ts +8 -0
  225. package/src/clients/trading/__generated__/models/bridgeTokenInChainIdParam.ts +6 -0
  226. package/src/clients/trading/__generated__/models/chainIdParam.ts +6 -0
  227. package/src/clients/trading/__generated__/models/claimerWalletAddress.ts +8 -0
  228. package/src/clients/trading/__generated__/models/contractAddress.ts +8 -0
  229. package/src/clients/trading/__generated__/models/cosignerAddress.ts +8 -0
  230. package/src/clients/trading/__generated__/models/cursorParam.ts +5 -0
  231. package/src/clients/trading/__generated__/models/deadline.ts +8 -0
  232. package/src/clients/trading/__generated__/models/encodedOrder.ts +8 -0
  233. package/src/clients/trading/__generated__/models/endAmount.ts +8 -0
  234. package/src/clients/trading/__generated__/models/erc20EthEnabledHeader.ts +8 -0
  235. package/src/clients/trading/__generated__/models/fillerParam.ts +9 -0
  236. package/src/clients/trading/__generated__/models/gasFee.ts +8 -0
  237. package/src/clients/trading/__generated__/models/gasFeeInCurrency.ts +8 -0
  238. package/src/clients/trading/__generated__/models/gasFeeUSD.ts +8 -0
  239. package/src/clients/trading/__generated__/models/gasLimit.ts +8 -0
  240. package/src/clients/trading/__generated__/models/gasPrice.ts +8 -0
  241. package/src/clients/trading/__generated__/models/generatePermitAsTransaction.ts +8 -0
  242. package/src/clients/trading/__generated__/models/includeGasInfo.ts +8 -0
  243. package/src/clients/trading/__generated__/models/inputToken.ts +8 -0
  244. package/src/clients/trading/__generated__/models/isSpam.ts +8 -0
  245. package/src/clients/trading/__generated__/models/limitParam.ts +5 -0
  246. package/src/clients/trading/__generated__/models/liquidity.ts +8 -0
  247. package/src/clients/trading/__generated__/models/lpPoolFee.ts +8 -0
  248. package/src/clients/trading/__generated__/models/lpTickCurrent.ts +8 -0
  249. package/src/clients/trading/__generated__/models/maxFeePerGas.ts +8 -0
  250. package/src/clients/trading/__generated__/models/maxPriorityFeePerGas.ts +8 -0
  251. package/src/clients/trading/__generated__/models/minAmount.ts +8 -0
  252. package/src/clients/trading/__generated__/models/nonce.ts +8 -0
  253. package/src/clients/trading/__generated__/models/orderId.ts +8 -0
  254. package/src/clients/trading/__generated__/models/orderIdParam.ts +6 -0
  255. package/src/clients/trading/__generated__/models/orderIdsParam.ts +9 -0
  256. package/src/clients/trading/__generated__/models/orderStatusParam.ts +9 -0
  257. package/src/clients/trading/__generated__/models/orderTypeParam.ts +9 -0
  258. package/src/clients/trading/__generated__/models/outputToken.ts +8 -0
  259. package/src/clients/trading/__generated__/models/poolFee.ts +8 -0
  260. package/src/clients/trading/__generated__/models/portionAmount.ts +8 -0
  261. package/src/clients/trading/__generated__/models/portionAmountReceiverAddress.ts +8 -0
  262. package/src/clients/trading/__generated__/models/portionBips.ts +8 -0
  263. package/src/clients/trading/__generated__/models/quoteId.ts +8 -0
  264. package/src/clients/trading/__generated__/models/receiverWalletAddress.ts +8 -0
  265. package/src/clients/trading/__generated__/models/senderWalletAddress.ts +8 -0
  266. package/src/clients/trading/__generated__/models/slippageTolerance.ts +14 -0
  267. package/src/clients/trading/__generated__/models/sortKeyParam.ts +9 -0
  268. package/src/clients/trading/__generated__/models/sortParam.ts +8 -0
  269. package/src/clients/trading/__generated__/models/sqrtRatioX96.ts +8 -0
  270. package/src/clients/trading/__generated__/models/startAmount.ts +8 -0
  271. package/src/clients/trading/__generated__/models/swapperParam.ts +9 -0
  272. package/src/clients/trading/__generated__/models/tickCurrent.ts +8 -0
  273. package/src/clients/trading/__generated__/models/tickSpacing.ts +8 -0
  274. package/src/clients/trading/__generated__/models/tokenAmount.ts +8 -0
  275. package/src/clients/trading/__generated__/models/tokenInParam.ts +6 -0
  276. package/src/clients/trading/__generated__/models/tokenSymbol.ts +8 -0
  277. package/src/clients/trading/__generated__/models/transactionHashesParam.ts +9 -0
  278. package/src/clients/trading/__generated__/models/universalRouterVersionHeader.ts +9 -0
  279. package/src/clients/trading/__generated__/services/ApprovalService.ts +39 -0
  280. package/src/clients/trading/__generated__/services/DefaultService.ts +46 -0
  281. package/src/clients/trading/__generated__/services/IndicativeQuoteService.ts +39 -0
  282. package/src/clients/trading/__generated__/services/LimitOrderQuoteService.ts +37 -0
  283. package/src/clients/trading/__generated__/services/LiquidityService.ts +239 -0
  284. package/src/clients/trading/__generated__/services/OrderService.ts +131 -0
  285. package/src/clients/trading/__generated__/services/PlanService.ts +76 -0
  286. package/src/clients/trading/__generated__/services/QuoteService.ts +58 -0
  287. package/src/clients/trading/__generated__/services/SendService.ts +37 -0
  288. package/src/clients/trading/__generated__/services/SwapService.ts +161 -0
  289. package/src/clients/trading/__generated__/services/SwappableTokensService.ts +42 -0
  290. package/src/clients/trading/__generated__/services/WalletCheckDelegationService.ts +37 -0
  291. package/src/clients/trading/__generated__/services/WalletEncode7702Service.ts +37 -0
  292. package/src/clients/trading/api.json +1 -0
  293. package/src/clients/trading/createTradingApiClient.ts +328 -0
  294. package/src/clients/trading/tradeTypes.ts +51 -0
  295. package/src/clients/trading/types.ts +72 -0
  296. package/src/clients/unitags/createUnitagsApiClient.test.ts +438 -0
  297. package/src/clients/unitags/createUnitagsApiClient.ts +214 -0
  298. package/src/clients/unitags/types.ts +122 -0
  299. package/src/components/ApiInit.test.tsx +364 -0
  300. package/src/components/ApiInit.tsx +71 -0
  301. package/src/connectRpc/base.ts +33 -0
  302. package/src/connectRpc/utils.ts +136 -0
  303. package/src/getEntryGatewayUrl.ts +46 -0
  304. package/src/getWebSocketUrl.ts +28 -0
  305. package/src/global.d.ts +2 -0
  306. package/src/hooks/index.ts +6 -0
  307. package/src/hooks/shared/types.ts +10 -0
  308. package/src/hooks/shared/useQueryWithImmediateGarbageCollection.ts +90 -0
  309. package/src/hooks/use-token-list.ts +52 -0
  310. package/src/hooks/use-token-price.ts +82 -0
  311. package/src/hooks/useIsSessionInitialized.ts +17 -0
  312. package/src/index.ts +318 -0
  313. package/src/provideDeviceIdService.ts +25 -0
  314. package/src/provideLuxIdentifierService.ts +25 -0
  315. package/src/provideSessionService.native.ts +46 -0
  316. package/src/provideSessionService.ts +13 -0
  317. package/src/provideSessionService.web.ts +87 -0
  318. package/src/provideSessionStorage.ts +21 -0
  319. package/src/session/createSessionTransport.test.ts +79 -0
  320. package/src/session/createSessionTransport.ts +107 -0
  321. package/src/session/createWithSessionRetry.ts +33 -0
  322. package/src/session/index.ts +12 -0
  323. package/src/storage/createExtensionStorageDriver.ts +29 -0
  324. package/src/storage/createNativeStorageDriver.ts +19 -0
  325. package/src/storage/createWebStorageDriver.ts +17 -0
  326. package/src/storage/getStorageDriver.native.ts +6 -0
  327. package/src/storage/getStorageDriver.ts +8 -0
  328. package/src/storage/getStorageDriver.web.ts +11 -0
  329. package/src/storage/types.ts +9 -0
  330. package/src/transport.ts +85 -0
  331. package/stubs/privy-service-connect.d.ts +3 -0
  332. package/stubs/privy-service-pb.d.ts +60 -0
  333. package/tsconfig.json +37 -0
  334. package/tsconfig.lint.json +8 -0
  335. package/tsconfig.spec.json +8 -0
  336. package/vitest.config.ts +14 -0
@@ -0,0 +1,107 @@
1
+ import { type ConnectTransportOptions, createConnectTransport } from '@connectrpc/connect-web'
2
+
3
+ /**
4
+ * Options for creating a session transport.
5
+ * All configuration is explicit - no platform detection.
6
+ */
7
+ export interface CreateSessionTransportOptions {
8
+ /** Entry gateway URL */
9
+ baseUrl: string
10
+
11
+ /** Static headers to include in all requests (e.g., x-request-source, x-lux-timezone) */
12
+ headers?: Record<string, string>
13
+
14
+ /** Cookie header for SSR forwarding */
15
+ cookie?: string
16
+
17
+ /** Use browser credentials for automatic cookie handling (for web with cookies) */
18
+ credentials?: 'include' | 'omit' | 'same-origin'
19
+
20
+ /** Dynamic session ID getter (for mobile/extension that use headers instead of cookies) */
21
+ getSessionId?: () => Promise<string | null>
22
+
23
+ /** Dynamic device ID getter (for mobile/extension that use headers instead of cookies) */
24
+ getDeviceId?: () => Promise<string | null>
25
+
26
+ /** Additional ConnectRPC transport options */
27
+ transportOptions?: Partial<ConnectTransportOptions>
28
+ }
29
+
30
+ /**
31
+ * Creates a ConnectRPC transport with explicit configuration.
32
+ *
33
+ * This is a pure factory function with no platform detection.
34
+ * The caller (app-level provider) is responsible for providing
35
+ * the correct configuration for their platform/context.
36
+ *
37
+ * @example
38
+ * // Web browser - uses cookies automatically
39
+ * const transport = createSessionTransport({
40
+ * baseUrl: entryGatewayUrl,
41
+ * credentials: 'include',
42
+ * headers: {
43
+ * 'x-request-source': 'lux-web',
44
+ * 'x-lux-timezone': Intl.DateTimeFormat().resolvedOptions().timeZone,
45
+ * },
46
+ * })
47
+ *
48
+ * @example
49
+ * // SSR - forwards cookies from incoming request
50
+ * const transport = createSessionTransport({
51
+ * baseUrl: config.entryGatewayUrl,
52
+ * cookie: request.headers.get('Cookie'),
53
+ * headers: {
54
+ * 'x-request-source': 'lux-web',
55
+ * 'x-lux-timezone': timezone,
56
+ * },
57
+ * })
58
+ *
59
+ * @example
60
+ * // Mobile - uses headers for session/device IDs
61
+ * const transport = createSessionTransport({
62
+ * baseUrl: entryGatewayUrl,
63
+ * headers: { 'x-request-source': 'lux-mobile' },
64
+ * getSessionId: () => sessionStorage.get().then(s => s?.sessionId ?? null),
65
+ * getDeviceId: () => deviceIdService.getDeviceId(),
66
+ * })
67
+ */
68
+ export function createSessionTransport(
69
+ options: CreateSessionTransportOptions,
70
+ ): ReturnType<typeof createConnectTransport> {
71
+ const { baseUrl, headers, cookie, credentials, getSessionId, getDeviceId, transportOptions } = options
72
+
73
+ return createConnectTransport({
74
+ baseUrl,
75
+ credentials,
76
+ interceptors: [
77
+ (next) => async (request) => {
78
+ if (headers) {
79
+ for (const [key, value] of Object.entries(headers)) {
80
+ request.header.set(key, value)
81
+ }
82
+ }
83
+
84
+ if (cookie) {
85
+ request.header.set('Cookie', cookie)
86
+ }
87
+
88
+ if (getSessionId) {
89
+ const sessionId = await getSessionId()
90
+ if (sessionId) {
91
+ request.header.set('X-Session-ID', sessionId)
92
+ }
93
+ }
94
+
95
+ if (getDeviceId) {
96
+ const deviceId = await getDeviceId()
97
+ if (deviceId) {
98
+ request.header.set('X-Device-ID', deviceId)
99
+ }
100
+ }
101
+
102
+ return next(request)
103
+ },
104
+ ],
105
+ ...transportOptions,
106
+ })
107
+ }
@@ -0,0 +1,33 @@
1
+ import { is401Error } from '@luxexchange/api'
2
+
3
+ /** Creates a function that will attempt to reinitialize the app session and retry the input function once, if the first invocation of the function fails. */
4
+ export function createWithSessionRetry(ctx: {
5
+ reinitializeSession: () => Promise<void>
6
+ onReinitializationFailed?: () => void
7
+ }) {
8
+ return async function withSessionRetry<T>(fn: () => Promise<T>): Promise<T> {
9
+ // Attempt 1
10
+ try {
11
+ return await fn()
12
+ } catch (error) {
13
+ // After first 401, reinitialize session and do not throw
14
+ if (is401Error(error)) {
15
+ await ctx.reinitializeSession()
16
+ } else {
17
+ throw error
18
+ }
19
+ }
20
+
21
+ // Attempt 2
22
+ try {
23
+ return await fn()
24
+ } catch (errorAfterReinitialization) {
25
+ if (is401Error(errorAfterReinitialization)) {
26
+ // Handle any side effects of reinitialization failure
27
+ ctx.onReinitializationFailed?.()
28
+ }
29
+ // Always throw error after reinitialization failure
30
+ throw errorAfterReinitialization
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,12 @@
1
+ /* eslint-disable check-file/no-index */
2
+ /**
3
+ * Session Transport
4
+ *
5
+ * Pure factory functions for creating session-aware transports.
6
+ * These have no platform detection - the caller provides all configuration.
7
+ */
8
+
9
+ export {
10
+ type CreateSessionTransportOptions,
11
+ createSessionTransport,
12
+ } from '@luxexchange/api/src/session/createSessionTransport'
@@ -0,0 +1,29 @@
1
+ import type { StorageDriver } from '@luxfi/api/src/storage/types'
2
+ import { getChromeWithThrow } from '@luxfi/utilities/src/chrome/chrome'
3
+
4
+ export function createExtensionStorageDriver(): StorageDriver {
5
+ return {
6
+ async get(key: string): Promise<string | null> {
7
+ const chrome = getChromeWithThrow()
8
+ const result = await chrome.storage.local.get(key)
9
+ const value = result[key]
10
+ if (value === undefined || value === null) {
11
+ return null
12
+ }
13
+ if (typeof value !== 'string') {
14
+ throw new Error(`[StorageDriver.web.ts] Storage driver currently expects string values, got ${typeof value}`)
15
+ }
16
+ return value
17
+ },
18
+
19
+ async set(key: string, value: string): Promise<void> {
20
+ const chrome = getChromeWithThrow()
21
+ await chrome.storage.local.set({ [key]: value })
22
+ },
23
+
24
+ async remove(key: string): Promise<void> {
25
+ const chrome = getChromeWithThrow()
26
+ await chrome.storage.local.remove(key)
27
+ },
28
+ }
29
+ }
@@ -0,0 +1,19 @@
1
+ import { StorageDriver } from '@luxfi/api/src/storage/types'
2
+ import * as SecureStore from 'expo-secure-store'
3
+
4
+ export function createNativeStorageDriver(): StorageDriver {
5
+ return {
6
+ async get(key: string): Promise<string | null> {
7
+ const value = await SecureStore.getItemAsync(key)
8
+ return value ?? null
9
+ },
10
+
11
+ async set(key: string, value: string): Promise<void> {
12
+ await SecureStore.setItemAsync(key, value)
13
+ },
14
+
15
+ async remove(key: string): Promise<void> {
16
+ await SecureStore.deleteItemAsync(key)
17
+ },
18
+ }
19
+ }
@@ -0,0 +1,17 @@
1
+ import { type StorageDriver } from '@luxfi/api/src/storage/types'
2
+
3
+ export function createWebStorageDriver(): StorageDriver {
4
+ return {
5
+ async get(key: string): Promise<string | null> {
6
+ return localStorage.getItem(key)
7
+ },
8
+
9
+ async set(key: string, value: string): Promise<void> {
10
+ localStorage.setItem(key, value)
11
+ },
12
+
13
+ async remove(key: string): Promise<void> {
14
+ localStorage.removeItem(key)
15
+ },
16
+ }
17
+ }
@@ -0,0 +1,6 @@
1
+ import { createNativeStorageDriver } from '@luxfi/api/src/storage/createNativeStorageDriver'
2
+ import { type StorageDriver } from '@luxfi/api/src/storage/types'
3
+
4
+ export function getStorageDriver(): StorageDriver {
5
+ return createNativeStorageDriver()
6
+ }
@@ -0,0 +1,8 @@
1
+ import { StorageDriver } from '@luxfi/api/src/storage/types'
2
+ import { PlatformSplitStubError } from '@luxfi/utilities/src/errors'
3
+
4
+ export function getStorageDriver(): StorageDriver {
5
+ throw new PlatformSplitStubError('getStorageDriver')
6
+ }
7
+
8
+ export type { StorageDriver } from '@luxfi/api/src/storage/types'
@@ -0,0 +1,11 @@
1
+ import { createExtensionStorageDriver } from '@luxfi/api/src/storage/createExtensionStorageDriver'
2
+ import { createWebStorageDriver } from '@luxfi/api/src/storage/createWebStorageDriver'
3
+ import { type StorageDriver } from '@luxfi/api/src/storage/types'
4
+ import { isExtensionApp } from '@luxfi/utilities/src/platform'
5
+
6
+ export function getStorageDriver(): StorageDriver {
7
+ if (isExtensionApp) {
8
+ return createExtensionStorageDriver()
9
+ }
10
+ return createWebStorageDriver()
11
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Storage driver interface for key-value storage
3
+ * Platform-specific implementations handle the actual storage mechanism
4
+ */
5
+ export interface StorageDriver {
6
+ get(key: string): Promise<string | null>
7
+ set(key: string, value: string): Promise<void>
8
+ remove(key: string): Promise<void>
9
+ }
@@ -0,0 +1,85 @@
1
+ import { type ConnectTransportOptions, createConnectTransport } from '@connectrpc/connect-web'
2
+ import { provideDeviceIdService } from '@luxfi/api/src/provideDeviceIdService'
3
+ import { provideSessionStorage } from '@luxfi/api/src/provideSessionStorage'
4
+ import { isWebApp } from '@luxfi/utilities/src/platform'
5
+
6
+ interface SessionTransportOptions {
7
+ getSessionId?: () => Promise<string | null>
8
+ getDeviceId?: () => Promise<string | null>
9
+ getBaseUrl: () => string
10
+ getHeaders?: () => object
11
+ options?: Partial<ConnectTransportOptions>
12
+ }
13
+
14
+ /**
15
+ * Creates a Connect transport that includes session and device headers.
16
+ *
17
+ * This is the most basic transport util. Use this if you have a new use case for a transport.
18
+ * (For example, a TestTransport that doesn't use the Session storage)
19
+ * Otherwise, you can use the getTransport util.
20
+ */
21
+ function createTransport(ctx: SessionTransportOptions): ReturnType<typeof createConnectTransport> {
22
+ const { getSessionId, getDeviceId, getBaseUrl, getHeaders, options } = ctx
23
+
24
+ const transportOptions: ConnectTransportOptions = {
25
+ baseUrl: getBaseUrl(),
26
+ interceptors: [
27
+ (next) => async (request) => {
28
+ // Add session ID header for mobile/extension
29
+ // Web uses cookies automatically
30
+ if (!isWebApp) {
31
+ const [sessionId, deviceId] = await Promise.all([getSessionId?.(), getDeviceId?.()])
32
+ if (sessionId) {
33
+ request.header.set('X-Session-ID', sessionId)
34
+ }
35
+ if (deviceId) {
36
+ request.header.set('X-Device-ID', deviceId)
37
+ }
38
+ }
39
+
40
+ const extraHeaders = getHeaders?.()
41
+ if (extraHeaders) {
42
+ Object.entries(extraHeaders).forEach(([key, value]) => {
43
+ request.header.set(key, value)
44
+ })
45
+ }
46
+
47
+ return next(request)
48
+ },
49
+ ],
50
+ ...options,
51
+ }
52
+
53
+ return createConnectTransport(transportOptions)
54
+ }
55
+
56
+ /**
57
+ * Configures a Connect transport that uses the primary Session storage.
58
+ */
59
+ function getTransport(ctx: {
60
+ getBaseUrl: () => string
61
+ getHeaders?: () => object
62
+ options?: Partial<ConnectTransportOptions>
63
+ }): ReturnType<typeof createConnectTransport> {
64
+ return createTransport({
65
+ getBaseUrl: ctx.getBaseUrl,
66
+ async getSessionId() {
67
+ if (isWebApp) {
68
+ return null
69
+ }
70
+ return provideSessionStorage()
71
+ .get()
72
+ .then((session) => session?.sessionId ?? null)
73
+ },
74
+ async getDeviceId() {
75
+ if (isWebApp) {
76
+ return null
77
+ }
78
+ return provideDeviceIdService().getDeviceId()
79
+ },
80
+ getHeaders: ctx.getHeaders,
81
+ options: ctx.options,
82
+ })
83
+ }
84
+
85
+ export { getTransport }
@@ -0,0 +1,3 @@
1
+ // Type stub for @uniswap/client-privy-embedded-wallet when the private package is not installed.
2
+ import type { ServiceType } from '@bufbuild/protobuf'
3
+ export declare const EmbeddedWalletService: ServiceType
@@ -0,0 +1,60 @@
1
+ // Type stubs for @uniswap/client-privy-embedded-wallet when the private package is not installed.
2
+
3
+ export declare enum AuthenticationTypes {
4
+ AUTHENTICATION_TYPE_UNSPECIFIED = 0,
5
+ PASSKEY_REGISTRATION = 1,
6
+ PASSKEY_AUTHENTICATION = 2,
7
+ }
8
+
9
+ export declare enum Action {
10
+ ACTION_UNSPECIFIED = 0,
11
+ CREATE_WALLET = 1,
12
+ SIGN_MESSAGE = 2,
13
+ SIGN_TRANSACTION = 3,
14
+ SIGN_TYPED_DATA = 4,
15
+ WALLET_SIGNIN = 5,
16
+ EXPORT_SEED_PHRASE = 6,
17
+ DELETE_RECORD = 7,
18
+ REGISTER_NEW_AUTHENTICATION_TYPES = 8,
19
+ LIST_AUTHENTICATORS = 9,
20
+ }
21
+
22
+ export declare enum RegistrationOptions_AuthenticatorAttachment {
23
+ AUTHENTICATOR_ATTACHMENT_UNSPECIFIED = 0,
24
+ PLATFORM = 1,
25
+ CROSS_PLATFORM = 2,
26
+ }
27
+
28
+ export declare class ChallengeResponse {
29
+ challengeOptions: string
30
+ }
31
+
32
+ export declare class CreateWalletResponse {
33
+ walletAddress: string
34
+ walletId: string
35
+ }
36
+
37
+ export declare class DisconnectResponse {}
38
+
39
+ export declare class RegistrationOptions {
40
+ authenticatorAttachment?: RegistrationOptions_AuthenticatorAttachment
41
+ username?: string
42
+ }
43
+
44
+ export declare class WalletSignInResponse {
45
+ walletAddress: string
46
+ walletId: string
47
+ exported?: boolean
48
+ }
49
+
50
+ export declare class SignMessageResponse {
51
+ signature: string
52
+ }
53
+
54
+ export declare class SignTransactionResponse {
55
+ signature: string
56
+ }
57
+
58
+ export declare class SignTypedDataResponse {
59
+ signature: string
60
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "extends": "../../config/tsconfig/app.json",
3
+ "include": [
4
+ "src/**/*.ts",
5
+ "src/*.ts",
6
+ "src/**/*.d.ts",
7
+ "src/**/*.json",
8
+ "src/**/*.ts",
9
+ "src/**/*.tsx",
10
+ "src/**/*.mts"
11
+ ],
12
+ "exclude": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "src/**/*.test.ts", "src/**/*.test.tsx"],
13
+ "compilerOptions": {
14
+ "emitDeclarationOnly": true,
15
+ "noEmit": false,
16
+ "paths": {
17
+ "@universe/api/*": ["./src/*"],
18
+ "@uniswap/client-privy-embedded-wallet/dist/uniswap/privy-embedded-wallet/v1/service_pb": [
19
+ "../../node_modules/@uniswap/client-privy-embedded-wallet/dist/uniswap/privy-embedded-wallet/v1/service_pb",
20
+ "./stubs/privy-service-pb"
21
+ ]
22
+ },
23
+ "types": ["chrome", "node"]
24
+ },
25
+ "types": ["vitest/globals"],
26
+ "references": [
27
+ {
28
+ "path": "../utilities"
29
+ },
30
+ {
31
+ "path": "../sessions"
32
+ },
33
+ {
34
+ "path": "../config"
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "preserveSymlinks": true
5
+ },
6
+ "include": ["src/**/*.ts", "src/**/*.tsx"],
7
+ "exclude": []
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "types": ["node"]
5
+ },
6
+ "include": ["src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"],
7
+ "exclude": []
8
+ }
@@ -0,0 +1,14 @@
1
+ import { defineConfig } from 'vitest/config'
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ watch: false,
6
+ environment: 'jsdom',
7
+ coverage: {
8
+ exclude: ['**/__generated__/**', '**/node_modules/**', '**/dist/**', '**/*.config.*', '**/scripts/**'],
9
+ },
10
+ },
11
+ resolve: {
12
+ extensions: ['.web.ts', '.web.tsx', '.ts', '.tsx', '.js', '.jsx', '.json'],
13
+ },
14
+ })