@sodax/dapp-kit 0.0.1-rc.21 → 0.0.1-rc.23

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 (80) hide show
  1. package/README.md +83 -1
  2. package/dist/contexts/index.d.ts +1 -2
  3. package/dist/contexts/index.d.ts.map +1 -1
  4. package/dist/hooks/backend/index.d.ts +17 -0
  5. package/dist/hooks/backend/index.d.ts.map +1 -0
  6. package/dist/hooks/backend/useBackendAllMoneyMarketAssets.d.ts +37 -0
  7. package/dist/hooks/backend/useBackendAllMoneyMarketAssets.d.ts.map +1 -0
  8. package/dist/hooks/backend/useBackendAllMoneyMarketBorrowers.d.ts +45 -0
  9. package/dist/hooks/backend/useBackendAllMoneyMarketBorrowers.d.ts.map +1 -0
  10. package/dist/hooks/backend/useBackendIntentByHash.d.ts +36 -0
  11. package/dist/hooks/backend/useBackendIntentByHash.d.ts.map +1 -0
  12. package/dist/hooks/backend/useBackendIntentByTxHash.d.ts +35 -0
  13. package/dist/hooks/backend/useBackendIntentByTxHash.d.ts.map +1 -0
  14. package/dist/hooks/backend/useBackendMoneyMarketAsset.d.ts +38 -0
  15. package/dist/hooks/backend/useBackendMoneyMarketAsset.d.ts.map +1 -0
  16. package/dist/hooks/backend/useBackendMoneyMarketAssetBorrowers.d.ts +47 -0
  17. package/dist/hooks/backend/useBackendMoneyMarketAssetBorrowers.d.ts.map +1 -0
  18. package/dist/hooks/backend/useBackendMoneyMarketAssetSuppliers.d.ts +47 -0
  19. package/dist/hooks/backend/useBackendMoneyMarketAssetSuppliers.d.ts.map +1 -0
  20. package/dist/hooks/backend/useBackendMoneyMarketPosition.d.ts +37 -0
  21. package/dist/hooks/backend/useBackendMoneyMarketPosition.d.ts.map +1 -0
  22. package/dist/hooks/backend/useBackendOrderbook.d.ts +46 -0
  23. package/dist/hooks/backend/useBackendOrderbook.d.ts.map +1 -0
  24. package/dist/hooks/bridge/index.d.ts +6 -0
  25. package/dist/hooks/bridge/index.d.ts.map +1 -0
  26. package/dist/hooks/bridge/useBridge.d.ts +33 -0
  27. package/dist/hooks/bridge/useBridge.d.ts.map +1 -0
  28. package/dist/hooks/bridge/useBridgeAllowance.d.ts +23 -0
  29. package/dist/hooks/bridge/useBridgeAllowance.d.ts.map +1 -0
  30. package/dist/hooks/bridge/useBridgeApprove.d.ts +29 -0
  31. package/dist/hooks/bridge/useBridgeApprove.d.ts.map +1 -0
  32. package/dist/hooks/bridge/useGetBridgeableAmount.d.ts +26 -0
  33. package/dist/hooks/bridge/useGetBridgeableAmount.d.ts.map +1 -0
  34. package/dist/hooks/bridge/useGetBridgeableTokens.d.ts +37 -0
  35. package/dist/hooks/bridge/useGetBridgeableTokens.d.ts.map +1 -0
  36. package/dist/hooks/index.d.ts +2 -0
  37. package/dist/hooks/index.d.ts.map +1 -1
  38. package/dist/hooks/mm/useUserFormattedSummary.d.ts +1 -1
  39. package/dist/hooks/mm/useUserFormattedSummary.d.ts.map +1 -1
  40. package/dist/hooks/mm/useUserReservesData.d.ts +1 -1
  41. package/dist/hooks/mm/useUserReservesData.d.ts.map +1 -1
  42. package/dist/hooks/provider/useHubProvider.d.ts +1 -1
  43. package/dist/hooks/provider/useHubProvider.d.ts.map +1 -1
  44. package/dist/hooks/provider/useSpokeProvider.d.ts.map +1 -1
  45. package/dist/hooks/shared/index.d.ts +1 -0
  46. package/dist/hooks/shared/index.d.ts.map +1 -1
  47. package/dist/hooks/shared/useDeriveUserWalletAddress.d.ts +24 -0
  48. package/dist/hooks/shared/useDeriveUserWalletAddress.d.ts.map +1 -0
  49. package/dist/index.js +278 -19
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +265 -21
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/providers/SodaxProvider.d.ts.map +1 -1
  54. package/package.json +2 -2
  55. package/src/contexts/index.ts +1 -2
  56. package/src/hooks/backend/README.md +135 -0
  57. package/src/hooks/backend/index.ts +23 -0
  58. package/src/hooks/backend/useBackendAllMoneyMarketAssets.ts +49 -0
  59. package/src/hooks/backend/useBackendAllMoneyMarketBorrowers.ts +61 -0
  60. package/src/hooks/backend/useBackendIntentByHash.ts +53 -0
  61. package/src/hooks/backend/useBackendIntentByTxHash.ts +52 -0
  62. package/src/hooks/backend/useBackendMoneyMarketAsset.ts +57 -0
  63. package/src/hooks/backend/useBackendMoneyMarketAssetBorrowers.ts +67 -0
  64. package/src/hooks/backend/useBackendMoneyMarketAssetSuppliers.ts +67 -0
  65. package/src/hooks/backend/useBackendMoneyMarketPosition.ts +56 -0
  66. package/src/hooks/backend/useBackendOrderbook.ts +63 -0
  67. package/src/hooks/bridge/index.ts +5 -0
  68. package/src/hooks/bridge/useBridge.ts +57 -0
  69. package/src/hooks/bridge/useBridgeAllowance.ts +49 -0
  70. package/src/hooks/bridge/useBridgeApprove.ts +68 -0
  71. package/src/hooks/bridge/useGetBridgeableAmount.ts +50 -0
  72. package/src/hooks/bridge/useGetBridgeableTokens.ts +62 -0
  73. package/src/hooks/index.ts +2 -0
  74. package/src/hooks/mm/useUserFormattedSummary.ts +1 -1
  75. package/src/hooks/mm/useUserReservesData.ts +1 -1
  76. package/src/hooks/provider/useHubProvider.ts +3 -3
  77. package/src/hooks/provider/useSpokeProvider.ts +10 -4
  78. package/src/hooks/shared/index.ts +1 -0
  79. package/src/hooks/shared/useDeriveUserWalletAddress.ts +44 -0
  80. package/src/providers/SodaxProvider.tsx +4 -18
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import React, { createContext, useContext, useMemo } from 'react';
2
- import { SpokeService, spokeChainConfig, SONIC_MAINNET_CHAIN_ID, SonicSpokeProvider, EvmSpokeProvider, SuiSpokeProvider, IconSpokeProvider, InjectiveSpokeProvider, StellarSpokeProvider, SolanaSpokeProvider, Sodax, getHubChainConfig, EvmHubProvider, hubAssets } from '@sodax/sdk';
2
+ import { SpokeService, deriveUserWalletAddress, spokeChainConfig, SONIC_MAINNET_CHAIN_ID, SonicSpokeProvider, EvmSpokeProvider, SuiSpokeProvider, IconSpokeProvider, InjectiveSpokeProvider, StellarSpokeProvider, SolanaSpokeProvider, Sodax, hubAssets } from '@sodax/sdk';
3
3
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
4
4
  import { parseUnits } from 'viem';
