import { Contract } from "@ethersproject/contracts";
import { JsonRpcSigner } from "@ethersproject/providers";
import { BigNumber } from "bignumber.js";
import { Address } from "./types";
export declare abstract class VaultContract {
    protected contract: Contract;
    protected static get abi(): string[];
    constructor(contract: Contract);
    abstract pricePerShare(): Promise<BigNumber>;
    decimals(): Promise<BigNumber>;
    token(): Promise<Address>;
    encodeDeposit: (amount: string) => string;
    encodeWithdraw: (amount: string) => string;
}
export declare class PickleJarContract extends VaultContract {
    private static get pickleJarAbi();
    constructor(jarAddress: Address, signer: JsonRpcSigner);
    pricePerShare(): Promise<BigNumber>;
}
export declare class YearnVaultContract extends VaultContract {
    private static get yearnVaultAbi();
    constructor(jarAddress: Address, signer: JsonRpcSigner);
    pricePerShare(): Promise<BigNumber>;
}
