import { ILendingPool } from '../../contract-types';
import IERC20ServiceInterface from '../../interfaces/ERC20';
import SynthetixInterface from '../../interfaces/Synthetix';
import LendingPoolInterface from '../../interfaces/v2/LendingPool';
import { Configuration, SmartBCHTransactionTypeExtended, LendingPoolMarketConfig } from '../../types';
import { LPBorrowParamsType, LPDepositParamsType, LPLiquidationCall, LPRepayParamsType, LPRepayWithCollateral, LPSetUsageAsCollateral, LPSwapBorrowRateMode, LPSwapCollateral, LPWithdrawParamsType, LPFlashLiquidation } from '../../types/LendingPoolMethodTypes';
import WBCHGatewayInterface from '../../interfaces/WBCHGateway';
import LiquiditySwapAdapterInterface from '../../interfaces/LiquiditySwapAdapterParaswap';
import RepayWithCollateralAdapterInterface from '../../interfaces/RepayWithCollateralAdapter';
import BaseService from '../BaseService';
export default class LendingPool extends BaseService<ILendingPool> implements LendingPoolInterface {
    readonly market: string;
    readonly erc20Service: IERC20ServiceInterface;
    readonly lendingPoolAddress: string;
    readonly synthetixService: SynthetixInterface;
    readonly WBCHGatewayService: WBCHGatewayInterface;
    readonly liquiditySwapAdapterService: LiquiditySwapAdapterInterface;
    readonly repayWithCollateralAdapterService: RepayWithCollateralAdapterInterface;
    readonly lendingPoolConfig: LendingPoolMarketConfig | undefined;
    readonly flashLiquidationAddress: string;
    readonly swapCollateralAddress: string;
    readonly repayWithCollateralAddress: string;
    constructor(config: Configuration, erc20Service: IERC20ServiceInterface, synthetixService: SynthetixInterface, WBCHGatewayService: WBCHGatewayInterface, liquiditySwapAdapterService: LiquiditySwapAdapterInterface, repayWithCollateralAdapterService: RepayWithCollateralAdapterInterface, market: string, lendingPoolConfig: LendingPoolMarketConfig | undefined);
    deposit({ user, reserve, amount, onBehalfOf, referralCode }: LPDepositParamsType): Promise<SmartBCHTransactionTypeExtended[]>;
    withdraw({ user, reserve, amount, onBehalfOf, aTokenAddress }: LPWithdrawParamsType): Promise<SmartBCHTransactionTypeExtended[]>;
    borrow({ user, reserve, amount, interestRateMode, debtTokenAddress, onBehalfOf, referralCode, }: LPBorrowParamsType): Promise<SmartBCHTransactionTypeExtended[]>;
    repay({ user, reserve, amount, interestRateMode, onBehalfOf }: LPRepayParamsType): Promise<SmartBCHTransactionTypeExtended[]>;
    swapBorrowRateMode({ user, reserve, interestRateMode }: LPSwapBorrowRateMode): Promise<SmartBCHTransactionTypeExtended[]>;
    setUsageAsCollateral({ user, reserve, usageAsCollateral }: LPSetUsageAsCollateral): Promise<SmartBCHTransactionTypeExtended[]>;
    liquidationCall({ liquidator, liquidatedUser, debtReserve, collateralReserve, purchaseAmount, getAToken, liquidateAll, }: LPLiquidationCall): Promise<SmartBCHTransactionTypeExtended[]>;
    swapCollateral({ user, flash, fromAsset, fromAToken, toAsset, fromAmount, minToAmount, permitSignature, swapAll, onBehalfOf, referralCode, augustus, swapCallData, }: LPSwapCollateral): Promise<SmartBCHTransactionTypeExtended[]>;
    repayWithCollateral({ user, fromAsset, fromAToken, assetToRepay, repayWithAmount, repayAmount, permitSignature, repayAllDebt, rateMode, onBehalfOf, referralCode, flash, useBchPath, }: LPRepayWithCollateral): Promise<SmartBCHTransactionTypeExtended[]>;
    flashLiquidation({ user, collateralAsset, borrowedAsset, debtTokenCover, liquidateAll, initiator, useBchPath, }: LPFlashLiquidation): Promise<SmartBCHTransactionTypeExtended[]>;
}
