import { AccountAuthenticator, AccountInfo, AdapterWallet, AnyRawTransaction, InputTransactionData, NetworkInfo, AptosSignMessageInput, AptosSignMessageOutput, AdapterNotDetectedWallet, Network, AptosChangeNetworkOutput, PendingTransactionResponse, InputSubmitTransactionData, AvailableWallets } from '@aptos-labs/wallet-adapter-core';
import { Ref, ComputedRef } from 'vue';

export interface WalletContextState {
    connected: ComputedRef<boolean>;
    isLoading: ComputedRef<boolean>;
    account: ComputedRef<AccountInfo | null>;
    network: ComputedRef<NetworkInfo | null>;
    wallet: ComputedRef<AdapterWallet | null>;
    wallets?: Ref<ReadonlyArray<AdapterWallet>>;
    notDetectedWallets?: Ref<ReadonlyArray<AdapterNotDetectedWallet>>;
    autoConnect: Ref<boolean>;
    connect(walletName: string): void;
    disconnect(): void;
    signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;
    signTransaction(transactionOrPayload: AnyRawTransaction | InputTransactionData, asFeePayer?: boolean): Promise<{
        authenticator: AccountAuthenticator;
        rawTransaction: Uint8Array;
    }>;
    submitTransaction(transaction: InputSubmitTransactionData): Promise<PendingTransactionResponse>;
    signMessage(message: AptosSignMessageInput): Promise<AptosSignMessageOutput>;
    signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean>;
    changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;
}
export interface AptosWalletProviderProps {
    disableTelemetry?: boolean;
    optInWallets?: ReadonlyArray<AvailableWallets>;
    dappConfig?: {
        network: Network;
    };
    onError?: (error: any) => void;
}
/**
 *
 * @param {AptosWalletProviderProps} props - Optional object with properties for
 * configuring the wallet adapter.
 * @return {WalletContextState}
 */
export declare function useWallet(props?: AptosWalletProviderProps): WalletContextState;
