@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,325 @@
1
+ import { type PromiseClient } from '@connectrpc/connect'
2
+ import { EmbeddedWalletService as OldEmbeddedWalletService } from '@uniswap/client-embeddedwallet/dist/uniswap/embeddedwallet/v1/service_connect'
3
+ import {
4
+ type DeleteAuthenticatorResponse,
5
+ type ExportSeedPhraseResponse,
6
+ type ListAuthenticatorsResponse,
7
+ type Action as OldAction,
8
+ type AuthenticationTypes as OldAuthenticationTypes,
9
+ type RegisterNewAuthenticatorResponse,
10
+ type SecuredChallengeResponse,
11
+ } from '@uniswap/client-embeddedwallet/dist/uniswap/embeddedwallet/v1/service_pb'
12
+ import {
13
+ type ChallengeResponse,
14
+ type CreateWalletResponse,
15
+ type DisconnectResponse,
16
+ type Action as NewAction,
17
+ type AuthenticationTypes as NewAuthenticationTypes,
18
+ type RegistrationOptions,
19
+ type SignMessageResponse,
20
+ type SignTransactionResponse,
21
+ type SignTypedDataResponse,
22
+ type WalletSignInResponse,
23
+ } from '@uniswap/client-privy-embedded-wallet/dist/uniswap/privy-embedded-wallet/v1/service_pb'
24
+
25
+ export type {
26
+ DeleteAuthenticatorResponse,
27
+ ExportSeedPhraseResponse,
28
+ ListAuthenticatorsResponse,
29
+ RegisterNewAuthenticatorResponse,
30
+ SecuredChallengeResponse,
31
+ } from '@uniswap/client-embeddedwallet/dist/uniswap/embeddedwallet/v1/service_pb'
32
+ export type {
33
+ Action,
34
+ AuthenticationTypes,
35
+ ChallengeResponse,
36
+ CreateWalletResponse,
37
+ DisconnectResponse,
38
+ RegistrationOptions,
39
+ SignMessageResponse,
40
+ SignTransactionResponse,
41
+ SignTypedDataResponse,
42
+ WalletSignInResponse,
43
+ } from '@uniswap/client-privy-embedded-wallet/dist/uniswap/privy-embedded-wallet/v1/service_pb'
44
+
45
+ export interface EmbeddedWalletClientContext {
46
+ rpcClient: {
47
+ challenge: (req: Record<string, unknown>) => Promise<ChallengeResponse>
48
+ createWallet: (req: Record<string, unknown>) => Promise<CreateWalletResponse>
49
+ walletSignIn: (req: Record<string, unknown>) => Promise<WalletSignInResponse>
50
+ signMessage: (req: Record<string, unknown>) => Promise<SignMessageResponse>
51
+ signTransaction: (req: Record<string, unknown>) => Promise<SignTransactionResponse>
52
+ signTypedData: (req: Record<string, unknown>) => Promise<SignTypedDataResponse>
53
+ disconnect: (req: Record<string, unknown>) => Promise<DisconnectResponse>
54
+ }
55
+ legacyRpcClient?: PromiseClient<typeof OldEmbeddedWalletService>
56
+ }
57
+
58
+ export interface EmbeddedWalletApiClient {
59
+ fetchChallengeRequest: (params: {
60
+ type: NewAuthenticationTypes
61
+ action: NewAction
62
+ options?: RegistrationOptions
63
+ walletId?: string
64
+ message?: string
65
+ transaction?: string
66
+ typedData?: string
67
+ }) => Promise<ChallengeResponse>
68
+
69
+ fetchCreateWalletRequest: (params: { credential: string }) => Promise<CreateWalletResponse>
70
+
71
+ fetchWalletSigninRequest: (params: { credential: string }) => Promise<WalletSignInResponse>
72
+
73
+ // Batch operations adapted to single operations
74
+ fetchSignMessagesRequest: (params: {
75
+ messages: string[]
76
+ credential: string | undefined
77
+ }) => Promise<{ signatures: string[] }>
78
+
79
+ fetchSignTransactionsRequest: (params: {
80
+ transactions: string[]
81
+ credential: string | undefined
82
+ }) => Promise<{ signatures: string[] }>
83
+
84
+ fetchSignTypedDataRequest: (params: {
85
+ typedDataBatch: string[]
86
+ credential: string | undefined
87
+ }) => Promise<{ signatures: string[] }>
88
+
89
+ fetchDisconnectRequest: () => Promise<DisconnectResponse>
90
+
91
+ fetchSecuredChallengeRequest: (params: {
92
+ type: OldAuthenticationTypes
93
+ action: OldAction
94
+ b64EncryptionPublicKey: string
95
+ }) => Promise<SecuredChallengeResponse>
96
+
97
+ fetchExportSeedPhraseRequest: (params: {
98
+ encryptionKey: string
99
+ credential: string
100
+ }) => Promise<ExportSeedPhraseResponse>
101
+
102
+ fetchListAuthenticatorsRequest: (params: { credential?: string }) => Promise<ListAuthenticatorsResponse>
103
+
104
+ fetchRegisterNewAuthenticatorRequest: (params: {
105
+ newCredential: string
106
+ newAuthenticationType: OldAuthenticationTypes
107
+ existingCredential: string
108
+ existingAuthenticationType: OldAuthenticationTypes
109
+ }) => Promise<RegisterNewAuthenticatorResponse>
110
+
111
+ fetchDeleteAuthenticatorRequest: (params: {
112
+ credential: string
113
+ authenticationType: OldAuthenticationTypes
114
+ authenticatorId: string
115
+ authenticatorType: string
116
+ }) => Promise<DeleteAuthenticatorResponse>
117
+ }
118
+
119
+ export function createEmbeddedWalletApiClient({
120
+ rpcClient,
121
+ legacyRpcClient,
122
+ }: EmbeddedWalletClientContext): EmbeddedWalletApiClient {
123
+ async function fetchChallengeRequest({
124
+ type,
125
+ action,
126
+ options,
127
+ walletId,
128
+ message,
129
+ transaction,
130
+ typedData,
131
+ }: {
132
+ type: NewAuthenticationTypes
133
+ action: NewAction
134
+ options?: RegistrationOptions
135
+ walletId?: string
136
+ message?: string
137
+ transaction?: string
138
+ typedData?: string
139
+ }): Promise<ChallengeResponse> {
140
+ return await rpcClient.challenge({
141
+ type,
142
+ action,
143
+ options,
144
+ walletId,
145
+ message,
146
+ transaction,
147
+ typedData,
148
+ })
149
+ }
150
+
151
+ async function fetchCreateWalletRequest({ credential }: { credential: string }): Promise<CreateWalletResponse> {
152
+ return await rpcClient.createWallet({ credential })
153
+ }
154
+
155
+ async function fetchWalletSigninRequest({ credential }: { credential: string }): Promise<WalletSignInResponse> {
156
+ return await rpcClient.walletSignIn({ credential })
157
+ }
158
+
159
+ async function fetchSignMessagesRequest({
160
+ messages,
161
+ credential,
162
+ }: {
163
+ messages: string[]
164
+ credential: string | undefined
165
+ }): Promise<{ signatures: string[] }> {
166
+ if (messages.length === 0) {
167
+ throw new Error('At least one message required')
168
+ }
169
+ if (messages.length > 1) {
170
+ throw new Error('Batch message signing not yet supported - use single message')
171
+ }
172
+ const result = await rpcClient.signMessage({
173
+ message: messages[0],
174
+ credential: credential ?? '',
175
+ })
176
+ return { signatures: [result.signature] }
177
+ }
178
+
179
+ async function fetchSignTransactionsRequest({
180
+ transactions,
181
+ credential,
182
+ }: {
183
+ transactions: string[]
184
+ credential: string | undefined
185
+ }): Promise<{ signatures: string[] }> {
186
+ if (transactions.length === 0) {
187
+ throw new Error('At least one transaction required')
188
+ }
189
+ if (transactions.length > 1) {
190
+ throw new Error('Batch transaction signing not yet supported - use single transaction')
191
+ }
192
+ const result = await rpcClient.signTransaction({
193
+ transaction: transactions[0],
194
+ credential: credential ?? '',
195
+ })
196
+ return { signatures: [result.signature] }
197
+ }
198
+
199
+ async function fetchSignTypedDataRequest({
200
+ typedDataBatch,
201
+ credential,
202
+ }: {
203
+ typedDataBatch: string[]
204
+ credential: string | undefined
205
+ }): Promise<{ signatures: string[] }> {
206
+ if (typedDataBatch.length === 0) {
207
+ throw new Error('At least one typed data required')
208
+ }
209
+ if (typedDataBatch.length > 1) {
210
+ throw new Error('Batch typed data signing not yet supported - use single typed data')
211
+ }
212
+ const result = await rpcClient.signTypedData({
213
+ typedData: typedDataBatch[0],
214
+ credential: credential ?? '',
215
+ })
216
+ return { signatures: [result.signature] }
217
+ }
218
+
219
+ async function fetchDisconnectRequest(): Promise<DisconnectResponse> {
220
+ return await rpcClient.disconnect({})
221
+ }
222
+
223
+ async function fetchSecuredChallengeRequest({
224
+ type,
225
+ action,
226
+ b64EncryptionPublicKey,
227
+ }: {
228
+ type: OldAuthenticationTypes
229
+ action: OldAction
230
+ b64EncryptionPublicKey: string
231
+ walletId?: string
232
+ }): Promise<SecuredChallengeResponse> {
233
+ if (!legacyRpcClient) {
234
+ throw new Error('SecuredChallenge not supported in new API - legacy client required')
235
+ }
236
+ return await legacyRpcClient.securedChallenge({
237
+ type,
238
+ action,
239
+ b64EncryptionPublicKey,
240
+ })
241
+ }
242
+
243
+ async function fetchExportSeedPhraseRequest({
244
+ encryptionKey,
245
+ credential,
246
+ }: {
247
+ encryptionKey: string
248
+ credential: string
249
+ }): Promise<ExportSeedPhraseResponse> {
250
+ if (!legacyRpcClient) {
251
+ throw new Error('ExportSeedPhrase not supported in new API - legacy client required')
252
+ }
253
+ return await legacyRpcClient.exportSeedPhrase({ credential, b64EncryptionPublicKey: encryptionKey })
254
+ }
255
+
256
+ async function fetchListAuthenticatorsRequest({
257
+ credential,
258
+ }: {
259
+ credential?: string
260
+ }): Promise<ListAuthenticatorsResponse> {
261
+ if (!legacyRpcClient) {
262
+ throw new Error('ListAuthenticators not supported in new API - legacy client required')
263
+ }
264
+ return await legacyRpcClient.listAuthenticators({ credential })
265
+ }
266
+
267
+ async function fetchRegisterNewAuthenticatorRequest({
268
+ newCredential,
269
+ newAuthenticationType,
270
+ existingCredential,
271
+ existingAuthenticationType,
272
+ }: {
273
+ newCredential: string
274
+ newAuthenticationType: OldAuthenticationTypes
275
+ existingCredential: string
276
+ existingAuthenticationType: OldAuthenticationTypes
277
+ }): Promise<RegisterNewAuthenticatorResponse> {
278
+ if (!legacyRpcClient) {
279
+ throw new Error('RegisterNewAuthenticator not supported in new API - legacy client required')
280
+ }
281
+ return await legacyRpcClient.registerNewAuthenticator({
282
+ newCredential,
283
+ newAuthenticationType,
284
+ existingCredential,
285
+ existingAuthenticationType,
286
+ })
287
+ }
288
+
289
+ async function fetchDeleteAuthenticatorRequest({
290
+ credential,
291
+ authenticationType,
292
+ authenticatorId,
293
+ authenticatorType,
294
+ }: {
295
+ credential: string
296
+ authenticationType: OldAuthenticationTypes
297
+ authenticatorId: string
298
+ authenticatorType: string
299
+ }): Promise<DeleteAuthenticatorResponse> {
300
+ if (!legacyRpcClient) {
301
+ throw new Error('DeleteAuthenticator not supported in new API - legacy client required')
302
+ }
303
+ return await legacyRpcClient.deleteAuthenticator({
304
+ credential,
305
+ type: authenticationType,
306
+ authenticatorId,
307
+ authenticatorType,
308
+ })
309
+ }
310
+
311
+ return {
312
+ fetchChallengeRequest,
313
+ fetchSecuredChallengeRequest,
314
+ fetchCreateWalletRequest,
315
+ fetchWalletSigninRequest,
316
+ fetchSignMessagesRequest,
317
+ fetchSignTransactionsRequest,
318
+ fetchSignTypedDataRequest,
319
+ fetchExportSeedPhraseRequest,
320
+ fetchDisconnectRequest,
321
+ fetchListAuthenticatorsRequest,
322
+ fetchRegisterNewAuthenticatorRequest,
323
+ fetchDeleteAuthenticatorRequest,
324
+ }
325
+ }
@@ -0,0 +1,187 @@
1
+ import { PlainMessage } from '@bufbuild/protobuf'
2
+ import {
3
+ GetCountryResponse,
4
+ OffRampTransferDetailsRequest,
5
+ OffRampTransferDetailsResponse,
6
+ OffRampWidgetUrlRequest,
7
+ QuoteRequest,
8
+ SupportedCountriesRequest,
9
+ SupportedCountriesResponse,
10
+ SupportedFiatCurrenciesRequest,
11
+ SupportedFiatCurrenciesResponse,
12
+ SupportedTokensRequest,
13
+ SupportedTokensResponse,
14
+ TransactionRequest,
15
+ TransactionResponse,
16
+ TransferServiceProvidersResponse,
17
+ TransferWidgetUrlRequest,
18
+ WidgetUrlRequest,
19
+ WidgetUrlResponse,
20
+ } from '@uniswap/client-for/dist/for/v1/api_pb'
21
+ import { FetchClient } from '@luxexchange/api/src/clients/base/types'
22
+ import { createFetcher } from '@luxexchange/api/src/clients/base/utils'
23
+ import { FORQuoteResponse } from '@luxexchange/api/src/clients/for/types'
24
+ import { transformPaymentMethods } from '@luxexchange/api/src/clients/for/utils'
25
+
26
+ type ForApiClientContext = {
27
+ fetchClient: FetchClient
28
+ }
29
+
30
+ export type ForApiClient = {
31
+ getSupportedCountries: (request: PlainMessage<SupportedCountriesRequest>) => Promise<SupportedCountriesResponse>
32
+ getCountry: () => Promise<GetCountryResponse>
33
+ getCryptoQuote: (request: PlainMessage<QuoteRequest>) => Promise<FORQuoteResponse>
34
+ getTransferServiceProviders: () => Promise<TransferServiceProvidersResponse>
35
+ getSupportedTokens: (request: PlainMessage<SupportedTokensRequest>) => Promise<SupportedTokensResponse>
36
+ getSupportedFiatCurrencies: (
37
+ request: PlainMessage<SupportedFiatCurrenciesRequest>,
38
+ ) => Promise<SupportedFiatCurrenciesResponse>
39
+ getWidgetUrl: (request: PlainMessage<WidgetUrlRequest>) => Promise<WidgetUrlResponse>
40
+ getTransferWidgetUrl: (request: PlainMessage<TransferWidgetUrlRequest>) => Promise<WidgetUrlResponse>
41
+ getTransaction: (request: PlainMessage<TransactionRequest> & { sessionId: string }) => Promise<TransactionResponse>
42
+ getOffRampWidgetUrl: (request: PlainMessage<OffRampWidgetUrlRequest>) => Promise<WidgetUrlResponse>
43
+ getOffRampTransferDetails: (
44
+ request: PlainMessage<OffRampTransferDetailsRequest>,
45
+ ) => Promise<OffRampTransferDetailsResponse>
46
+ }
47
+
48
+ /**
49
+ * Factory function to create a FOR (Fiat On-Ramp) API client
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const forClient = createForApiClient({
54
+ * fetchClient: myFetchClient,
55
+ * })
56
+ *
57
+ * const quote = await forClient.getCryptoQuote({
58
+ * countryCode: 'US',
59
+ * sourceCurrencyCode: 'USD',
60
+ * destinationCurrencyCode: 'ETH',
61
+ * sourceAmount: 100,
62
+ * })
63
+ * ```
64
+ *
65
+ * @param ctx - Context containing the FetchClient instance
66
+ * @returns ForApiClient instance with all FOR API methods
67
+ */
68
+ export function createForApiClient(ctx: ForApiClientContext): ForApiClient {
69
+ const client = ctx.fetchClient
70
+
71
+ // POST /SupportedCountries
72
+ const getSupportedCountries = createFetcher<PlainMessage<SupportedCountriesRequest>, SupportedCountriesResponse>({
73
+ client,
74
+ method: 'post',
75
+ url: '/SupportedCountries',
76
+ })
77
+
78
+ // POST /GetCountry
79
+ const getCountryFetcher = createFetcher<Record<string, never>, GetCountryResponse>({
80
+ client,
81
+ method: 'post',
82
+ url: '/GetCountry',
83
+ })
84
+ const getCountry = (): Promise<GetCountryResponse> => getCountryFetcher({})
85
+
86
+ // POST /Quote - with response transformation for payment methods
87
+ const getCryptoQuoteRaw = createFetcher<PlainMessage<QuoteRequest>, FORQuoteResponse>({
88
+ client,
89
+ method: 'post',
90
+ url: '/Quote',
91
+ })
92
+
93
+ const getCryptoQuote = async (request: PlainMessage<QuoteRequest>): Promise<FORQuoteResponse> => {
94
+ const response = await getCryptoQuoteRaw(request)
95
+ // Apply payment method transformation (filters Apple Pay on Android, Google Pay on iOS)
96
+ return {
97
+ ...response,
98
+ quotes: response.quotes.map((quote) => ({
99
+ ...quote,
100
+ serviceProviderDetails: quote.serviceProviderDetails
101
+ ? {
102
+ ...quote.serviceProviderDetails,
103
+ paymentMethods: transformPaymentMethods(quote.serviceProviderDetails.paymentMethods),
104
+ }
105
+ : undefined,
106
+ })),
107
+ }
108
+ }
109
+
110
+ // POST /TransferServiceProviders
111
+ const getTransferServiceProvidersFetcher = createFetcher<Record<string, never>, TransferServiceProvidersResponse>({
112
+ client,
113
+ method: 'post',
114
+ url: '/TransferServiceProviders',
115
+ })
116
+ const getTransferServiceProviders = (): Promise<TransferServiceProvidersResponse> =>
117
+ getTransferServiceProvidersFetcher({})
118
+
119
+ // POST /SupportedTokens
120
+ const getSupportedTokens = createFetcher<PlainMessage<SupportedTokensRequest>, SupportedTokensResponse>({
121
+ client,
122
+ method: 'post',
123
+ url: '/SupportedTokens',
124
+ })
125
+
126
+ // POST /SupportedFiatCurrencies
127
+ const getSupportedFiatCurrencies = createFetcher<
128
+ PlainMessage<SupportedFiatCurrenciesRequest>,
129
+ SupportedFiatCurrenciesResponse
130
+ >({
131
+ client,
132
+ method: 'post',
133
+ url: '/SupportedFiatCurrencies',
134
+ })
135
+
136
+ // POST /WidgetUrl
137
+ const getWidgetUrl = createFetcher<PlainMessage<WidgetUrlRequest>, WidgetUrlResponse>({
138
+ client,
139
+ method: 'post',
140
+ url: '/WidgetUrl',
141
+ })
142
+
143
+ // POST /TransferWidgetUrl
144
+ const getTransferWidgetUrl = createFetcher<PlainMessage<TransferWidgetUrlRequest>, WidgetUrlResponse>({
145
+ client,
146
+ method: 'post',
147
+ url: '/TransferWidgetUrl',
148
+ })
149
+
150
+ // POST /Transaction
151
+ const getTransaction = createFetcher<PlainMessage<TransactionRequest> & { sessionId: string }, TransactionResponse>({
152
+ client,
153
+ method: 'post',
154
+ url: '/Transaction',
155
+ })
156
+
157
+ // POST /OffRampWidgetUrl
158
+ const getOffRampWidgetUrl = createFetcher<PlainMessage<OffRampWidgetUrlRequest>, WidgetUrlResponse>({
159
+ client,
160
+ method: 'post',
161
+ url: '/OffRampWidgetUrl',
162
+ })
163
+
164
+ // POST /OffRampTransferDetails
165
+ const getOffRampTransferDetails = createFetcher<
166
+ PlainMessage<OffRampTransferDetailsRequest>,
167
+ OffRampTransferDetailsResponse
168
+ >({
169
+ client,
170
+ method: 'post',
171
+ url: '/OffRampTransferDetails',
172
+ })
173
+
174
+ return {
175
+ getSupportedCountries,
176
+ getCountry,
177
+ getCryptoQuote,
178
+ getTransferServiceProviders,
179
+ getSupportedTokens,
180
+ getSupportedFiatCurrencies,
181
+ getWidgetUrl,
182
+ getTransferWidgetUrl,
183
+ getTransaction,
184
+ getOffRampWidgetUrl,
185
+ getOffRampTransferDetails,
186
+ }
187
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * FOR (Fiat On-Ramp) API Client Types
3
+ *
4
+ * This file creates PlainMessage type aliases for protobuf types.
5
+ * PlainMessage converts protobuf classes to plain object types for REST API usage.
6
+ */
7
+
8
+ import { PlainMessage } from '@bufbuild/protobuf'
9
+ import {
10
+ FiatCurrency,
11
+ Quote,
12
+ QuoteResponse,
13
+ ServiceProvider,
14
+ ServiceProviderLogo,
15
+ SupportedCountry,
16
+ SupportedToken,
17
+ Transaction,
18
+ } from '@uniswap/client-for/dist/for/v1/api_pb'
19
+
20
+ // Plain object type aliases for protobuf types
21
+
22
+ export type FORCountry = PlainMessage<SupportedCountry> & {
23
+ /** State code for US addresses (app-specific extension) */
24
+ state?: string
25
+ }
26
+
27
+ export type FORQuote = PlainMessage<Quote>
28
+
29
+ export type FORQuoteResponse = PlainMessage<QuoteResponse>
30
+
31
+ export type FORLogo = PlainMessage<ServiceProviderLogo>
32
+
33
+ export type FORServiceProvider = PlainMessage<ServiceProvider>
34
+
35
+ export type FORSupportedToken = PlainMessage<SupportedToken>
36
+
37
+ export type FORSupportedFiatCurrency = PlainMessage<FiatCurrency>
38
+
39
+ export type FORTransaction = PlainMessage<Transaction>
@@ -0,0 +1,13 @@
1
+ import { isAndroid, isIOS } from '@luxfi/utilities/src/platform'
2
+
3
+ const APPLE_PAY = 'Apple Pay'
4
+ const GOOGLE_PAY = 'Google Pay'
5
+
6
+ /**
7
+ * Filters payment methods based on the current platform.
8
+ * - Removes Apple Pay on Android devices
9
+ * - Removes Google Pay on iOS devices
10
+ */
11
+ export function transformPaymentMethods(paymentMethods: string[]): string[] {
12
+ return paymentMethods.filter((pm) => !(pm === APPLE_PAY && isAndroid) && !(pm === GOOGLE_PAY && isIOS))
13
+ }