import { StaticJsonRpcProvider } from '@ethersproject/providers';
import { Network } from '../../types/network.interface';
import { Erc1155, Erc20, Erc4626, Erc721, Multicall } from './ethers';
declare type ContractOpts = {
    address: string;
    network: Network;
};
declare type NetworkProviderResolver = (network: Network) => StaticJsonRpcProvider;
export interface IContractFactory {
    erc1155(opts: ContractOpts): Erc1155;
    erc20(opts: ContractOpts): Erc20;
    erc4626(opts: ContractOpts): Erc4626;
    erc721(opts: ContractOpts): Erc721;
    multicall(opts: ContractOpts): Multicall;
}
export declare class ContractFactory implements IContractFactory {
    protected readonly networkProviderResolver: NetworkProviderResolver;
    constructor(networkProviderResolver: NetworkProviderResolver);
    erc1155({ address, network }: ContractOpts): Erc1155;
    erc20({ address, network }: ContractOpts): Erc20;
    erc4626({ address, network }: ContractOpts): Erc4626;
    erc721({ address, network }: ContractOpts): Erc721;
    multicall({ address, network }: ContractOpts): Multicall;
}
export type { Erc1155 } from './ethers';
export type { Erc20 } from './ethers';
export type { Erc4626 } from './ethers';
export type { Erc721 } from './ethers';
export type { Multicall } from './ethers';
