import { ContractTransaction, providers, Signer } from "ethers";
import { SystemContractInstance } from "../SystemContractInstance";
import { TxOptions } from "../../types";
import { DAOVault, IDAOVault } from "../../ethers-contracts/DAOVault";
export declare class DAOVaultInstance extends SystemContractInstance<DAOVault> {
    constructor(signer: Signer | providers.Provider, address: string);
    /**
     * Constructor
     * @param signer ethers signer, basically the one who wants to sign the constitution hash.
     * @param signature signature of the constitution hash.
     * @param txOptions transaction options
     *
     * Constitution hash is retrieved from the DAOParameterStorage contract.
     * The name of this contract in the registry is "DAO_CONF_PARAMETER_STORAGE:DAO Token Holder".
     * This is the main storage for all constitution parameters.
     */
    signConstitution(signer: string, signature: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    depositNative(txOptions?: TxOptions): Promise<ContractTransaction>;
    depositERC20(tokenAddress: string, amount: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    depositNFT(tokenAddress: string, tokenId: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    authorizeBySBT(tokenAddress: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    withdrawNative(amount: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    withdrawERC20(tokenAddress: string, amount: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    withdrawNFT(tokenAddress: string, tokenId: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    revokeSBTAuthorization(tokenAddress: string, txOptions?: TxOptions): Promise<ContractTransaction>;
    getTimeLockInfo(user: string, tokenAddress: string): Promise<IDAOVault.TomeLockInfoStructOutput>;
    getUserConstitutionData(user: string): Promise<IDAOVault.ConstitutionDataInfoStructOutput>;
}
