import { ethers } from "ethers";
/**
 * Contract Provider for handling contract instances with caching
 */
export declare class ContractProvider {
    private provider;
    private signer?;
    private vaultTypeClient;
    private vaultCache;
    /**
     * Creates a new ContractProvider instance
     * @param provider Ethereum provider
     * @param signer Optional signer for transactions
     */
    constructor(provider: ethers.Provider, signer?: ethers.Signer);
    /**
     * Clear the cache for a specific vault or all vaults
     * @param vaultAddress Optional address of the vault to clear from cache
     */
    clearCache(vaultAddress?: string): void;
    /**
     * Get the ERC20 Byzantine vault contract instance
     * @param vaultAddress The address of the ERC20 vault
     * @returns The ERC20 contract instance
     */
    getByzVaultContract(vaultAddress: string): ethers.Contract;
    /**
     * Get the SuperVault contract instance
     * @param vaultAddress The address of the SuperVault
     * @returns The SuperVault contract instance
     */
    getSuperVaultContract(vaultAddress: string): ethers.Contract;
    /**
     * Get the Symbiotic Vault contract instance
     * @param vaultAddress The address of the Symbiotic vault or SuperVault
     * @returns The Vault contract instance
     */
    getSymVaultContract(vaultAddress: string): Promise<ethers.Contract>;
    /**
     * Get the sym vault address of a Symbiotic vault
     * @param vaultAddress The address of the vault
     * @returns The sym vault address
     */
    getSymVaultAddress(vaultAddress: string): Promise<string>;
    /**
     * Get the Delegator contract instance
     * @param vaultAddress The address of the vault
     * @returns The Delegator contract instance
     */
    getDelegatorContract(vaultAddress: string): Promise<ethers.Contract>;
    /**
     * Get the delegator address for a vault
     * @param vaultAddress The address of the vault
     * @returns The delegator address
     */
    getDelegatorAddress(vaultAddress: string): Promise<string>;
    /**
     * Get the Burner contract instance
     * @param vaultAddress The address of the vault
     * @returns The Burner contract instance
     */
    getBurnerContract(vaultAddress: string): Promise<ethers.Contract>;
    /**
     * Get the burner address for a vault
     * @param vaultAddress The address of the vault
     * @returns The burner address
     */
    getBurnerAddress(vaultAddress: string): Promise<string>;
    /**
     * Get the Slasher contract instance
     * @param vaultAddress The address of the vault
     * @returns The Slasher contract instance
     */
    getSlasherContract(vaultAddress: string): Promise<ethers.Contract>;
    /**
     * Get the slasher address for a vault
     * @param vaultAddress The address of the vault
     * @returns The slasher address
     */
    getSlasherAddress(vaultAddress: string): Promise<string>;
}