5
5
 
@@ -23,11 +23,26 @@ function useEstimateGas(spokeProvider) {
23
23
  }
24
24
  });
25
25
  }
26
+ function useDeriveUserWalletAddress(spokeProvider, walletAddress) {
27
+ const { sodax } = useSodaxContext();
28
+ return useQuery({
29
+ queryKey: ["deriveUserWalletAddress", spokeProvider?.chainConfig.chain.id, walletAddress],
30
+ queryFn: async () => {
31
+ if (!spokeProvider) {
32
+ throw new Error("Spoke provider is required");
33
+ }
34
+ return await deriveUserWalletAddress(spokeProvider, sodax.hubProvider, walletAddress);
35
+ },
36
+ enabled: !!spokeProvider,
37
+ refetchInterval: false
38
+ // This is a deterministic operation, no need to refetch
39
+ });
40
+ }
26
41
 
27
42
  // src/hooks/provider/useHubProvider.ts
28
43
  function useHubProvider() {
29
- const { hubProvider } = useSodaxContext();
30
- return hubProvider;
44
+ const { sodax } = useSodaxContext();
45
+ return sodax.hubProvider;
31
46
  }
32
47
  function useSpokeProvider(spokeChainId, walletProvider) {
33
48
  const { rpcConfig } = useSodaxContext();
@@ -69,10 +84,14 @@ function useSpokeProvider(spokeChainId, walletProvider) {
69
84
  }
70
85
  if (xChainType === "STELLAR") {
71
86
  const stellarConfig = spokeChainConfig[spokeChainId];
72
- return new StellarSpokeProvider(walletProvider, stellarConfig, {
73
- horizonRpcUrl: stellarConfig.horizonRpcUrl,
74
- sorobanRpcUrl: stellarConfig.sorobanRpcUrl
75
- });
87
+ return new StellarSpokeProvider(
88
+ walletProvider,
89
+ stellarConfig,
90
+ rpcConfig.stellar ? rpcConfig.stellar : {
91
+ horizonRpcUrl: stellarConfig.horizonRpcUrl,
92
+ sorobanRpcUrl: stellarConfig.sorobanRpcUrl
93
+ }
94
+ );
76
95
  }
77
96
  if (xChainType === "SOLANA") {
78
97
  return new SolanaSpokeProvider(
@@ -368,21 +387,246 @@ function useCancelSwap(spokeProvider) {
368
387
  }
369
388
  });
370
389
  }
