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 declare namespace CLeverAMOBase {
    type LockBalanceStruct = {
        balance: PromiseOrValue<BigNumberish>;
        unlockAt: PromiseOrValue<BigNumberish>;
        _: PromiseOrValue<BigNumberish>;
    };
    type LockBalanceStructOutput = [BigNumber, BigNumber, BigNumber] & {
        balance: BigNumber;
        unlockAt: BigNumber;
        _: BigNumber;
    };
}
export interface AbcCvxInterface extends utils.Interface {
    functions: {
        'allowance(address,address)': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'baseToken()': FunctionFragment;
        'bountyPercentage()': FunctionFragment;
        'checkpoint()': FunctionFragment;
        'checkpointUser(address)': FunctionFragment;
        'claim(address,address)': FunctionFragment;
        'claimable(address)': FunctionFragment;
        'config()': FunctionFragment;
        'curveLpToken()': FunctionFragment;
        'curvePool()': FunctionFragment;
        'debtToken()': FunctionFragment;
        'decimals()': FunctionFragment;
        'decreaseAllowance(address,uint256)': FunctionFragment;
        'deposit(uint256,address)': FunctionFragment;
        'donate(uint256)': FunctionFragment;
        'furnace()': FunctionFragment;
        'getUserLocks(address)': FunctionFragment;
        'harvest(address,uint256)': FunctionFragment;
        'increaseAllowance(address,uint256)': FunctionFragment;
        'initialRatio()': FunctionFragment;
        'initialize(address,address,uint256,address[])': FunctionFragment;
        'lockPeriod()': FunctionFragment;
        'migrateStrategy(address)': FunctionFragment;
        'minimumDeposit()': FunctionFragment;
        'name()': FunctionFragment;
        'owner()': FunctionFragment;
        'pendingBaseToken()': FunctionFragment;
        'platform()': FunctionFragment;
        'platformPercentage()': FunctionFragment;
        'ratio()': FunctionFragment;
        'rebalance(uint256,uint256,uint256,uint256)': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'rewardPerShare(address)': FunctionFragment;
        'rewards(uint256)': FunctionFragment;
        'strategy()': FunctionFragment;
        'symbol()': FunctionFragment;
        'totalCurveLpToken()': FunctionFragment;
        'totalDebtToken()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'transfer(address,uint256)': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'unlock(uint256)': FunctionFragment;
        'updateAMOConfig(uint64,uint64,uint64,uint64)': FunctionFragment;
        'updateBountyPercentage(uint32)': FunctionFragment;
        'updateLockPeriod(uint256)': FunctionFragment;
        'updateMinimumDeposit(uint256)': FunctionFragment;
        'updatePlatformPercentage(address,uint32)': FunctionFragment;
        'updateZap(address)': FunctionFragment;
        'withdraw(uint256,address,uint256,uint256)': FunctionFragment;
        'withdrawToBase(uint256,address,uint256)': FunctionFragment;
        'zap()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'allowance' | 'approve' | 'balanceOf' | 'baseToken' | 'bountyPercentage' | 'checkpoint' | 'checkpointUser' | 'claim' | 'claimable' | 'config' | 'curveLpToken' | 'curvePool' | 'debtToken' | 'decimals' | 'decreaseAllowance' | 'deposit' | 'donate' | 'furnace' | 'getUserLocks' | 'harvest' | 'increaseAllowance' | 'initialRatio' | 'initialize' | 'lockPeriod' | 'migrateStrategy' | 'minimumDeposit' | 'name' | 'owner' | 'pendingBaseToken' | 'platform' | 'platformPercentage' | 'ratio' | 'rebalance' | 'renounceOwnership' | 'rewardPerShare' | 'rewards' | 'strategy' | 'symbol' | 'totalCurveLpToken' | 'totalDebtToken' | 'totalSupply' | 'transfer' | 'transferFrom' | 'transferOwnership' | 'unlock' | 'updateAMOConfig' | 'updateBountyPercentage' | 'updateLockPeriod' | 'updateMinimumDeposit' | 'updatePlatformPercentage' | 'updateZap' | 'withdraw' | 'withdrawToBase' | 'zap'): FunctionFragment;
    encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'baseToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'bountyPercentage', values?: undefined): string;
    encodeFunctionData(functionFragment: 'checkpoint', values?: undefined): string;
    encodeFunctionData(functionFragment: 'checkpointUser', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'claim', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'claimable', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'config', values?: undefined): string;
    encodeFunctionData(functionFragment: 'curveLpToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'curvePool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'debtToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decreaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'donate', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'furnace', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getUserLocks', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'harvest', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'increaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'initialRatio', values?: undefined): string;
    encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'lockPeriod', values?: undefined): string;
    encodeFunctionData(functionFragment: 'migrateStrategy', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'minimumDeposit', values?: undefined): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pendingBaseToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'platform', values?: undefined): string;
    encodeFunctionData(functionFragment: 'platformPercentage', values?: undefined): string;
    encodeFunctionData(functionFragment: 'ratio', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rebalance', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardPerShare', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'rewards', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'strategy', values?: undefined): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalCurveLpToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalDebtToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transfer', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferFrom', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'unlock', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'updateAMOConfig', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'updateBountyPercentage', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'updateLockPeriod', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'updateMinimumDeposit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'updatePlatformPercentage', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'updateZap', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'withdrawToBase', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'zap', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'baseToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bountyPercentage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'checkpoint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'checkpointUser', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'config', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'curveLpToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'curvePool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'debtToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'donate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'furnace', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getUserLocks', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'harvest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialRatio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lockPeriod', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'migrateStrategy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'minimumDeposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pendingBaseToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'platform', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'platformPercentage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ratio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rebalance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardPerShare', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'strategy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalCurveLpToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalDebtToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unlock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateAMOConfig', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateBountyPercentage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateLockPeriod', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateMinimumDeposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updatePlatformPercentage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateZap', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawToBase', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'zap', data: BytesLike): Result;
    events: {
        'Approval(address,address,uint256)': EventFragment;
        'Checkpoint(uint256,uint256,uint256,uint256)': EventFragment;
        'Claim(address,address,address,uint256)': EventFragment;
        'Deposit(address,address,uint256,uint256)': EventFragment;
        'Donate(address,uint256)': EventFragment;
        'Harvest(address,uint256,uint256,uint256,uint256,uint256,uint256)': EventFragment;
        'MigrateStrategy(address,address)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'Rebalance(uint256,uint256,uint256)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
        'Unlock(address,uint256,uint256,uint256)': EventFragment;
        'UpdateAMOConfig(uint64,uint64,uint64,uint64)': EventFragment;
        'UpdateBountyPercentage(uint32)': EventFragment;
        'UpdateLockPeriod(uint256)': EventFragment;
        'UpdateMinimumDeposit(uint256)': EventFragment;
        'UpdatePlatformPercentage(address,uint32)': EventFragment;
        'UpdateZap(address)': EventFragment;
        'Withdraw(address,address,uint256,uint256,uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Checkpoint'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Claim'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Donate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Harvest'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'MigrateStrategy'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Rebalance'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Unlock'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateAMOConfig'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateBountyPercentage'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateLockPeriod'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateMinimumDeposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdatePlatformPercentage'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateZap'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment;
}
export interface ApprovalEventObject {
    owner: string;
    spender: string;
    value: BigNumber;
}
export declare type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>;
export declare type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface CheckpointEventObject {
    baseAmount: BigNumber;
    debtAmount: BigNumber;
    lpAmount: BigNumber;
    ratio: BigNumber;
}
export declare type CheckpointEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, BigNumber], CheckpointEventObject>;
export declare type CheckpointEventFilter = TypedEventFilter<CheckpointEvent>;
export interface ClaimEventObject {
    token: string;
    owner: string;
    recipient: string;
    amount: BigNumber;
}
export declare type ClaimEvent = TypedEvent<[string, string, string, BigNumber], ClaimEventObject>;
export declare type ClaimEventFilter = TypedEventFilter<ClaimEvent>;
export interface DepositEventObject {
    owner: string;
    recipient: string;
    amount: BigNumber;
    unlockAt: BigNumber;
}
export declare type DepositEvent = TypedEvent<[string, string, BigNumber, BigNumber], DepositEventObject>;
export declare type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface DonateEventObject {
    caller: string;
    amount: BigNumber;
}
export declare type DonateEvent = TypedEvent<[string, BigNumber], DonateEventObject>;
export declare type DonateEventFilter = TypedEventFilter<DonateEvent>;
export interface HarvestEventObject {
    caller: string;
    baseAmount: BigNumber;
    platformFee: BigNumber;
    bounty: BigNumber;
    debtAmount: BigNumber;
    lpAmount: BigNumber;
    ratio: BigNumber;
}
export declare type HarvestEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], HarvestEventObject>;
export declare type HarvestEventFilter = TypedEventFilter<HarvestEvent>;
export interface MigrateStrategyEventObject {
    _oldStrategy: string;
    _newStrategy: string;
}
export declare type MigrateStrategyEvent = TypedEvent<[string, string], MigrateStrategyEventObject>;
export declare type MigrateStrategyEventFilter = TypedEventFilter<MigrateStrategyEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface RebalanceEventObject {
    ratio: BigNumber;
    startPoolRatio: BigNumber;
    targetPoolRatio: BigNumber;
}
export declare type RebalanceEvent = TypedEvent<[BigNumber, BigNumber, BigNumber], RebalanceEventObject>;
export declare type RebalanceEventFilter = TypedEventFilter<RebalanceEvent>;
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 UnlockEventObject {
    owner: string;
    amount: BigNumber;
    share: BigNumber;
    ratio: BigNumber;
}
export declare type UnlockEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], UnlockEventObject>;
export declare type UnlockEventFilter = TypedEventFilter<UnlockEvent>;
export interface UpdateAMOConfigEventObject {
    _minAMO: BigNumber;
    _maxAMO: BigNumber;
    _minLPRatio: BigNumber;
    _maxLPRatio: BigNumber;
}
export declare type UpdateAMOConfigEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, BigNumber], UpdateAMOConfigEventObject>;
export declare type UpdateAMOConfigEventFilter = TypedEventFilter<UpdateAMOConfigEvent>;
export interface UpdateBountyPercentageEventObject {
    _bountyPercentage: number;
}
export declare type UpdateBountyPercentageEvent = TypedEvent<[number], UpdateBountyPercentageEventObject>;
export declare type UpdateBountyPercentageEventFilter = TypedEventFilter<UpdateBountyPercentageEvent>;
export interface UpdateLockPeriodEventObject {
    _lockPeriod: BigNumber;
}
export declare type UpdateLockPeriodEvent = TypedEvent<[BigNumber], UpdateLockPeriodEventObject>;
export declare type UpdateLockPeriodEventFilter = TypedEventFilter<UpdateLockPeriodEvent>;
export interface UpdateMinimumDepositEventObject {
    _minimumDeposit: BigNumber;
}
export declare type UpdateMinimumDepositEvent = TypedEvent<[BigNumber], UpdateMinimumDepositEventObject>;
export declare type UpdateMinimumDepositEventFilter = TypedEventFilter<UpdateMinimumDepositEvent>;
export interface UpdatePlatformPercentageEventObject {
    _platform: string;
    _platformPercentage: number;
}
export declare type UpdatePlatformPercentageEvent = TypedEvent<[string, number], UpdatePlatformPercentageEventObject>;
export declare type UpdatePlatformPercentageEventFilter = TypedEventFilter<UpdatePlatformPercentageEvent>;
export interface UpdateZapEventObject {
    _zap: string;
}
export declare type UpdateZapEvent = TypedEvent<[string], UpdateZapEventObject>;
export declare type UpdateZapEventFilter = TypedEventFilter<UpdateZapEvent>;
export interface WithdrawEventObject {
    owner: string;
    recipient: string;
    shares: BigNumber;
    debtAmount: BigNumber;
    lpAmount: BigNumber;
    ratio: BigNumber;
}
export declare type WithdrawEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], WithdrawEventObject>;
export declare type WithdrawEventFilter = TypedEventFilter<WithdrawEvent>;
export interface AbcCvx extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: AbcCvxInterface;
    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: {
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        baseToken(overrides?: CallOverrides): Promise<[string]>;
        bountyPercentage(overrides?: CallOverrides): Promise<[BigNumber]>;
        checkpoint(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        checkpointUser(_user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claim(_user: PromiseOrValue<string>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimable(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber[]]>;
        config(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            minAMO: BigNumber;
            maxAMO: BigNumber;
            minLPRatio: BigNumber;
            maxLPRatio: BigNumber;
        }>;
        curveLpToken(overrides?: CallOverrides): Promise<[string]>;
        curvePool(overrides?: CallOverrides): Promise<[string]>;
        debtToken(overrides?: CallOverrides): Promise<[string]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deposit(_amount: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        donate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        furnace(overrides?: CallOverrides): Promise<[string]>;
        getUserLocks(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            CLeverAMOBase.LockBalanceStructOutput[]
        ] & {
            _locks: CLeverAMOBase.LockBalanceStructOutput[];
        }>;
        harvest(_recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialRatio(overrides?: CallOverrides): Promise<[BigNumber]>;
        initialize(_zap: PromiseOrValue<string>, _strategy: PromiseOrValue<string>, _initialRatio: PromiseOrValue<BigNumberish>, _rewards: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        lockPeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
        migrateStrategy(_newStrategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        minimumDeposit(overrides?: CallOverrides): Promise<[BigNumber]>;
        name(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pendingBaseToken(overrides?: CallOverrides): Promise<[BigNumber]>;
        platform(overrides?: CallOverrides): Promise<[string]>;
        platformPercentage(overrides?: CallOverrides): Promise<[BigNumber]>;
        ratio(overrides?: CallOverrides): Promise<[BigNumber]>;
        rebalance(_withdrawAmount: PromiseOrValue<BigNumberish>, _minOut: PromiseOrValue<BigNumberish>, _targetRangeLeft: PromiseOrValue<BigNumberish>, _targetRangeRight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rewardPerShare(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        rewards(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        strategy(overrides?: CallOverrides): Promise<[string]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalCurveLpToken(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalDebtToken(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unlock(_minShareOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateAMOConfig(_minAMO: PromiseOrValue<BigNumberish>, _maxAMO: PromiseOrValue<BigNumberish>, _minLPRatio: PromiseOrValue<BigNumberish>, _maxLPRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateBountyPercentage(_bountyPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateLockPeriod(_lockPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateMinimumDeposit(_minimumDeposit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updatePlatformPercentage(_platform: PromiseOrValue<string>, _platformPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateZap(_zap: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdraw(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minLpOut: PromiseOrValue<BigNumberish>, _minDebtOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawToBase(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        zap(overrides?: CallOverrides): Promise<[string]>;
    };
    allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    baseToken(overrides?: CallOverrides): Promise<string>;
    bountyPercentage(overrides?: CallOverrides): Promise<BigNumber>;
    checkpoint(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    checkpointUser(_user: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claim(_user: PromiseOrValue<string>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimable(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
    config(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        minAMO: BigNumber;
        maxAMO: BigNumber;
        minLPRatio: BigNumber;
        maxLPRatio: BigNumber;
    }>;
    curveLpToken(overrides?: CallOverrides): Promise<string>;
    curvePool(overrides?: CallOverrides): Promise<string>;
    debtToken(overrides?: CallOverrides): Promise<string>;
    decimals(overrides?: CallOverrides): Promise<number>;
    decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deposit(_amount: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    donate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    furnace(overrides?: CallOverrides): Promise<string>;
    getUserLocks(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<CLeverAMOBase.LockBalanceStructOutput[]>;
    harvest(_recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialRatio(overrides?: CallOverrides): Promise<BigNumber>;
    initialize(_zap: PromiseOrValue<string>, _strategy: PromiseOrValue<string>, _initialRatio: PromiseOrValue<BigNumberish>, _rewards: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    lockPeriod(overrides?: CallOverrides): Promise<BigNumber>;
    migrateStrategy(_newStrategy: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    minimumDeposit(overrides?: CallOverrides): Promise<BigNumber>;
    name(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    pendingBaseToken(overrides?: CallOverrides): Promise<BigNumber>;
    platform(overrides?: CallOverrides): Promise<string>;
    platformPercentage(overrides?: CallOverrides): Promise<BigNumber>;
    ratio(overrides?: CallOverrides): Promise<BigNumber>;
    rebalance(_withdrawAmount: PromiseOrValue<BigNumberish>, _minOut: PromiseOrValue<BigNumberish>, _targetRangeLeft: PromiseOrValue<BigNumberish>, _targetRangeRight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rewardPerShare(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    rewards(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    strategy(overrides?: CallOverrides): Promise<string>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalCurveLpToken(overrides?: CallOverrides): Promise<BigNumber>;
    totalDebtToken(overrides?: CallOverrides): Promise<BigNumber>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unlock(_minShareOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateAMOConfig(_minAMO: PromiseOrValue<BigNumberish>, _maxAMO: PromiseOrValue<BigNumberish>, _minLPRatio: PromiseOrValue<BigNumberish>, _maxLPRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateBountyPercentage(_bountyPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateLockPeriod(_lockPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateMinimumDeposit(_minimumDeposit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updatePlatformPercentage(_platform: PromiseOrValue<string>, _platformPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateZap(_zap: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdraw(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minLpOut: PromiseOrValue<BigNumberish>, _minDebtOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawToBase(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    zap(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        baseToken(overrides?: CallOverrides): Promise<string>;
        bountyPercentage(overrides?: CallOverrides): Promise<BigNumber>;
        checkpoint(overrides?: CallOverrides): Promise<void>;
        checkpointUser(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        claim(_user: PromiseOrValue<string>, _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        claimable(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
        config(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            minAMO: BigNumber;
            maxAMO: BigNumber;
            minLPRatio: BigNumber;
            maxLPRatio: BigNumber;
        }>;
        curveLpToken(overrides?: CallOverrides): Promise<string>;
        curvePool(overrides?: CallOverrides): Promise<string>;
        debtToken(overrides?: CallOverrides): Promise<string>;
        decimals(overrides?: CallOverrides): Promise<number>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        deposit(_amount: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        donate(_amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        furnace(overrides?: CallOverrides): Promise<string>;
        getUserLocks(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<CLeverAMOBase.LockBalanceStructOutput[]>;
        harvest(_recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        initialRatio(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_zap: PromiseOrValue<string>, _strategy: PromiseOrValue<string>, _initialRatio: PromiseOrValue<BigNumberish>, _rewards: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        lockPeriod(overrides?: CallOverrides): Promise<BigNumber>;
        migrateStrategy(_newStrategy: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        minimumDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        pendingBaseToken(overrides?: CallOverrides): Promise<BigNumber>;
        platform(overrides?: CallOverrides): Promise<string>;
        platformPercentage(overrides?: CallOverrides): Promise<BigNumber>;
        ratio(overrides?: CallOverrides): Promise<BigNumber>;
        rebalance(_withdrawAmount: PromiseOrValue<BigNumberish>, _minOut: PromiseOrValue<BigNumberish>, _targetRangeLeft: PromiseOrValue<BigNumberish>, _targetRangeRight: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        rewardPerShare(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewards(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        strategy(overrides?: CallOverrides): Promise<string>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalCurveLpToken(overrides?: CallOverrides): Promise<BigNumber>;
        totalDebtToken(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        unlock(_minShareOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        updateAMOConfig(_minAMO: PromiseOrValue<BigNumberish>, _maxAMO: PromiseOrValue<BigNumberish>, _minLPRatio: PromiseOrValue<BigNumberish>, _maxLPRatio: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        updateBountyPercentage(_bountyPercentage: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        updateLockPeriod(_lockPeriod: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        updateMinimumDeposit(_minimumDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        updatePlatformPercentage(_platform: PromiseOrValue<string>, _platformPercentage: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        updateZap(_zap: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdraw(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minLpOut: PromiseOrValue<BigNumberish>, _minDebtOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            _lpTokenOut: BigNumber;
            _debtTokenOut: BigNumber;
        }>;
        withdrawToBase(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        zap(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        'Approval(address,address,uint256)'(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        Approval(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        'Checkpoint(uint256,uint256,uint256,uint256)'(baseAmount?: null, debtAmount?: null, lpAmount?: null, ratio?: null): CheckpointEventFilter;
        Checkpoint(baseAmount?: null, debtAmount?: null, lpAmount?: null, ratio?: null): CheckpointEventFilter;
        'Claim(address,address,address,uint256)'(token?: PromiseOrValue<string> | null, owner?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: null): ClaimEventFilter;
        Claim(token?: PromiseOrValue<string> | null, owner?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: null): ClaimEventFilter;
        'Deposit(address,address,uint256,uint256)'(owner?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: null, unlockAt?: null): DepositEventFilter;
        Deposit(owner?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: null, unlockAt?: null): DepositEventFilter;
        'Donate(address,uint256)'(caller?: PromiseOrValue<string> | null, amount?: null): DonateEventFilter;
        Donate(caller?: PromiseOrValue<string> | null, amount?: null): DonateEventFilter;
        'Harvest(address,uint256,uint256,uint256,uint256,uint256,uint256)'(caller?: PromiseOrValue<string> | null, baseAmount?: null, platformFee?: null, bounty?: null, debtAmount?: null, lpAmount?: null, ratio?: null): HarvestEventFilter;
        Harvest(caller?: PromiseOrValue<string> | null, baseAmount?: null, platformFee?: null, bounty?: null, debtAmount?: null, lpAmount?: null, ratio?: null): HarvestEventFilter;
        'MigrateStrategy(address,address)'(_oldStrategy?: null, _newStrategy?: null): MigrateStrategyEventFilter;
        MigrateStrategy(_oldStrategy?: null, _newStrategy?: null): MigrateStrategyEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'Rebalance(uint256,uint256,uint256)'(ratio?: null, startPoolRatio?: null, targetPoolRatio?: null): RebalanceEventFilter;
        Rebalance(ratio?: null, startPoolRatio?: null, targetPoolRatio?: null): RebalanceEventFilter;
        '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;
        'Unlock(address,uint256,uint256,uint256)'(owner?: PromiseOrValue<string> | null, amount?: null, share?: null, ratio?: null): UnlockEventFilter;
        Unlock(owner?: PromiseOrValue<string> | null, amount?: null, share?: null, ratio?: null): UnlockEventFilter;
        'UpdateAMOConfig(uint64,uint64,uint64,uint64)'(_minAMO?: null, _maxAMO?: null, _minLPRatio?: null, _maxLPRatio?: null): UpdateAMOConfigEventFilter;
        UpdateAMOConfig(_minAMO?: null, _maxAMO?: null, _minLPRatio?: null, _maxLPRatio?: null): UpdateAMOConfigEventFilter;
        'UpdateBountyPercentage(uint32)'(_bountyPercentage?: null): UpdateBountyPercentageEventFilter;
        UpdateBountyPercentage(_bountyPercentage?: null): UpdateBountyPercentageEventFilter;
        'UpdateLockPeriod(uint256)'(_lockPeriod?: null): UpdateLockPeriodEventFilter;
        UpdateLockPeriod(_lockPeriod?: null): UpdateLockPeriodEventFilter;
        'UpdateMinimumDeposit(uint256)'(_minimumDeposit?: null): UpdateMinimumDepositEventFilter;
        UpdateMinimumDeposit(_minimumDeposit?: null): UpdateMinimumDepositEventFilter;
        'UpdatePlatformPercentage(address,uint32)'(_platform?: null, _platformPercentage?: null): UpdatePlatformPercentageEventFilter;
        UpdatePlatformPercentage(_platform?: null, _platformPercentage?: null): UpdatePlatformPercentageEventFilter;
        'UpdateZap(address)'(_zap?: null): UpdateZapEventFilter;
        UpdateZap(_zap?: null): UpdateZapEventFilter;
        'Withdraw(address,address,uint256,uint256,uint256,uint256)'(owner?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, shares?: null, debtAmount?: null, lpAmount?: null, ratio?: null): WithdrawEventFilter;
        Withdraw(owner?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, shares?: null, debtAmount?: null, lpAmount?: null, ratio?: null): WithdrawEventFilter;
    };
    estimateGas: {
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        baseToken(overrides?: CallOverrides): Promise<BigNumber>;
        bountyPercentage(overrides?: CallOverrides): Promise<BigNumber>;
        checkpoint(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        checkpointUser(_user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claim(_user: PromiseOrValue<string>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimable(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        config(overrides?: CallOverrides): Promise<BigNumber>;
        curveLpToken(overrides?: CallOverrides): Promise<BigNumber>;
        curvePool(overrides?: CallOverrides): Promise<BigNumber>;
        debtToken(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deposit(_amount: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        donate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        furnace(overrides?: CallOverrides): Promise<BigNumber>;
        getUserLocks(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        harvest(_recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialRatio(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_zap: PromiseOrValue<string>, _strategy: PromiseOrValue<string>, _initialRatio: PromiseOrValue<BigNumberish>, _rewards: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        lockPeriod(overrides?: CallOverrides): Promise<BigNumber>;
        migrateStrategy(_newStrategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        minimumDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pendingBaseToken(overrides?: CallOverrides): Promise<BigNumber>;
        platform(overrides?: CallOverrides): Promise<BigNumber>;
        platformPercentage(overrides?: CallOverrides): Promise<BigNumber>;
        ratio(overrides?: CallOverrides): Promise<BigNumber>;
        rebalance(_withdrawAmount: PromiseOrValue<BigNumberish>, _minOut: PromiseOrValue<BigNumberish>, _targetRangeLeft: PromiseOrValue<BigNumberish>, _targetRangeRight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rewardPerShare(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewards(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        strategy(overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalCurveLpToken(overrides?: CallOverrides): Promise<BigNumber>;
        totalDebtToken(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unlock(_minShareOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateAMOConfig(_minAMO: PromiseOrValue<BigNumberish>, _maxAMO: PromiseOrValue<BigNumberish>, _minLPRatio: PromiseOrValue<BigNumberish>, _maxLPRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateBountyPercentage(_bountyPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateLockPeriod(_lockPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateMinimumDeposit(_minimumDeposit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updatePlatformPercentage(_platform: PromiseOrValue<string>, _platformPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateZap(_zap: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdraw(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minLpOut: PromiseOrValue<BigNumberish>, _minDebtOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawToBase(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        zap(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        baseToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bountyPercentage(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        checkpoint(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        checkpointUser(_user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claim(_user: PromiseOrValue<string>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimable(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        config(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        curveLpToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        curvePool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        debtToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deposit(_amount: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        donate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        furnace(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUserLocks(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        harvest(_recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_zap: PromiseOrValue<string>, _strategy: PromiseOrValue<string>, _initialRatio: PromiseOrValue<BigNumberish>, _rewards: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        lockPeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        migrateStrategy(_newStrategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        minimumDeposit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingBaseToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        platform(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        platformPercentage(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ratio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rebalance(_withdrawAmount: PromiseOrValue<BigNumberish>, _minOut: PromiseOrValue<BigNumberish>, _targetRangeLeft: PromiseOrValue<BigNumberish>, _targetRangeRight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rewardPerShare(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewards(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        strategy(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalCurveLpToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalDebtToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unlock(_minShareOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateAMOConfig(_minAMO: PromiseOrValue<BigNumberish>, _maxAMO: PromiseOrValue<BigNumberish>, _minLPRatio: PromiseOrValue<BigNumberish>, _maxLPRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateBountyPercentage(_bountyPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateLockPeriod(_lockPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateMinimumDeposit(_minimumDeposit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updatePlatformPercentage(_platform: PromiseOrValue<string>, _platformPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateZap(_zap: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdraw(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minLpOut: PromiseOrValue<BigNumberish>, _minDebtOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawToBase(_shares: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, _minBaseOut: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        zap(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
