import { Web3Manager } from '@explorins/pers-sdk/web3';
import type { TokenBalance, TokenBalanceRequest, TokenCollectionRequest, TokenCollection, TokenMetadata, AccountOwnedTokensResult } from '@explorins/pers-sdk/web3';
import type { TokenDTO } from '@explorins/pers-sdk/token';
type ChainData = Awaited<ReturnType<Web3Manager['getChainDataById']>>;
export type { AccountOwnedTokensResult } from '@explorins/pers-sdk/web3';
/**
 * React hook for Web3 operations in the PERS SDK
 *
 * Provides comprehensive Web3 functionality including token balance queries,
 * metadata retrieval, collection management, IPFS resolution, and blockchain
 * explorer integration. Supports multi-chain operations.
 *
 * Note: Wallet addresses should be obtained from `user.wallets` via `usePersSDK()`.
 *
 * @returns Web3 hook with methods for blockchain operations
 *
 * @example
 * ```typescript
 * function Web3Component() {
 *   const { user } = usePersSDK();
 *   const { getTokenBalance, getTokenMetadata } = useWeb3();
 *
 *   // Get wallet address from user
 *   const walletAddress = user?.wallets?.[0]?.address;
 *
 *   const loadTokenData = async () => {
 *     if (!walletAddress) {
 *       console.log('No wallet connected');
 *       return;
 *     }
 *
 *     const balance = await getTokenBalance({
 *       walletAddress,
 *       contractAddress: '0x123...',
 *       chainId: 1
 *     });
 *
 *     console.log('Token balance:', balance);
 *   };
 *
 *   return (
 *     <View>
 *       {walletAddress ? (
 *         <View>
 *           <Text>Wallet: {walletAddress}</Text>
 *           <Button onPress={loadTokenData} title="Load Tokens" />
 *         </View>
 *       ) : (
 *         <Text>No wallet connected</Text>
 *       )}
 *     </View>
 *   );
 * }
 * ```
 */
export declare const useWeb3: () => {
    getTokenBalance: (request: TokenBalanceRequest) => Promise<TokenBalance>;
    getTokenMetadata: (request: TokenBalanceRequest) => Promise<TokenMetadata | null>;
    getTokenCollection: (request: TokenCollectionRequest) => Promise<TokenCollection>;
    resolveIPFSUrl: (url: string) => Promise<string>;
    fetchAndProcessMetadata: (tokenUri: string) => Promise<TokenMetadata | null>;
    getChainDataById: (chainId: number) => Promise<ChainData>;
    getExplorerUrl: (chainId: number, address: string, type: 'address' | 'tx') => Promise<string>;
    extractTokenIds: (token: TokenDTO) => string[] | undefined;
    getAccountOwnedTokensFromContract: (accountAddress: string, token: TokenDTO, maxTokens?: number) => Promise<AccountOwnedTokensResult>;
    buildCollectionRequest: (accountAddress: string, token: TokenDTO, maxTokens?: number) => TokenCollectionRequest;
    isAvailable: boolean;
};
export type Web3Hook = ReturnType<typeof useWeb3>;
//# sourceMappingURL=useWeb3.d.ts.map