import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../common";
export interface HonzonInterface extends utils.Interface {
    functions: {
        "adjustLoan(address,int128,int128)": FunctionFragment;
        "closeLoanByDex(address,uint256)": FunctionFragment;
        "getCollateralParameters(address)": FunctionFragment;
        "getCurrentCollateralRatio(address,address)": FunctionFragment;
        "getDebitExchangeRate(address)": FunctionFragment;
        "getPosition(address,address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "adjustLoan" | "closeLoanByDex" | "getCollateralParameters" | "getCurrentCollateralRatio" | "getDebitExchangeRate" | "getPosition"): FunctionFragment;
    encodeFunctionData(functionFragment: "adjustLoan", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "closeLoanByDex", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "getCollateralParameters", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getCurrentCollateralRatio", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getDebitExchangeRate", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getPosition", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: "adjustLoan", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "closeLoanByDex", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getCollateralParameters", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getCurrentCollateralRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getDebitExchangeRate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPosition", data: BytesLike): Result;
    events: {
        "AdjustedLoan(address,address,int128,int128)": EventFragment;
        "ClosedLoanByDex(address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AdjustedLoan"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ClosedLoanByDex"): EventFragment;
}
export interface AdjustedLoanEventObject {
    sender: string;
    currencyId: string;
    collateralAdjustment: BigNumber;
    debitAdjustment: BigNumber;
}
export declare type AdjustedLoanEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber
], AdjustedLoanEventObject>;
export declare type AdjustedLoanEventFilter = TypedEventFilter<AdjustedLoanEvent>;
export interface ClosedLoanByDexEventObject {
    sender: string;
    currencyId: string;
}
export declare type ClosedLoanByDexEvent = TypedEvent<[
    string,
    string
], ClosedLoanByDexEventObject>;
export declare type ClosedLoanByDexEventFilter = TypedEventFilter<ClosedLoanByDexEvent>;
export interface Honzon extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: HonzonInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        adjustLoan(currencyId: PromiseOrValue<string>, collateralAdjustment: PromiseOrValue<BigNumberish>, debitAdjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        closeLoanByDex(currencyId: PromiseOrValue<string>, maxCollateralAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getCollateralParameters(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber[]]>;
        getCurrentCollateralRatio(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getDebitExchangeRate(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPosition(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    };
    adjustLoan(currencyId: PromiseOrValue<string>, collateralAdjustment: PromiseOrValue<BigNumberish>, debitAdjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    closeLoanByDex(currencyId: PromiseOrValue<string>, maxCollateralAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getCollateralParameters(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
    getCurrentCollateralRatio(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getDebitExchangeRate(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getPosition(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    callStatic: {
        adjustLoan(currencyId: PromiseOrValue<string>, collateralAdjustment: PromiseOrValue<BigNumberish>, debitAdjustment: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        closeLoanByDex(currencyId: PromiseOrValue<string>, maxCollateralAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        getCollateralParameters(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
        getCurrentCollateralRatio(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getDebitExchangeRate(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getPosition(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    };
    filters: {
        "AdjustedLoan(address,address,int128,int128)"(sender?: PromiseOrValue<string> | null, currencyId?: PromiseOrValue<string> | null, collateralAdjustment?: null, debitAdjustment?: null): AdjustedLoanEventFilter;
        AdjustedLoan(sender?: PromiseOrValue<string> | null, currencyId?: PromiseOrValue<string> | null, collateralAdjustment?: null, debitAdjustment?: null): AdjustedLoanEventFilter;
        "ClosedLoanByDex(address,address)"(sender?: PromiseOrValue<string> | null, currencyId?: PromiseOrValue<string> | null): ClosedLoanByDexEventFilter;
        ClosedLoanByDex(sender?: PromiseOrValue<string> | null, currencyId?: PromiseOrValue<string> | null): ClosedLoanByDexEventFilter;
    };
    estimateGas: {
        adjustLoan(currencyId: PromiseOrValue<string>, collateralAdjustment: PromiseOrValue<BigNumberish>, debitAdjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        closeLoanByDex(currencyId: PromiseOrValue<string>, maxCollateralAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getCollateralParameters(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getCurrentCollateralRatio(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getDebitExchangeRate(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getPosition(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        adjustLoan(currencyId: PromiseOrValue<string>, collateralAdjustment: PromiseOrValue<BigNumberish>, debitAdjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        closeLoanByDex(currencyId: PromiseOrValue<string>, maxCollateralAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getCollateralParameters(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getCurrentCollateralRatio(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getDebitExchangeRate(currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPosition(who: PromiseOrValue<string>, currencyId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