371
- var SodaxProvider = ({ children, testnet = false, config, rpcConfig }) => {
372
- const sodax = new Sodax(config);
373
- const hubChainId = config?.hubProviderConfig?.chainConfig.chain.id;
374
- const hubRpcUrl = config?.hubProviderConfig?.hubRpcUrl;
375
- const hubProvider = useMemo(() => {
376
- if (hubChainId && hubRpcUrl) {
377
- const hubChainCfg = getHubChainConfig(hubChainId);
378
- return new EvmHubProvider({
379
- hubRpcUrl,
380
- chainConfig: hubChainCfg
390
+ var useBackendIntentByTxHash = (txHash) => {
391
+ const { sodax } = useSodaxContext();
392
+ return useQuery({
393
+ queryKey: ["backend", "intent", "txHash", txHash],
394
+ queryFn: async () => {
395
+ if (!txHash) {
396
+ return void 0;
397
+ }
398
+ return sodax.backendApiService.getIntentByTxHash(txHash);
399
+ },
400
+ enabled: !!txHash && txHash.length > 0,
401
+ retry: 3
402
+ });
403
+ };
404
+ var useBackendIntentByHash = (intentHash) => {
405
+ const { sodax } = useSodaxContext();
406
+ return useQuery({
407
+ queryKey: ["backend", "intent", "hash", intentHash],
408
+ queryFn: async () => {
409
+ if (!intentHash) {
410
+ return void 0;
411
+ }
412
+ return sodax.backendApiService.getIntentByHash(intentHash);
413
+ },
414
+ enabled: !!intentHash && intentHash.length > 0,
415
+ retry: 3
416
+ });
417
+ };
418
+ var useBackendOrderbook = (params) => {
419
+ const { sodax } = useSodaxContext();
420
+ return useQuery({
421
+ queryKey: ["backend", "solver", "orderbook", params],
422
+ queryFn: async () => {
423
+ if (!params || !params.offset || !params.limit) {
424
+ return void 0;
425
+ }
426
+ return sodax.backendApiService.getOrderbook(params);
427
+ },
428
+ enabled: !!params && !!params.offset && !!params.limit,
429
+ staleTime: 30 * 1e3,
430
+ // 30 seconds for real-time data
431
+ retry: 3
432
+ });
433
+ };
434
+ var useBackendMoneyMarketPosition = (userAddress) => {
435
+ const { sodax } = useSodaxContext();
436
+ return useQuery({
437
+ queryKey: ["backend", "moneymarket", "position", userAddress],
438
+ queryFn: async () => {
439
+ if (!userAddress) {
440
+ return void 0;
441
+ }
442
+ return sodax.backendApiService.getMoneyMarketPosition(userAddress);
443
+ },
444
+ enabled: !!userAddress && userAddress.length > 0,
445
+ retry: 3
446
+ });
447
+ };
448
+ var useBackendAllMoneyMarketAssets = () => {
449
+ const { sodax } = useSodaxContext();
450
+ return useQuery({
451
+ queryKey: ["backend", "moneymarket", "assets", "all"],
452
+ queryFn: async () => {
453
+ return sodax.backendApiService.getAllMoneyMarketAssets();
454
+ },
455
+ retry: 3
456
+ });
457
+ };
458
+ var useBackendMoneyMarketAsset = (reserveAddress) => {
459
+ const { sodax } = useSodaxContext();
460
+ return useQuery({
461
+ queryKey: ["backend", "moneymarket", "asset", reserveAddress],
462
+ queryFn: async () => {
463
+ if (!reserveAddress) {
464
+ return void 0;
465
+ }
466
+ return sodax.backendApiService.getMoneyMarketAsset(reserveAddress);
467
+ },
468
+ enabled: !!reserveAddress && reserveAddress.length > 0,
469
+ retry: 3
470
+ });
471
+ };
472
+ var useBackendMoneyMarketAssetBorrowers = (params) => {
473
+ const { sodax } = useSodaxContext();
474
+ return useQuery({
475
+ queryKey: ["backend", "moneymarket", "asset", "borrowers", params],
476
+ queryFn: async () => {
477
+ if (!params.reserveAddress || !params.offset || !params.limit) {
478
+ return void 0;
479
+ }
480
+ return sodax.backendApiService.getMoneyMarketAssetBorrowers(params.reserveAddress, {
481
+ offset: params.offset,
482
+ limit: params.limit
381
483
  });
484
+ },
485
+ enabled: !!params.reserveAddress && !!params.offset && !!params.limit,
486
+ retry: 3
487
+ });
488
+ };
489
+ var useBackendMoneyMarketAssetSuppliers = (params) => {
490
+ const { sodax } = useSodaxContext();
491
+ return useQuery({
492
+ queryKey: ["backend", "moneymarket", "asset", "suppliers", params],
493
+ queryFn: async () => {
494
+ if (!params.reserveAddress || !params.offset || !params.limit) {
495
+ return void 0;
496
+ }
497
+ return sodax.backendApiService.getMoneyMarketAssetSuppliers(params.reserveAddress, {
498
+ offset: params.offset,
499
+ limit: params.limit
500
+ });
501
+ },
502
+ enabled: !!params.reserveAddress && !!params.offset && !!params.limit,
503
+ retry: 3
504
+ });
505
+ };
506
+ var useBackendAllMoneyMarketBorrowers = (params) => {
507
+ const { sodax } = useSodaxContext();
508
+ return useQuery({
509
+ queryKey: ["backend", "moneymarket", "borrowers", "all", params],
510
+ queryFn: async () => {
511
+ if (!params || !params.offset || !params.limit) {
512
+ return void 0;
513
+ }
514
+ return sodax.backendApiService.getAllMoneyMarketBorrowers(params);
515
+ },
516
+ enabled: !!params && !!params.offset && !!params.limit,
517
+ retry: 3
518
+ });
519
+ };
520
+ function useBridgeAllowance(params, spokeProvider) {
521
+ const { sodax } = useSodaxContext();
522
+ return useQuery({
523
+ queryKey: ["bridge-allowance", params],
524
+ queryFn: async () => {
525
+ if (!spokeProvider || !params) {
526
+ return false;
527
+ }
528
+ const allowance = await sodax.bridge.isAllowanceValid({
529
+ params,
530
+ spokeProvider
531
+ });
532
+ if (allowance.ok) {
533
+ return allowance.value;
534
+ }
535
+ return false;
536
+ },
537
+ enabled: !!spokeProvider && !!params
538
+ });
539
+ }
540
+ function useBridgeApprove(spokeProvider) {
541
+ const { sodax } = useSodaxContext();
542
+ const queryClient = useQueryClient();
543
+ const {
544
+ mutateAsync: approve,
545
+ isPending,
546
+ error,
547
+ reset: resetError
548
+ } = useMutation({
549
+ mutationFn: async (params) => {
550
+ if (!spokeProvider) {
551
+ throw new Error("Spoke provider not found");
552
+ }
553
+ const allowance = await sodax.bridge.approve({
554
+ params,
555
+ spokeProvider
556
+ });
557
+ if (!allowance.ok) {
558
+ throw new Error("Failed to approve tokens for bridge");
559
+ }
560
+ return true;
561
+ },
562
+ onSuccess: (_, params) => {
563
+ queryClient.invalidateQueries({ queryKey: ["bridge-allowance", params] });
382
564
  }
383
- return void 0;
384
- }, [hubChainId, hubRpcUrl]);
385
- return /* @__PURE__ */ React.createElement(SodaxContext.Provider, { value: { sodax, testnet, hubProvider, rpcConfig } }, children);
565
+ });
566
+ return {
567
+ approve,
568
+ isLoading: isPending,
569
+ error,
570
+ resetError
571
+ };
572
+ }
573
+ function useBridge(spokeProvider) {
574
+ const { sodax } = useSodaxContext();
575
+ return useMutation({
576
+ mutationFn: async (params) => {
577
+ if (!spokeProvider) {
578
+ throw new Error("Spoke provider not found");
579
+ }
580
+ const result = await sodax.bridge.bridge({
581
+ params,
582
+ spokeProvider
583
+ });
584
+ if (!result.ok) {
585
+ throw new Error(`Bridge failed: ${result.error.code}`);
586
+ }
587
+ return result;
588
+ }
589
+ });
590
+ }
591
+ function useGetBridgeableAmount(from, to) {
592
+ const { sodax } = useSodaxContext();
593
+ return useQuery({
594
+ queryKey: ["spoke-asset-manager-token-balance", from, to],
595
+ queryFn: async () => {
596
+ if (!from || !to) {
597
+ return 0n;
598
+ }
599
+ const result = await sodax.bridge.getBridgeableAmount(from, to);
600
+ if (result.ok) {
601
+ return result.value;
602
+ }
603
+ console.error("Error getting bridgeable amount:", result.error);
604
+ return 0n;
605
+ },
606
+ enabled: !!from && !!to
607
+ });
608
+ }
609
+ function useGetBridgeableTokens(from, to, token) {
610
+ const { sodax } = useSodaxContext();
611
+ return useQuery({
612
+ queryKey: ["bridgeable-tokens", from, to, token],
613
+ queryFn: async () => {
614
+ if (!from || !to || !token) {
615
+ return [];
616
+ }
617
+ const result = sodax.bridge.getBridgeableTokens(from, to, token);
618
+ if (result.ok) {
619
+ return result.value;
620
+ }
621
+ console.error("Error getting bridgeable tokens:", result.error);
622
+ return [];
623
+ },
624
+ enabled: !!from && !!to && !!token
625
+ });
626
+ }
627
+ var SodaxProvider = ({ children, testnet = false, config, rpcConfig }) => {
628
+ const sodax = new Sodax(config);
629
+ return /* @__PURE__ */ React.createElement(SodaxContext.Provider, { value: { sodax, testnet, rpcConfig } }, children);
386
630
  };
387
631
  var getSpokeTokenAddressByVault = (spokeChainId, vault) => {
388
632
  const tokens = hubAssets[spokeChainId];
@@ -392,6 +636,6 @@ var getSpokeTokenAddressByVault = (spokeChainId, vault) => {
392
636
  return address;
393
637
  };
394
638
 
395
- export { SodaxProvider, getSpokeTokenAddressByVault, useBorrow, useCancelSwap, useEstimateGas, useHubProvider, useMMAllowance, useMMApprove, useQuote, useRepay, useReservesData, useSodaxContext, useSpokeProvider, useStatus, useSupply, useSwap, useSwapAllowance, useSwapApprove, useUserReservesData, useWithdraw };
639
+ export { SodaxProvider, getSpokeTokenAddressByVault, useBackendAllMoneyMarketAssets, useBackendAllMoneyMarketBorrowers, useBackendIntentByHash, useBackendIntentByTxHash, useBackendMoneyMarketAsset, useBackendMoneyMarketAssetBorrowers, useBackendMoneyMarketAssetSuppliers, useBackendMoneyMarketPosition, useBackendOrderbook, useBorrow, useBridge, useBridgeAllowance, useBridgeApprove, useCancelSwap, useDeriveUserWalletAddress, useEstimateGas, useGetBridgeableAmount, useGetBridgeableTokens, useHubProvider, useMMAllowance, useMMApprove, useQuote, useRepay, useReservesData, useSodaxContext, useSpokeProvider, useStatus, useSupply, useSwap, useSwapAllowance, useSwapApprove, useUserReservesData, useWithdraw };
396
640
  //# sourceMappingURL=index.mjs.map
397
641
  //# sourceMappingURL=index.mjs.map