@silentswap/react 0.0.41
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 +48 -0
- package/dist/contexts/AssetsContext.d.ts +24 -0
- package/dist/contexts/AssetsContext.js +83 -0
- package/dist/contexts/BalancesContext.d.ts +28 -0
- package/dist/contexts/BalancesContext.js +533 -0
- package/dist/contexts/OrdersContext.d.ts +53 -0
- package/dist/contexts/OrdersContext.js +240 -0
- package/dist/contexts/PricesContext.d.ts +12 -0
- package/dist/contexts/PricesContext.js +109 -0
- package/dist/contexts/SilentSwapContext.d.ts +58 -0
- package/dist/contexts/SilentSwapContext.js +205 -0
- package/dist/hooks/silent/orderTrackingWebSocketManager.d.ts +48 -0
- package/dist/hooks/silent/orderTrackingWebSocketManager.js +284 -0
- package/dist/hooks/silent/solana-transaction.d.ts +60 -0
- package/dist/hooks/silent/solana-transaction.js +236 -0
- package/dist/hooks/silent/useAuth.d.ts +90 -0
- package/dist/hooks/silent/useAuth.js +269 -0
- package/dist/hooks/silent/useBridgeExecution.d.ts +39 -0
- package/dist/hooks/silent/useBridgeExecution.js +877 -0
- package/dist/hooks/silent/useOrderSigning.d.ts +34 -0
- package/dist/hooks/silent/useOrderSigning.js +133 -0
- package/dist/hooks/silent/useOrderTracking.d.ts +174 -0
- package/dist/hooks/silent/useOrderTracking.js +524 -0
- package/dist/hooks/silent/useQuoteCalculation.d.ts +50 -0
- package/dist/hooks/silent/useQuoteCalculation.js +331 -0
- package/dist/hooks/silent/useQuoteFetching.d.ts +18 -0
- package/dist/hooks/silent/useQuoteFetching.js +54 -0
- package/dist/hooks/silent/useRefund.d.ts +26 -0
- package/dist/hooks/silent/useRefund.js +134 -0
- package/dist/hooks/silent/useSilentClient.d.ts +16 -0
- package/dist/hooks/silent/useSilentClient.js +32 -0
- package/dist/hooks/silent/useSilentOrders.d.ts +174 -0
- package/dist/hooks/silent/useSilentOrders.js +73 -0
- package/dist/hooks/silent/useSilentQuote.d.ts +88 -0
- package/dist/hooks/silent/useSilentQuote.js +381 -0
- package/dist/hooks/silent/useWallet.d.ts +76 -0
- package/dist/hooks/silent/useWallet.js +203 -0
- package/dist/hooks/useAssetPrice.d.ts +8 -0
- package/dist/hooks/useAssetPrice.js +47 -0
- package/dist/hooks/useContacts.d.ts +52 -0
- package/dist/hooks/useContacts.js +259 -0
- package/dist/hooks/useEgressEstimates.d.ts +32 -0
- package/dist/hooks/useEgressEstimates.js +230 -0
- package/dist/hooks/useHiddenSwapFees.d.ts +22 -0
- package/dist/hooks/useHiddenSwapFees.js +81 -0
- package/dist/hooks/useOrderEstimates.d.ts +37 -0
- package/dist/hooks/useOrderEstimates.js +393 -0
- package/dist/hooks/useOutputAssetInfo.d.ts +12 -0
- package/dist/hooks/useOutputAssetInfo.js +38 -0
- package/dist/hooks/usePrices.d.ts +60 -0
- package/dist/hooks/usePrices.js +188 -0
- package/dist/hooks/useQuote.d.ts +73 -0
- package/dist/hooks/useQuote.js +507 -0
- package/dist/hooks/useResetSwapForm.d.ts +16 -0
- package/dist/hooks/useResetSwapForm.js +68 -0
- package/dist/hooks/useSlippageUsd.d.ts +11 -0
- package/dist/hooks/useSlippageUsd.js +19 -0
- package/dist/hooks/useSolanaAdapter.d.ts +15 -0
- package/dist/hooks/useSolanaAdapter.js +55 -0
- package/dist/hooks/useStatus.d.ts +25 -0
- package/dist/hooks/useStatus.js +60 -0
- package/dist/hooks/useSwap.d.ts +67 -0
- package/dist/hooks/useSwap.js +285 -0
- package/dist/hooks/useTransaction.d.ts +119 -0
- package/dist/hooks/useTransaction.js +353 -0
- package/dist/hooks/useTransactionAddress.d.ts +11 -0
- package/dist/hooks/useTransactionAddress.js +26 -0
- package/dist/hooks/useUsdValue.d.ts +7 -0
- package/dist/hooks/useUsdValue.js +19 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +41 -0
- package/dist/stories/SilentSwapOverview.stories.d.ts +10 -0
- package/dist/stories/SilentSwapOverview.stories.js +364 -0
- package/dist/stories/useAuth.stories.d.ts +6 -0
- package/dist/stories/useAuth.stories.js +55 -0
- package/dist/stories/useSilentClient.stories.d.ts +9 -0
- package/dist/stories/useSilentClient.stories.js +39 -0
- package/dist/stories/useSilentOrders.stories.d.ts +1 -0
- package/dist/stories/useSilentOrders.stories.js +1 -0
- package/dist/stories/useSilentQuote.stories.d.ts +6 -0
- package/dist/stories/useSilentQuote.stories.js +267 -0
- package/dist/stories/useTransaction.stories.d.ts +6 -0
- package/dist/stories/useTransaction.stories.js +121 -0
- package/dist/utils/formatters.d.ts +33 -0
- package/dist/utils/formatters.js +82 -0
- package/package.json +67 -0
package/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# @silentswap/react
|
|
2
|
+
|
|
3
|
+
React hooks and utilities for integrating with SilentSwap SDK.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bun add @silentswap/react @silentswap/sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { useSilentClient, useSilentOrders, useAuth } from '@silentswap/react';
|
|
15
|
+
|
|
16
|
+
function MyComponent() {
|
|
17
|
+
// Create client
|
|
18
|
+
const { client } = useSilentClient({
|
|
19
|
+
config: {
|
|
20
|
+
environment: 'MAINNET',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Use order operations
|
|
25
|
+
const { getQuote, createOrder, isLoading, error } = useSilentOrders({
|
|
26
|
+
client,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Use auth utilities
|
|
30
|
+
const { createSignInMessage, createEip712DocForOrder } = useAuth();
|
|
31
|
+
|
|
32
|
+
// ... your component logic
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Hooks
|
|
37
|
+
|
|
38
|
+
### `useSilentClient`
|
|
39
|
+
|
|
40
|
+
Creates and manages a SilentSwap client instance.
|
|
41
|
+
|
|
42
|
+
### `useSilentOrders`
|
|
43
|
+
|
|
44
|
+
Provides methods for order operations including quotes, authentication, and order creation.
|
|
45
|
+
|
|
46
|
+
### `useAuth`
|
|
47
|
+
|
|
48
|
+
Provides authentication utilities for sign-in messages and EIP-712 document creation.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type AssetInfo, type ChainInfo } from '@silentswap/sdk';
|
|
3
|
+
export type Chain = ChainInfo;
|
|
4
|
+
export type { ChainInfo };
|
|
5
|
+
export type AssetsContextType = {
|
|
6
|
+
assets: Record<string, AssetInfo>;
|
|
7
|
+
chains: Record<string, Chain>;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
getAsset: (caip19: string) => AssetInfo | undefined;
|
|
10
|
+
getFilteredAssets: (filter?: {
|
|
11
|
+
ingress?: boolean;
|
|
12
|
+
egress?: boolean;
|
|
13
|
+
}) => AssetInfo[];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Provider for asset and chain metadata from the SDK
|
|
17
|
+
*/
|
|
18
|
+
export declare const AssetsProvider: React.FC<{
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Hook to access asset and chain metadata
|
|
23
|
+
*/
|
|
24
|
+
export declare const useAssetsContext: () => AssetsContextType;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useState, useCallback, useMemo, useEffect } from 'react';
|
|
4
|
+
import { getAllAssetsArray, getAllChains } from '@silentswap/sdk';
|
|
5
|
+
const AssetsContext = createContext(undefined);
|
|
6
|
+
// Global assets store (similar to Svelte's data.ts)
|
|
7
|
+
let assetsStore = {};
|
|
8
|
+
let chainsStore = {};
|
|
9
|
+
let assetsLoaded = false;
|
|
10
|
+
/**
|
|
11
|
+
* Provider for asset and chain metadata from the SDK
|
|
12
|
+
*/
|
|
13
|
+
export const AssetsProvider = ({ children }) => {
|
|
14
|
+
const [assets, setAssets] = useState({});
|
|
15
|
+
const [chains, setChains] = useState({});
|
|
16
|
+
const [loading, setLoading] = useState(true);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const loadAssetsData = () => {
|
|
19
|
+
if (assetsLoaded) {
|
|
20
|
+
setAssets(assetsStore);
|
|
21
|
+
setChains(chainsStore);
|
|
22
|
+
setLoading(false);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
// Use SDK methods to get assets and chains
|
|
27
|
+
const allAssets = getAllAssetsArray();
|
|
28
|
+
const allChains = getAllChains();
|
|
29
|
+
// Convert to our format
|
|
30
|
+
const assetsMap = {};
|
|
31
|
+
allAssets.forEach((asset) => {
|
|
32
|
+
assetsMap[asset.caip19] = asset;
|
|
33
|
+
});
|
|
34
|
+
const chainsMap = {};
|
|
35
|
+
Object.entries(allChains).forEach(([caip2, chain]) => {
|
|
36
|
+
chainsMap[caip2] = chain;
|
|
37
|
+
});
|
|
38
|
+
// Store globally
|
|
39
|
+
assetsStore = assetsMap;
|
|
40
|
+
chainsStore = chainsMap;
|
|
41
|
+
assetsLoaded = true;
|
|
42
|
+
setAssets(assetsMap);
|
|
43
|
+
setChains(chainsMap);
|
|
44
|
+
setLoading(false);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('Failed to load assets:', error);
|
|
48
|
+
setLoading(false);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
loadAssetsData();
|
|
52
|
+
}, []);
|
|
53
|
+
const getAsset = useCallback((caip19) => {
|
|
54
|
+
return assets[caip19];
|
|
55
|
+
}, [assets]);
|
|
56
|
+
const getFilteredAssets = useCallback((filter) => {
|
|
57
|
+
let filteredAssets = Object.values(assets);
|
|
58
|
+
// Apply ingress filter (exclude blacklisted chains)
|
|
59
|
+
if (filter?.ingress) {
|
|
60
|
+
// For now, just return all - implement blacklist logic if needed
|
|
61
|
+
filteredAssets = filteredAssets;
|
|
62
|
+
}
|
|
63
|
+
return filteredAssets;
|
|
64
|
+
}, [assets]);
|
|
65
|
+
const value = useMemo(() => ({
|
|
66
|
+
assets,
|
|
67
|
+
chains,
|
|
68
|
+
loading,
|
|
69
|
+
getAsset,
|
|
70
|
+
getFilteredAssets,
|
|
71
|
+
}), [assets, chains, loading, getAsset, getFilteredAssets]);
|
|
72
|
+
return _jsx(AssetsContext.Provider, { value: value, children: children });
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Hook to access asset and chain metadata
|
|
76
|
+
*/
|
|
77
|
+
export const useAssetsContext = () => {
|
|
78
|
+
const context = useContext(AssetsContext);
|
|
79
|
+
if (context === undefined) {
|
|
80
|
+
throw new Error('useAssetsContext must be used within an AssetsProvider');
|
|
81
|
+
}
|
|
82
|
+
return context;
|
|
83
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type AssetInfo } from '@silentswap/sdk';
|
|
3
|
+
export type UserBalance = {
|
|
4
|
+
asset: AssetInfo;
|
|
5
|
+
balance: bigint;
|
|
6
|
+
usdValue: number;
|
|
7
|
+
};
|
|
8
|
+
export type BalancesContextType = {
|
|
9
|
+
balances: Record<string, UserBalance>;
|
|
10
|
+
loading: boolean;
|
|
11
|
+
totalUsdValue: number;
|
|
12
|
+
errors: Record<string, string>;
|
|
13
|
+
refetch: () => Promise<void>;
|
|
14
|
+
refetchChains: (chainIds: (number | 'solana')[]) => Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Provider for user balances across all supported chains
|
|
18
|
+
*/
|
|
19
|
+
export declare const BalancesProvider: React.FC<{
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
evmAddress?: string;
|
|
22
|
+
solAddress?: string;
|
|
23
|
+
solanaRpcUrl?: string;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Hook to access user balances
|
|
27
|
+
*/
|
|
28
|
+
export declare const useBalancesContext: () => BalancesContextType;
|