import { BigNumber as BN, providers, Wallet, Contract, utils, BigNumberish } from 'ethers';
import { GasConfiguration } from '../types';
export declare class CoverageV3 {
    chainID: number;
    walletOrProviderOrSigner: Wallet | providers.JsonRpcSigner | providers.Provider;
    solaceCoverProduct: Contract;
    constructor(chainID: number, walletOrProviderOrSigner?: Wallet | providers.JsonRpcSigner | providers.Provider);
    /*****************************************************************
    METHODS - SOLACECOVERPRODUCTV3 EXTERNAL MUTATOR FUNCTION WRAPPERS
    *****************************************************************/
    /**
     * @notice Purchases policy for provided `_user`.
     * @param _user The policy owner.
     * @param _coverLimit The maximum value to cover in **USD**.
     * @param _token The token to deposit.
     * @param _amount Amount of token to deposit.
     * @return policyID The ID of the newly minted policy.
    */
    purchaseWithStable(_user: string, _coverLimit: BigNumberish, _token: string, _amount: BigNumberish, gasConfig?: GasConfiguration): Promise<providers.TransactionResponse>;
    /**
     * @notice Purchases policy for the user.
     * @param _user The policy owner.
     * @param _coverLimit The maximum value to cover in **USD**.
     * @param _token The token to deposit.
     * @param _amount Amount of token to deposit.
     * @param _price The `SOLACE` price in wei(usd).
     * @param _priceDeadline The `SOLACE` price in wei(usd).
     * @param _signature The `SOLACE` price signature.
     * @return policyID The ID of the newly minted policy.
     */
    purchaseWithNonStable(_user: string, _coverLimit: BigNumberish, _token: string, _amount: BigNumberish, _price: BigNumberish, _priceDeadline: BigNumberish, _signature: utils.BytesLike, gasConfig?: GasConfiguration): Promise<providers.TransactionResponse>;
    /**
     * @notice Activates policy for provided _user.
     * @param _users Array of intended policy owners.
     * @param _coverLimits Array of intended maximum values to cover in **USD**.
     * @return policyID The ID of the newly minted policy.
     */
    purchase(_user: string, _coverLimit: BigNumberish, gasConfig?: GasConfiguration): Promise<providers.TransactionResponse>;
    /**
     * @notice Cancels the policy for `policyholder`.
     * @param _premium The premium amount to verify.
     * @param _deadline The deadline for the signature.
     * @param _signature The premium data signature.
     */
    cancel(_premium: BigNumberish, _deadline: BigNumberish, _signature: utils.BytesLike, gasConfig?: GasConfiguration): Promise<providers.TransactionResponse>;
    /**************************************************************
    METHODS - SOLACECOVERPRODUCTV3 EXTERNAL VIEW FUNCTION WRAPPERS
    **************************************************************/
    /**
     * @returns The active cover limit in **USD** to 18 decimal places. In other words, the total cover that has been sold at the current time.
     */
    activeCoverLimit(): Promise<BN>;
    /**
     * @returns The amount of available remaining capacity for new cover.
     */
    availableCoverCapacity(): Promise<BN>;
    /**
     * @returns The maximum amount of cover that can be sold in **USD** to 18 decimals places.
     */
    maxCover(): Promise<BN>;
    /**
     * @param policyID The policy ID.
     * @returns True if policy is active. False if policy is inactive, or does not exist.
     */
    policyStatus(policyID: BigNumberish): Promise<boolean>;
    /**
     * @param coverLimit Cover limit.
     * @returns The minimum required account balance for a given cover limit. Equals the maximum chargeable fee for one epoch.
     */
    minRequiredAccountBalance(coverLimit: BN): Promise<BN>;
    /**
     * @notice Calculates the minimum amount of Solace Cover Dollars required by this contract for the account to hold.
     * @param policyholder The account to query.
     * @return amount The amount of SCD the account must hold.
     */
    minScpRequired(policyholder: string): Promise<BN>;
    /**
     * @notice Returns the Uniform Resource Identifier (URI) for `policyID`.
     * @param policyID The policy ID.
     */
    tokenURI(policyID: BigNumberish): Promise<string>;
    /**********************************************
    METHODS - SOLACECOVERPRODUCTV3 GETTER FUNCTION
    **********************************************/
    /**
     * @returns true if paused, false otherwise
     */
    paused(): Promise<boolean>;
    /**
     * @returns The total supply of policies (amount of policies that have been purchased, includes inactive policies).
     */
    totalSupply(): Promise<BN>;
    /**
     * @returns Maximum epoch duration over which premiums are charged (Default is one week).
     */
    chargeCycle(): Promise<BN>;
    /**
     * @returns The latest premium charged timestamp.
     */
    latestChargedTime(): Promise<BN>;
    /**
     * @param policyID The policy ID.
     * @returns The cover limit for the given policy ID.
     */
    coverLimitOf(policyID: BigNumberish): Promise<BN>;
    /**
     * @param policyholder The policyholder address.
     * @returns policyID The policy ID.
     */
    policyOf(policyholder: string): Promise<BN>;
}
