@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.
- package/README.md +83 -1
- package/dist/contexts/index.d.ts +1 -2
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/hooks/backend/index.d.ts +17 -0
- package/dist/hooks/backend/index.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendAllMoneyMarketAssets.d.ts +37 -0
- package/dist/hooks/backend/useBackendAllMoneyMarketAssets.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendAllMoneyMarketBorrowers.d.ts +45 -0
- package/dist/hooks/backend/useBackendAllMoneyMarketBorrowers.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendIntentByHash.d.ts +36 -0
- package/dist/hooks/backend/useBackendIntentByHash.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendIntentByTxHash.d.ts +35 -0
- package/dist/hooks/backend/useBackendIntentByTxHash.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendMoneyMarketAsset.d.ts +38 -0
- package/dist/hooks/backend/useBackendMoneyMarketAsset.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendMoneyMarketAssetBorrowers.d.ts +47 -0
- package/dist/hooks/backend/useBackendMoneyMarketAssetBorrowers.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendMoneyMarketAssetSuppliers.d.ts +47 -0
- package/dist/hooks/backend/useBackendMoneyMarketAssetSuppliers.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendMoneyMarketPosition.d.ts +37 -0
- package/dist/hooks/backend/useBackendMoneyMarketPosition.d.ts.map +1 -0
- package/dist/hooks/backend/useBackendOrderbook.d.ts +46 -0
- package/dist/hooks/backend/useBackendOrderbook.d.ts.map +1 -0
- package/dist/hooks/bridge/index.d.ts +6 -0
- package/dist/hooks/bridge/index.d.ts.map +1 -0
- package/dist/hooks/bridge/useBridge.d.ts +33 -0
- package/dist/hooks/bridge/useBridge.d.ts.map +1 -0
- package/dist/hooks/bridge/useBridgeAllowance.d.ts +23 -0
- package/dist/hooks/bridge/useBridgeAllowance.d.ts.map +1 -0
- package/dist/hooks/bridge/useBridgeApprove.d.ts +29 -0
- package/dist/hooks/bridge/useBridgeApprove.d.ts.map +1 -0
- package/dist/hooks/bridge/useGetBridgeableAmount.d.ts +26 -0
- package/dist/hooks/bridge/useGetBridgeableAmount.d.ts.map +1 -0
- package/dist/hooks/bridge/useGetBridgeableTokens.d.ts +37 -0
- package/dist/hooks/bridge/useGetBridgeableTokens.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/mm/useUserFormattedSummary.d.ts +1 -1
- package/dist/hooks/mm/useUserFormattedSummary.d.ts.map +1 -1
- package/dist/hooks/mm/useUserReservesData.d.ts +1 -1
- package/dist/hooks/mm/useUserReservesData.d.ts.map +1 -1
- package/dist/hooks/provider/useHubProvider.d.ts +1 -1
- package/dist/hooks/provider/useHubProvider.d.ts.map +1 -1
- package/dist/hooks/provider/useSpokeProvider.d.ts.map +1 -1
- package/dist/hooks/shared/index.d.ts +1 -0
- package/dist/hooks/shared/index.d.ts.map +1 -1
- package/dist/hooks/shared/useDeriveUserWalletAddress.d.ts +24 -0
- package/dist/hooks/shared/useDeriveUserWalletAddress.d.ts.map +1 -0
- package/dist/index.js +278 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +265 -21
- package/dist/index.mjs.map +1 -1
- package/dist/providers/SodaxProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/contexts/index.ts +1 -2
- package/src/hooks/backend/README.md +135 -0
- package/src/hooks/backend/index.ts +23 -0
- package/src/hooks/backend/useBackendAllMoneyMarketAssets.ts +49 -0
- package/src/hooks/backend/useBackendAllMoneyMarketBorrowers.ts +61 -0
- package/src/hooks/backend/useBackendIntentByHash.ts +53 -0
- package/src/hooks/backend/useBackendIntentByTxHash.ts +52 -0
- package/src/hooks/backend/useBackendMoneyMarketAsset.ts +57 -0
- package/src/hooks/backend/useBackendMoneyMarketAssetBorrowers.ts +67 -0
- package/src/hooks/backend/useBackendMoneyMarketAssetSuppliers.ts +67 -0
- package/src/hooks/backend/useBackendMoneyMarketPosition.ts +56 -0
- package/src/hooks/backend/useBackendOrderbook.ts +63 -0
- package/src/hooks/bridge/index.ts +5 -0
- package/src/hooks/bridge/useBridge.ts +57 -0
- package/src/hooks/bridge/useBridgeAllowance.ts +49 -0
- package/src/hooks/bridge/useBridgeApprove.ts +68 -0
- package/src/hooks/bridge/useGetBridgeableAmount.ts +50 -0
- package/src/hooks/bridge/useGetBridgeableTokens.ts +62 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/mm/useUserFormattedSummary.ts +1 -1
- package/src/hooks/mm/useUserReservesData.ts +1 -1
- package/src/hooks/provider/useHubProvider.ts +3 -3
- package/src/hooks/provider/useSpokeProvider.ts +10 -4
- package/src/hooks/shared/index.ts +1 -0
- package/src/hooks/shared/useDeriveUserWalletAddress.ts +44 -0
- 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,
|
|
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 {
|
|
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(
|
|
73
|
-
|
|
74
|
-
|
|
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
|
|
372
|
-
const sodax =
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
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
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|