import * as _txnlab_use_wallet from '@txnlab/use-wallet';
import { WalletManager, NetworkId, AlgodConfig, WalletId, WalletMetadata, WalletAccount } from '@txnlab/use-wallet';
export * from '@txnlab/use-wallet';
import algosdk from 'algosdk';
import * as React from 'react';

interface WalletProviderProps {
    manager: WalletManager;
    children: React.ReactNode;
}
declare const WalletProvider: ({ manager, children }: WalletProviderProps) => JSX.Element;
declare const useNetwork: () => {
    activeNetwork: string;
    networkConfig: Record<string, _txnlab_use_wallet.NetworkConfig>;
    activeNetworkConfig: _txnlab_use_wallet.NetworkConfig;
    setActiveNetwork: (networkId: NetworkId | string) => Promise<void>;
    updateAlgodConfig: (networkId: string, config: Partial<AlgodConfig>) => void;
    resetNetworkConfig: (networkId: string) => void;
};
interface Wallet {
    id: WalletId;
    metadata: WalletMetadata;
    accounts: WalletAccount[];
    activeAccount: WalletAccount | null;
    isConnected: boolean;
    isActive: boolean;
    connect: (args?: Record<string, any>) => Promise<WalletAccount[]>;
    disconnect: () => Promise<void>;
    setActive: () => void;
    setActiveAccount: (address: string) => void;
}
declare const useWallet: () => {
    wallets: Wallet[];
    isReady: boolean;
    algodClient: algosdk.Algodv2;
    setAlgodClient: React.Dispatch<React.SetStateAction<algosdk.Algodv2>>;
    activeWallet: Wallet | null;
    activeWalletAccounts: WalletAccount[] | null;
    activeWalletAddresses: string[] | null;
    activeAccount: WalletAccount | null;
    activeAddress: string | null;
    signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
    transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
};

export { type Wallet, WalletProvider, useNetwork, useWallet };
