import { ethers } from "ethers";
import { RestakingProtocol } from "../../types";
export declare class VaultTypeClient {
    private provider;
    constructor(provider: ethers.Provider);
    /**
     * Get the ERC20 contract instance
     * @param vaultAddress The address of the vault
     * @returns The ERC20 contract instance
     */
    private getContractWithSymABI;
    /**
     * Get the ERC20 contract instance with EigenLayer ABI
     * @param vaultAddress The address of the vault
     * @returns The ERC20 contract instance
     */
    private getContractWithEigenABI;
    /**
     * Get the ERC20 contract instance with SuperVault ABI
     * @param vaultAddress The address of the vault
     * @returns The ERC20 contract instance
     */
    private getContractWithSuperABI;
    /**
     * Check if a vault is a Symbiotic vault
     * @param vaultAddress The address of the vault to check
     * @returns True if the vault is a Symbiotic vault, false otherwise
     */
    isSymbioticVault(vaultAddress: string): Promise<boolean>;
    /**
     * Check if a vault is an EigenLayer vault
     * @param vaultAddress The address of the vault to check
     * @returns True if the vault is an EigenLayer vault, false otherwise
     */
    isEigenVault(vaultAddress: string): Promise<boolean>;
    /**
     * Check if a vault is a SuperVault
     * SuperVaults may have properties of both Symbiotic and EigenLayer vaults
     * @param vaultAddress The address of the vault to check
     * @returns True if the vault is a SuperVault, false otherwise
     */
    isSupervault(vaultAddress: string): Promise<boolean>;
    /**
     * Get the type of vault
     * @param vaultAddress The address of the vault to check
     * @returns The type of the vault as defined in RestakingProtocol
     */
    getVaultType(vaultAddress: string): Promise<RestakingProtocol | undefined>;
}
