import { BigNumber, Signer } from 'ethers';
import { Address, IERC721PoolFactory, SignerOrProvider, WrappedTransaction } from '../types';
import { ContractBase } from './ContractBase';
import { NonfungiblePool } from './NonfungiblePool';
/**
 * Factory used to find or create pools with ERC721 collateral.
 */
export declare class NonfungiblePoolFactory extends ContractBase implements IERC721PoolFactory {
    constructor(signerOrProvider: SignerOrProvider);
    /**
     * Creates a new collection pool allowing all tokenIds.
     * @param signer pool creator
     * @param nftAddress address of the ERC721 collateral token
     * @param quoteAddress address of the ERC20 quote token
     * @param interestRate initial interest rate, between 1%-10%, as WAD
     * @returns promise to transaction
     */
    deployCollectionPool(signer: Signer, nftAddress: Address, quoteAddress: Address, interestRate: BigNumber): Promise<WrappedTransaction>;
    /**
     * Creates a new subset pool whitelisting specific tokenIds.
     * @param signer pool creator
     * @param nftAddress address of the ERC721 collateral token
     * @param subset array of tokenIds to whitelist
     * @param quoteAddress address of the ERC20 quote token
     * @param interestRate initial interest rate, between 1%-10%, as WAD
     * @returns promise to transaction
     */
    deploySubsetPool(signer: Signer, nftAddress: Address, subset: Array<number>, quoteAddress: Address, interestRate: BigNumber): Promise<WrappedTransaction>;
    /**
     * Returns existing pool for two tokens.
     * @param collateralAddress token address
     * @param subset array of tokenIds for subset pool, empty array for collection pool
     * @param quoteAddress token address
     * @returns {@link NonfungiblePool} modeling desired pool
     */
    getPool(collateralAddress: Address, subset: Array<number>, quoteAddress: Address): Promise<NonfungiblePool>;
    /**
     * Returns existing pool.
     * @param poolAddress address of pool
     * @returns {@link NonfungiblePool} modeling desired pool
     */
    getPoolByAddress(poolAddress: Address): Promise<NonfungiblePool>;
    /**
     * Finds address of an existing pool.
     * @param collateralAddress token address
     * @param subset specifies tokenIds whitelisted in pool
     * @param quoteAddress token address
     * @returns address of the existing pool, or zero address if not found
     */
    getPoolAddress(collateralAddress: Address, subset: Array<number>, quoteAddress: Address): Promise<Address>;
}
