import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, 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 BProtocolBammInterface extends utils.Interface {
    functions: {
        'A()': FunctionFragment;
        'LUSD()': FunctionFragment;
        'MAX_A()': FunctionFragment;
        'MAX_FEE()': FunctionFragment;
        'MIN_A()': FunctionFragment;
        'PRECISION()': FunctionFragment;
        'SP()': FunctionFragment;
        'add(uint256,uint256)': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'bonus()': FunctionFragment;
        'compensateForLusdDeviation(uint256)': FunctionFragment;
        'crops(address)': FunctionFragment;
        'dec()': FunctionFragment;
        'decimals()': FunctionFragment;
        'deposit(uint256)': FunctionFragment;
        'fee()': FunctionFragment;
        'feePool()': FunctionFragment;
        'fetchPrice()': FunctionFragment;
        'frontEndTag()': FunctionFragment;
        'gem()': FunctionFragment;
        'getConversionRate(address,address,uint256,uint256)': FunctionFragment;
        'getReturn(uint256,uint256,uint256,uint256)': FunctionFragment;
        'getSumFixedPoint(uint256,uint256,uint256)': FunctionFragment;
        'getSwapEthAmount(uint256)': FunctionFragment;
        'ilk()': FunctionFragment;
        'isOwner()': FunctionFragment;
        'lusd2UsdPriceAggregator()': FunctionFragment;
        'maxDiscount()': FunctionFragment;
        'mul(uint256,uint256)': FunctionFragment;
        'name()': FunctionFragment;
        'nav()': FunctionFragment;
        'nps()': FunctionFragment;
        'owner()': FunctionFragment;
        'priceAggregator()': FunctionFragment;
        'rdiv(uint256,uint256)': FunctionFragment;
        'rmul(uint256,uint256)': FunctionFragment;
        'rmulup(uint256,uint256)': FunctionFragment;
        'setParams(uint256,uint256)': FunctionFragment;
        'share()': FunctionFragment;
        'stake(address)': FunctionFragment;
        'stock()': FunctionFragment;
        'sub(uint256,uint256)': FunctionFragment;
        'swap(uint256,uint256,address)': FunctionFragment;
        'symbol()': FunctionFragment;
        'total()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'trade(address,uint256,address,address,uint256,bool)': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'vat()': FunctionFragment;
        'wdiv(uint256,uint256)': FunctionFragment;
        'wdivup(uint256,uint256)': FunctionFragment;
        'withdraw(uint256)': FunctionFragment;
        'wmul(uint256,uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'A' | 'LUSD' | 'MAX_A' | 'MAX_FEE' | 'MIN_A' | 'PRECISION' | 'SP' | 'add' | 'balanceOf' | 'bonus' | 'compensateForLusdDeviation' | 'crops' | 'dec' | 'decimals' | 'deposit' | 'fee' | 'feePool' | 'fetchPrice' | 'frontEndTag' | 'gem' | 'getConversionRate' | 'getReturn' | 'getSumFixedPoint' | 'getSwapEthAmount' | 'ilk' | 'isOwner' | 'lusd2UsdPriceAggregator' | 'maxDiscount' | 'mul' | 'name' | 'nav' | 'nps' | 'owner' | 'priceAggregator' | 'rdiv' | 'rmul' | 'rmulup' | 'setParams' | 'share' | 'stake' | 'stock' | 'sub' | 'swap' | 'symbol' | 'total' | 'totalSupply' | 'trade' | 'transferOwnership' | 'vat' | 'wdiv' | 'wdivup' | 'withdraw' | 'wmul'): FunctionFragment;
    encodeFunctionData(functionFragment: 'A', values?: undefined): string;
    encodeFunctionData(functionFragment: 'LUSD', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_A', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_FEE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MIN_A', values?: undefined): string;
    encodeFunctionData(functionFragment: 'PRECISION', values?: undefined): string;
    encodeFunctionData(functionFragment: 'SP', values?: undefined): string;
    encodeFunctionData(functionFragment: 'add', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'bonus', values?: undefined): string;
    encodeFunctionData(functionFragment: 'compensateForLusdDeviation', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'crops', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'dec', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'fee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'feePool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'fetchPrice', values?: undefined): string;
    encodeFunctionData(functionFragment: 'frontEndTag', values?: undefined): string;
    encodeFunctionData(functionFragment: 'gem', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getConversionRate', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'getReturn', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'getSumFixedPoint', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getSwapEthAmount', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'ilk', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isOwner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lusd2UsdPriceAggregator', values?: undefined): string;
    encodeFunctionData(functionFragment: 'maxDiscount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'mul', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'nav', values?: undefined): string;
    encodeFunctionData(functionFragment: 'nps', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'priceAggregator', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rdiv', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'rmul', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'rmulup', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setParams', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'share', values?: undefined): string;
    encodeFunctionData(functionFragment: 'stake', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'stock', values?: undefined): string;
    encodeFunctionData(functionFragment: 'sub', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'swap', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'total', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'trade', values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<boolean>
    ]): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'vat', values?: undefined): string;
    encodeFunctionData(functionFragment: 'wdiv', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'wdivup', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'wmul', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'A', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'LUSD', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_A', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_FEE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MIN_A', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'PRECISION', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'SP', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'add', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bonus', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'compensateForLusdDeviation', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'crops', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'dec', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'feePool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fetchPrice', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'frontEndTag', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'gem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getConversionRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getReturn', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getSumFixedPoint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getSwapEthAmount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ilk', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lusd2UsdPriceAggregator', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'maxDiscount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mul', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nav', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nps', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'priceAggregator', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rdiv', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rmul', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rmulup', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setParams', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'share', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'sub', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'swap', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'total', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'trade', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'vat', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'wdiv', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'wdivup', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'wmul', data: BytesLike): Result;
    events: {
        'Exit(uint256)': EventFragment;
        'Flee()': EventFragment;
        'Join(uint256)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'ParamsSet(uint256,uint256)': EventFragment;
        'RebalanceSwap(address,uint256,uint256,uint256)': EventFragment;
        'Tack(address,address,uint256)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
        'UserDeposit(address,uint256,uint256)': EventFragment;
        'UserWithdraw(address,uint256,uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Exit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Flee'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Join'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ParamsSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RebalanceSwap'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Tack'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UserDeposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UserWithdraw'): EventFragment;
}
export interface ExitEventObject {
    val: BigNumber;
}
export declare type ExitEvent = TypedEvent<[BigNumber], ExitEventObject>;
export declare type ExitEventFilter = TypedEventFilter<ExitEvent>;
export interface FleeEventObject {
}
export declare type FleeEvent = TypedEvent<[], FleeEventObject>;
export declare type FleeEventFilter = TypedEventFilter<FleeEvent>;
export interface JoinEventObject {
    val: BigNumber;
}
export declare type JoinEvent = TypedEvent<[BigNumber], JoinEventObject>;
export declare type JoinEventFilter = TypedEventFilter<JoinEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface ParamsSetEventObject {
    A: BigNumber;
    fee: BigNumber;
}
export declare type ParamsSetEvent = TypedEvent<[BigNumber, BigNumber], ParamsSetEventObject>;
export declare type ParamsSetEventFilter = TypedEventFilter<ParamsSetEvent>;
export interface RebalanceSwapEventObject {
    user: string;
    lusdAmount: BigNumber;
    ethAmount: BigNumber;
    timestamp: BigNumber;
}
export declare type RebalanceSwapEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], RebalanceSwapEventObject>;
export declare type RebalanceSwapEventFilter = TypedEventFilter<RebalanceSwapEvent>;
export interface TackEventObject {
    src: string;
    dst: string;
    wad: BigNumber;
}
export declare type TackEvent = TypedEvent<[string, string, BigNumber], TackEventObject>;
export declare type TackEventFilter = TypedEventFilter<TackEvent>;
export interface TransferEventObject {
    _from: string;
    _to: string;
    _value: BigNumber;
}
export declare type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>;
export declare type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface UserDepositEventObject {
    user: string;
    lusdAmount: BigNumber;
    numShares: BigNumber;
}
export declare type UserDepositEvent = TypedEvent<[string, BigNumber, BigNumber], UserDepositEventObject>;
export declare type UserDepositEventFilter = TypedEventFilter<UserDepositEvent>;
export interface UserWithdrawEventObject {
    user: string;
    lusdAmount: BigNumber;
    ethAmount: BigNumber;
    numShares: BigNumber;
}
export declare type UserWithdrawEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], UserWithdrawEventObject>;
export declare type UserWithdrawEventFilter = TypedEventFilter<UserWithdrawEvent>;
export interface BProtocolBamm extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: BProtocolBammInterface;
    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: {
        A(overrides?: CallOverrides): Promise<[BigNumber]>;
        LUSD(overrides?: CallOverrides): Promise<[string]>;
        MAX_A(overrides?: CallOverrides): Promise<[BigNumber]>;
        MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>;
        MIN_A(overrides?: CallOverrides): Promise<[BigNumber]>;
        PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>;
        SP(overrides?: CallOverrides): Promise<[string]>;
        add(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber] & {
            balance: BigNumber;
        }>;
        bonus(overrides?: CallOverrides): Promise<[string]>;
        compensateForLusdDeviation(ethAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            newEthAmount: BigNumber;
        }>;
        crops(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        dec(overrides?: CallOverrides): Promise<[BigNumber]>;
        decimals(overrides?: CallOverrides): Promise<[BigNumber]>;
        deposit(lusdAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        fee(overrides?: CallOverrides): Promise<[BigNumber]>;
        feePool(overrides?: CallOverrides): Promise<[string]>;
        fetchPrice(overrides?: CallOverrides): Promise<[BigNumber]>;
        frontEndTag(overrides?: CallOverrides): Promise<[string]>;
        gem(overrides?: CallOverrides): Promise<[string]>;
        getConversionRate(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, srcQty: PromiseOrValue<BigNumberish>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getReturn(xQty: PromiseOrValue<BigNumberish>, xBalance: PromiseOrValue<BigNumberish>, yBalance: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getSumFixedPoint(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getSwapEthAmount(lusdQty: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            ethAmount: BigNumber;
            feeLusdAmount: BigNumber;
        }>;
        ilk(overrides?: CallOverrides): Promise<[string]>;
        isOwner(overrides?: CallOverrides): Promise<[boolean]>;
        lusd2UsdPriceAggregator(overrides?: CallOverrides): Promise<[string]>;
        maxDiscount(overrides?: CallOverrides): Promise<[BigNumber]>;
        mul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        name(overrides?: CallOverrides): Promise<[string]>;
        nav(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        nps(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        priceAggregator(overrides?: CallOverrides): Promise<[string]>;
        rdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        rmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        rmulup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        setParams(_A: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        share(overrides?: CallOverrides): Promise<[BigNumber]>;
        stake(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        stock(overrides?: CallOverrides): Promise<[BigNumber]>;
        sub(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        swap(lusdAmount: PromiseOrValue<BigNumberish>, minEthReturn: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        total(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        trade(arg0: PromiseOrValue<string>, srcAmount: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<string>, destAddress: PromiseOrValue<string>, arg4: PromiseOrValue<BigNumberish>, arg5: PromiseOrValue<boolean>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        vat(overrides?: CallOverrides): Promise<[string]>;
        wdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        wdivup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
        withdraw(numShares: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        wmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            z: BigNumber;
        }>;
    };
    A(overrides?: CallOverrides): Promise<BigNumber>;
    LUSD(overrides?: CallOverrides): Promise<string>;
    MAX_A(overrides?: CallOverrides): Promise<BigNumber>;
    MAX_FEE(overrides?: CallOverrides): Promise<BigNumber>;
    MIN_A(overrides?: CallOverrides): Promise<BigNumber>;
    PRECISION(overrides?: CallOverrides): Promise<BigNumber>;
    SP(overrides?: CallOverrides): Promise<string>;
    add(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    bonus(overrides?: CallOverrides): Promise<string>;
    compensateForLusdDeviation(ethAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    crops(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    dec(overrides?: CallOverrides): Promise<BigNumber>;
    decimals(overrides?: CallOverrides): Promise<BigNumber>;
    deposit(lusdAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    fee(overrides?: CallOverrides): Promise<BigNumber>;
    feePool(overrides?: CallOverrides): Promise<string>;
    fetchPrice(overrides?: CallOverrides): Promise<BigNumber>;
    frontEndTag(overrides?: CallOverrides): Promise<string>;
    gem(overrides?: CallOverrides): Promise<string>;
    getConversionRate(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, srcQty: PromiseOrValue<BigNumberish>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getReturn(xQty: PromiseOrValue<BigNumberish>, xBalance: PromiseOrValue<BigNumberish>, yBalance: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getSumFixedPoint(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getSwapEthAmount(lusdQty: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        ethAmount: BigNumber;
        feeLusdAmount: BigNumber;
    }>;
    ilk(overrides?: CallOverrides): Promise<string>;
    isOwner(overrides?: CallOverrides): Promise<boolean>;
    lusd2UsdPriceAggregator(overrides?: CallOverrides): Promise<string>;
    maxDiscount(overrides?: CallOverrides): Promise<BigNumber>;
    mul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    name(overrides?: CallOverrides): Promise<string>;
    nav(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    nps(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    owner(overrides?: CallOverrides): Promise<string>;
    priceAggregator(overrides?: CallOverrides): Promise<string>;
    rdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    rmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    rmulup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    setParams(_A: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    share(overrides?: CallOverrides): Promise<BigNumber>;
    stake(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    stock(overrides?: CallOverrides): Promise<BigNumber>;
    sub(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    swap(lusdAmount: PromiseOrValue<BigNumberish>, minEthReturn: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    symbol(overrides?: CallOverrides): Promise<string>;
    total(overrides?: CallOverrides): Promise<BigNumber>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    trade(arg0: PromiseOrValue<string>, srcAmount: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<string>, destAddress: PromiseOrValue<string>, arg4: PromiseOrValue<BigNumberish>, arg5: PromiseOrValue<boolean>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    vat(overrides?: CallOverrides): Promise<string>;
    wdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    wdivup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    withdraw(numShares: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    wmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    callStatic: {
        A(overrides?: CallOverrides): Promise<BigNumber>;
        LUSD(overrides?: CallOverrides): Promise<string>;
        MAX_A(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_FEE(overrides?: CallOverrides): Promise<BigNumber>;
        MIN_A(overrides?: CallOverrides): Promise<BigNumber>;
        PRECISION(overrides?: CallOverrides): Promise<BigNumber>;
        SP(overrides?: CallOverrides): Promise<string>;
        add(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        bonus(overrides?: CallOverrides): Promise<string>;
        compensateForLusdDeviation(ethAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        crops(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        dec(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(lusdAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        fee(overrides?: CallOverrides): Promise<BigNumber>;
        feePool(overrides?: CallOverrides): Promise<string>;
        fetchPrice(overrides?: CallOverrides): Promise<BigNumber>;
        frontEndTag(overrides?: CallOverrides): Promise<string>;
        gem(overrides?: CallOverrides): Promise<string>;
        getConversionRate(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, srcQty: PromiseOrValue<BigNumberish>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getReturn(xQty: PromiseOrValue<BigNumberish>, xBalance: PromiseOrValue<BigNumberish>, yBalance: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getSumFixedPoint(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getSwapEthAmount(lusdQty: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            ethAmount: BigNumber;
            feeLusdAmount: BigNumber;
        }>;
        ilk(overrides?: CallOverrides): Promise<string>;
        isOwner(overrides?: CallOverrides): Promise<boolean>;
        lusd2UsdPriceAggregator(overrides?: CallOverrides): Promise<string>;
        maxDiscount(overrides?: CallOverrides): Promise<BigNumber>;
        mul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<string>;
        nav(overrides?: CallOverrides): Promise<BigNumber>;
        nps(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        priceAggregator(overrides?: CallOverrides): Promise<string>;
        rdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rmulup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        setParams(_A: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        share(overrides?: CallOverrides): Promise<BigNumber>;
        stake(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stock(overrides?: CallOverrides): Promise<BigNumber>;
        sub(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        swap(lusdAmount: PromiseOrValue<BigNumberish>, minEthReturn: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<string>;
        total(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        trade(arg0: PromiseOrValue<string>, srcAmount: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<string>, destAddress: PromiseOrValue<string>, arg4: PromiseOrValue<BigNumberish>, arg5: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<boolean>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        vat(overrides?: CallOverrides): Promise<string>;
        wdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        wdivup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(numShares: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        wmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        'Exit(uint256)'(val?: null): ExitEventFilter;
        Exit(val?: null): ExitEventFilter;
        'Flee()'(): FleeEventFilter;
        Flee(): FleeEventFilter;
        'Join(uint256)'(val?: null): JoinEventFilter;
        Join(val?: null): JoinEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'ParamsSet(uint256,uint256)'(A?: null, fee?: null): ParamsSetEventFilter;
        ParamsSet(A?: null, fee?: null): ParamsSetEventFilter;
        'RebalanceSwap(address,uint256,uint256,uint256)'(user?: PromiseOrValue<string> | null, lusdAmount?: null, ethAmount?: null, timestamp?: null): RebalanceSwapEventFilter;
        RebalanceSwap(user?: PromiseOrValue<string> | null, lusdAmount?: null, ethAmount?: null, timestamp?: null): RebalanceSwapEventFilter;
        'Tack(address,address,uint256)'(src?: PromiseOrValue<string> | null, dst?: PromiseOrValue<string> | null, wad?: null): TackEventFilter;
        Tack(src?: PromiseOrValue<string> | null, dst?: PromiseOrValue<string> | null, wad?: null): TackEventFilter;
        'Transfer(address,address,uint256)'(_from?: PromiseOrValue<string> | null, _to?: PromiseOrValue<string> | null, _value?: null): TransferEventFilter;
        Transfer(_from?: PromiseOrValue<string> | null, _to?: PromiseOrValue<string> | null, _value?: null): TransferEventFilter;
        'UserDeposit(address,uint256,uint256)'(user?: PromiseOrValue<string> | null, lusdAmount?: null, numShares?: null): UserDepositEventFilter;
        UserDeposit(user?: PromiseOrValue<string> | null, lusdAmount?: null, numShares?: null): UserDepositEventFilter;
        'UserWithdraw(address,uint256,uint256,uint256)'(user?: PromiseOrValue<string> | null, lusdAmount?: null, ethAmount?: null, numShares?: null): UserWithdrawEventFilter;
        UserWithdraw(user?: PromiseOrValue<string> | null, lusdAmount?: null, ethAmount?: null, numShares?: null): UserWithdrawEventFilter;
    };
    estimateGas: {
        A(overrides?: CallOverrides): Promise<BigNumber>;
        LUSD(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_A(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_FEE(overrides?: CallOverrides): Promise<BigNumber>;
        MIN_A(overrides?: CallOverrides): Promise<BigNumber>;
        PRECISION(overrides?: CallOverrides): Promise<BigNumber>;
        SP(overrides?: CallOverrides): Promise<BigNumber>;
        add(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        bonus(overrides?: CallOverrides): Promise<BigNumber>;
        compensateForLusdDeviation(ethAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        crops(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        dec(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(lusdAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        fee(overrides?: CallOverrides): Promise<BigNumber>;
        feePool(overrides?: CallOverrides): Promise<BigNumber>;
        fetchPrice(overrides?: CallOverrides): Promise<BigNumber>;
        frontEndTag(overrides?: CallOverrides): Promise<BigNumber>;
        gem(overrides?: CallOverrides): Promise<BigNumber>;
        getConversionRate(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, srcQty: PromiseOrValue<BigNumberish>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getReturn(xQty: PromiseOrValue<BigNumberish>, xBalance: PromiseOrValue<BigNumberish>, yBalance: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getSumFixedPoint(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getSwapEthAmount(lusdQty: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        ilk(overrides?: CallOverrides): Promise<BigNumber>;
        isOwner(overrides?: CallOverrides): Promise<BigNumber>;
        lusd2UsdPriceAggregator(overrides?: CallOverrides): Promise<BigNumber>;
        maxDiscount(overrides?: CallOverrides): Promise<BigNumber>;
        mul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        nav(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        nps(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        priceAggregator(overrides?: CallOverrides): Promise<BigNumber>;
        rdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rmulup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        setParams(_A: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        share(overrides?: CallOverrides): Promise<BigNumber>;
        stake(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stock(overrides?: CallOverrides): Promise<BigNumber>;
        sub(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        swap(lusdAmount: PromiseOrValue<BigNumberish>, minEthReturn: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        total(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        trade(arg0: PromiseOrValue<string>, srcAmount: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<string>, destAddress: PromiseOrValue<string>, arg4: PromiseOrValue<BigNumberish>, arg5: PromiseOrValue<boolean>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        vat(overrides?: CallOverrides): Promise<BigNumber>;
        wdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        wdivup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(numShares: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        wmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        A(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LUSD(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_A(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_FEE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MIN_A(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        PRECISION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        SP(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        add(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bonus(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        compensateForLusdDeviation(ethAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        crops(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        dec(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deposit(lusdAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        fee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        feePool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fetchPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        frontEndTag(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        gem(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getConversionRate(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, srcQty: PromiseOrValue<BigNumberish>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getReturn(xQty: PromiseOrValue<BigNumberish>, xBalance: PromiseOrValue<BigNumberish>, yBalance: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSumFixedPoint(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, A: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSwapEthAmount(lusdQty: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ilk(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lusd2UsdPriceAggregator(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxDiscount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nav(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        nps(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        priceAggregator(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rmulup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setParams(_A: PromiseOrValue<BigNumberish>, _fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        share(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stake(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        sub(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        swap(lusdAmount: PromiseOrValue<BigNumberish>, minEthReturn: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        total(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        trade(arg0: PromiseOrValue<string>, srcAmount: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<string>, destAddress: PromiseOrValue<string>, arg4: PromiseOrValue<BigNumberish>, arg5: PromiseOrValue<boolean>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        vat(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        wdiv(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        wdivup(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(numShares: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        wmul(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
