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 IDCAPermissionManager {
    type PermissionSetStruct = {
        operator: PromiseOrValue<string>;
        permissions: PromiseOrValue<BigNumberish>[];
    };
    type PermissionSetStructOutput = [string, number[]] & {
        operator: string;
        permissions: number[];
    };
}
export declare namespace IDCAHubSwapHandler {
    type TokenInSwapStruct = {
        token: PromiseOrValue<string>;
        reward: PromiseOrValue<BigNumberish>;
        toProvide: PromiseOrValue<BigNumberish>;
        platformFee: PromiseOrValue<BigNumberish>;
    };
    type TokenInSwapStructOutput = [string, BigNumber, BigNumber, BigNumber] & {
        token: string;
        reward: BigNumber;
        toProvide: BigNumber;
        platformFee: BigNumber;
    };
    type PairInSwapStruct = {
        tokenA: PromiseOrValue<string>;
        tokenB: PromiseOrValue<string>;
        totalAmountToSwapTokenA: PromiseOrValue<BigNumberish>;
        totalAmountToSwapTokenB: PromiseOrValue<BigNumberish>;
        ratioAToB: PromiseOrValue<BigNumberish>;
        ratioBToA: PromiseOrValue<BigNumberish>;
        intervalsInSwap: PromiseOrValue<BytesLike>;
    };
    type PairInSwapStructOutput = [string, string, BigNumber, BigNumber, BigNumber, BigNumber, string] & {
        tokenA: string;
        tokenB: string;
        totalAmountToSwapTokenA: BigNumber;
        totalAmountToSwapTokenB: BigNumber;
        ratioAToB: BigNumber;
        ratioBToA: BigNumber;
        intervalsInSwap: string;
    };
    type SwapInfoStruct = {
        tokens: IDCAHubSwapHandler.TokenInSwapStruct[];
        pairs: IDCAHubSwapHandler.PairInSwapStruct[];
    };
    type SwapInfoStructOutput = [
        IDCAHubSwapHandler.TokenInSwapStructOutput[],
        IDCAHubSwapHandler.PairInSwapStructOutput[]
    ] & {
        tokens: IDCAHubSwapHandler.TokenInSwapStructOutput[];
        pairs: IDCAHubSwapHandler.PairInSwapStructOutput[];
    };
    type PairIndexesStruct = {
        indexTokenA: PromiseOrValue<BigNumberish>;
        indexTokenB: PromiseOrValue<BigNumberish>;
    };
    type PairIndexesStructOutput = [number, number] & {
        indexTokenA: number;
        indexTokenB: number;
    };
}
export declare namespace IDCAHub {
    type AmountOfTokenStruct = {
        token: PromiseOrValue<string>;
        amount: PromiseOrValue<BigNumberish>;
    };
    type AmountOfTokenStructOutput = [string, BigNumber] & {
        token: string;
        amount: BigNumber;
    };
}
export declare namespace IDCAHubPositionHandler {
    type PositionSetStruct = {
        token: PromiseOrValue<string>;
        positionIds: PromiseOrValue<BigNumberish>[];
    };
    type PositionSetStructOutput = [string, BigNumber[]] & {
        token: string;
        positionIds: BigNumber[];
    };
    type UserPositionStruct = {
        from: PromiseOrValue<string>;
        to: PromiseOrValue<string>;
        swapInterval: PromiseOrValue<BigNumberish>;
        swapsExecuted: PromiseOrValue<BigNumberish>;
        swapped: PromiseOrValue<BigNumberish>;
        swapsLeft: PromiseOrValue<BigNumberish>;
        remaining: PromiseOrValue<BigNumberish>;
        rate: PromiseOrValue<BigNumberish>;
    };
    type UserPositionStructOutput = [string, string, number, number, BigNumber, number, BigNumber, BigNumber] & {
        from: string;
        to: string;
        swapInterval: number;
        swapsExecuted: number;
        swapped: BigNumber;
        swapsLeft: number;
        remaining: BigNumber;
        rate: BigNumber;
    };
}
export interface MeanFinanceHubInterface extends utils.Interface {
    functions: {
        'DEFAULT_ADMIN_ROLE()': FunctionFragment;
        'IMMEDIATE_ROLE()': FunctionFragment;
        'MAX_FEE()': FunctionFragment;
        'MAX_PLATFORM_FEE_RATIO()': FunctionFragment;
        'PLATFORM_WITHDRAW_ROLE()': FunctionFragment;
        'PRIVILEGED_SWAPPER_ROLE()': FunctionFragment;
        'TIME_LOCKED_ROLE()': FunctionFragment;
        'accumRatio(address,address,bytes1,uint32)': FunctionFragment;
        'activeSwapIntervals(address,address)': FunctionFragment;
        'addSwapIntervalsToAllowedList(uint32[])': FunctionFragment;
        'allowedSwapIntervals()': FunctionFragment;
        'allowedTokens(address)': FunctionFragment;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])': FunctionFragment;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)': FunctionFragment;
        'getNextSwapInfo(address[],(uint8,uint8)[],bool,bytes)': FunctionFragment;
        'getRoleAdmin(bytes32)': FunctionFragment;
        'grantRole(bytes32,address)': FunctionFragment;
        'hasRole(bytes32,address)': FunctionFragment;
        'increasePosition(uint256,uint256,uint32)': FunctionFragment;
        'oracle()': FunctionFragment;
        'pause()': FunctionFragment;
        'paused()': FunctionFragment;
        'permissionManager()': FunctionFragment;
        'platformBalance(address)': FunctionFragment;
        'platformFeeRatio()': FunctionFragment;
        'reducePosition(uint256,uint256,uint32,address)': FunctionFragment;
        'removeSwapIntervalsFromAllowedList(uint32[])': FunctionFragment;
        'renounceRole(bytes32,address)': FunctionFragment;
        'revokeRole(bytes32,address)': FunctionFragment;
        'setAllowedTokens(address[],bool[])': FunctionFragment;
        'setOracle(address)': FunctionFragment;
        'setPlatformFeeRatio(uint16)': FunctionFragment;
        'setSwapFee(uint32)': FunctionFragment;
        'supportsInterface(bytes4)': FunctionFragment;
        'swap(address[],(uint8,uint8)[],address,address,uint256[],bytes,bytes)': FunctionFragment;
        'swapAmountDelta(address,address,bytes1,uint32)': FunctionFragment;
        'swapData(address,address,bytes1)': FunctionFragment;
        'swapFee()': FunctionFragment;
        'terminate(uint256,address,address)': FunctionFragment;
        'tokenMagnitude(address)': FunctionFragment;
        'totalCreatedPositions()': FunctionFragment;
        'unpause()': FunctionFragment;
        'userPosition(uint256)': FunctionFragment;
        'withdrawFromPlatformBalance((address,uint256)[],address)': FunctionFragment;
        'withdrawSwapped(uint256,address)': FunctionFragment;
        'withdrawSwappedMany((address,uint256[])[],address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'DEFAULT_ADMIN_ROLE' | 'IMMEDIATE_ROLE' | 'MAX_FEE' | 'MAX_PLATFORM_FEE_RATIO' | 'PLATFORM_WITHDRAW_ROLE' | 'PRIVILEGED_SWAPPER_ROLE' | 'TIME_LOCKED_ROLE' | 'accumRatio' | 'activeSwapIntervals' | 'addSwapIntervalsToAllowedList' | 'allowedSwapIntervals' | 'allowedTokens' | 'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])' | 'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)' | 'getNextSwapInfo' | 'getRoleAdmin' | 'grantRole' | 'hasRole' | 'increasePosition' | 'oracle' | 'pause' | 'paused' | 'permissionManager' | 'platformBalance' | 'platformFeeRatio' | 'reducePosition' | 'removeSwapIntervalsFromAllowedList' | 'renounceRole' | 'revokeRole' | 'setAllowedTokens' | 'setOracle' | 'setPlatformFeeRatio' | 'setSwapFee' | 'supportsInterface' | 'swap' | 'swapAmountDelta' | 'swapData' | 'swapFee' | 'terminate' | 'tokenMagnitude' | 'totalCreatedPositions' | 'unpause' | 'userPosition' | 'withdrawFromPlatformBalance' | 'withdrawSwapped' | 'withdrawSwappedMany'): FunctionFragment;
    encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'IMMEDIATE_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_FEE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_PLATFORM_FEE_RATIO', values?: undefined): string;
    encodeFunctionData(functionFragment: 'PLATFORM_WITHDRAW_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'PRIVILEGED_SWAPPER_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'TIME_LOCKED_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'accumRatio', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'activeSwapIntervals', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'addSwapIntervalsToAllowedList', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'allowedSwapIntervals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'allowedTokens', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        IDCAPermissionManager.PermissionSetStruct[]
    ]): string;
    encodeFunctionData(functionFragment: 'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        IDCAPermissionManager.PermissionSetStruct[],
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'getNextSwapInfo', values: [
        PromiseOrValue<string>[],
        IDCAHubSwapHandler.PairIndexesStruct[],
        PromiseOrValue<boolean>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'grantRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'increasePosition', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'oracle', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'paused', values?: undefined): string;
    encodeFunctionData(functionFragment: 'permissionManager', values?: undefined): string;
    encodeFunctionData(functionFragment: 'platformBalance', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'platformFeeRatio', values?: undefined): string;
    encodeFunctionData(functionFragment: 'reducePosition', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: 'removeSwapIntervalsFromAllowedList', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'renounceRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setAllowedTokens', values: [PromiseOrValue<string>[], PromiseOrValue<boolean>[]]): string;
    encodeFunctionData(functionFragment: 'setOracle', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setPlatformFeeRatio', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setSwapFee', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'swap', values: [
        PromiseOrValue<string>[],
        IDCAHubSwapHandler.PairIndexesStruct[],
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'swapAmountDelta', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'swapData', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'swapFee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'terminate', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'tokenMagnitude', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'totalCreatedPositions', values?: undefined): string;
    encodeFunctionData(functionFragment: 'unpause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'userPosition', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdrawFromPlatformBalance', values: [IDCAHub.AmountOfTokenStruct[], PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdrawSwapped', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdrawSwappedMany', values: [IDCAHubPositionHandler.PositionSetStruct[], PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'IMMEDIATE_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_FEE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_PLATFORM_FEE_RATIO', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'PLATFORM_WITHDRAW_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'PRIVILEGED_SWAPPER_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'TIME_LOCKED_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'accumRatio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'activeSwapIntervals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addSwapIntervalsToAllowedList', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowedSwapIntervals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowedTokens', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getNextSwapInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increasePosition', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'oracle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'permissionManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'platformBalance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'platformFeeRatio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reducePosition', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeSwapIntervalsFromAllowedList', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setAllowedTokens', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setOracle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPlatformFeeRatio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setSwapFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'swap', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'swapAmountDelta', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'swapData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'swapFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'terminate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenMagnitude', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalCreatedPositions', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'userPosition', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawFromPlatformBalance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawSwapped', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawSwappedMany', data: BytesLike): Result;
    events: {
        'Deposited(address,address,uint256,address,address,uint32,uint120,uint32,uint32,tuple[])': EventFragment;
        'Miscellaneous(uint256,bytes)': EventFragment;
        'Modified(address,uint256,uint120,uint32,uint32)': EventFragment;
        'OracleSet(address)': EventFragment;
        'Paused(address)': EventFragment;
        'PlatformFeeRatioSet(uint16)': EventFragment;
        'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment;
        'RoleGranted(bytes32,address,address)': EventFragment;
        'RoleRevoked(bytes32,address,address)': EventFragment;
        'SwapFeeSet(uint32)': EventFragment;
        'SwapIntervalsAllowed(uint32[])': EventFragment;
        'SwapIntervalsForbidden(uint32[])': EventFragment;
        'Swapped(address,address,address,tuple,uint256[],uint32)': EventFragment;
        'Terminated(address,address,address,uint256,uint256,uint256)': EventFragment;
        'TokensAllowedUpdated(address[],bool[])': EventFragment;
        'Unpaused(address)': EventFragment;
        'Withdrew(address,address,uint256,address,uint256)': EventFragment;
        'WithdrewFromPlatform(address,address,tuple[])': EventFragment;
        'WithdrewMany(address,address,tuple[],uint256[])': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Deposited'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Miscellaneous'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Modified'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OracleSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PlatformFeeRatioSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SwapFeeSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SwapIntervalsAllowed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SwapIntervalsForbidden'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Swapped'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Terminated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TokensAllowedUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdrew'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrewFromPlatform'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrewMany'): EventFragment;
}
export interface DepositedEventObject {
    depositor: string;
    owner: string;
    positionId: BigNumber;
    fromToken: string;
    toToken: string;
    swapInterval: number;
    rate: BigNumber;
    startingSwap: number;
    lastSwap: number;
    permissions: IDCAPermissionManager.PermissionSetStructOutput[];
}
export declare type DepositedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string,
    string,
    number,
    BigNumber,
    number,
    number,
    IDCAPermissionManager.PermissionSetStructOutput[]
], DepositedEventObject>;
export declare type DepositedEventFilter = TypedEventFilter<DepositedEvent>;
export interface MiscellaneousEventObject {
    positionId: BigNumber;
    data: string;
}
export declare type MiscellaneousEvent = TypedEvent<[BigNumber, string], MiscellaneousEventObject>;
export declare type MiscellaneousEventFilter = TypedEventFilter<MiscellaneousEvent>;
export interface ModifiedEventObject {
    user: string;
    positionId: BigNumber;
    rate: BigNumber;
    startingSwap: number;
    lastSwap: number;
}
export declare type ModifiedEvent = TypedEvent<[string, BigNumber, BigNumber, number, number], ModifiedEventObject>;
export declare type ModifiedEventFilter = TypedEventFilter<ModifiedEvent>;
export interface OracleSetEventObject {
    oracle: string;
}
export declare type OracleSetEvent = TypedEvent<[string], OracleSetEventObject>;
export declare type OracleSetEventFilter = TypedEventFilter<OracleSetEvent>;
export interface PausedEventObject {
    account: string;
}
export declare type PausedEvent = TypedEvent<[string], PausedEventObject>;
export declare type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface PlatformFeeRatioSetEventObject {
    platformFeeRatio: number;
}
export declare type PlatformFeeRatioSetEvent = TypedEvent<[number], PlatformFeeRatioSetEventObject>;
export declare type PlatformFeeRatioSetEventFilter = TypedEventFilter<PlatformFeeRatioSetEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
}
export declare type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>;
export declare type RoleAdminChangedEventFilter = TypedEventFilter<RoleAdminChangedEvent>;
export interface RoleGrantedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>;
export declare type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;
export interface RoleRevokedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>;
export declare type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;
export interface SwapFeeSetEventObject {
    feeSet: number;
}
export declare type SwapFeeSetEvent = TypedEvent<[number], SwapFeeSetEventObject>;
export declare type SwapFeeSetEventFilter = TypedEventFilter<SwapFeeSetEvent>;
export interface SwapIntervalsAllowedEventObject {
    swapIntervals: number[];
}
export declare type SwapIntervalsAllowedEvent = TypedEvent<[number[]], SwapIntervalsAllowedEventObject>;
export declare type SwapIntervalsAllowedEventFilter = TypedEventFilter<SwapIntervalsAllowedEvent>;
export interface SwapIntervalsForbiddenEventObject {
    swapIntervals: number[];
}
export declare type SwapIntervalsForbiddenEvent = TypedEvent<[number[]], SwapIntervalsForbiddenEventObject>;
export declare type SwapIntervalsForbiddenEventFilter = TypedEventFilter<SwapIntervalsForbiddenEvent>;
export interface SwappedEventObject {
    sender: string;
    rewardRecipient: string;
    callbackHandler: string;
    swapInformation: IDCAHubSwapHandler.SwapInfoStructOutput;
    borrowed: BigNumber[];
    fee: number;
}
export declare type SwappedEvent = TypedEvent<[
    string,
    string,
    string,
    IDCAHubSwapHandler.SwapInfoStructOutput,
    BigNumber[],
    number
], SwappedEventObject>;
export declare type SwappedEventFilter = TypedEventFilter<SwappedEvent>;
export interface TerminatedEventObject {
    user: string;
    recipientUnswapped: string;
    recipientSwapped: string;
    positionId: BigNumber;
    returnedUnswapped: BigNumber;
    returnedSwapped: BigNumber;
}
export declare type TerminatedEvent = TypedEvent<[
    string,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber
], TerminatedEventObject>;
export declare type TerminatedEventFilter = TypedEventFilter<TerminatedEvent>;
export interface TokensAllowedUpdatedEventObject {
    tokens: string[];
    allowed: boolean[];
}
export declare type TokensAllowedUpdatedEvent = TypedEvent<[string[], boolean[]], TokensAllowedUpdatedEventObject>;
export declare type TokensAllowedUpdatedEventFilter = TypedEventFilter<TokensAllowedUpdatedEvent>;
export interface UnpausedEventObject {
    account: string;
}
export declare type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export declare type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface WithdrewEventObject {
    withdrawer: string;
    recipient: string;
    positionId: BigNumber;
    token: string;
    amount: BigNumber;
}
export declare type WithdrewEvent = TypedEvent<[string, string, BigNumber, string, BigNumber], WithdrewEventObject>;
export declare type WithdrewEventFilter = TypedEventFilter<WithdrewEvent>;
export interface WithdrewFromPlatformEventObject {
    sender: string;
    recipient: string;
    amounts: IDCAHub.AmountOfTokenStructOutput[];
}
export declare type WithdrewFromPlatformEvent = TypedEvent<[
    string,
    string,
    IDCAHub.AmountOfTokenStructOutput[]
], WithdrewFromPlatformEventObject>;
export declare type WithdrewFromPlatformEventFilter = TypedEventFilter<WithdrewFromPlatformEvent>;
export interface WithdrewManyEventObject {
    withdrawer: string;
    recipient: string;
    positions: IDCAHubPositionHandler.PositionSetStructOutput[];
    withdrew: BigNumber[];
}
export declare type WithdrewManyEvent = TypedEvent<[
    string,
    string,
    IDCAHubPositionHandler.PositionSetStructOutput[],
    BigNumber[]
], WithdrewManyEventObject>;
export declare type WithdrewManyEventFilter = TypedEventFilter<WithdrewManyEvent>;
export interface MeanFinanceHub extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: MeanFinanceHubInterface;
    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: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        IMMEDIATE_ROLE(overrides?: CallOverrides): Promise<[string]>;
        MAX_FEE(overrides?: CallOverrides): Promise<[number]>;
        MAX_PLATFORM_FEE_RATIO(overrides?: CallOverrides): Promise<[number]>;
        PLATFORM_WITHDRAW_ROLE(overrides?: CallOverrides): Promise<[string]>;
        PRIVILEGED_SWAPPER_ROLE(overrides?: CallOverrides): Promise<[string]>;
        TIME_LOCKED_ROLE(overrides?: CallOverrides): Promise<[string]>;
        accumRatio(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            accumRatioAToB: BigNumber;
            accumRatioBToA: BigNumber;
        }>;
        activeSwapIntervals(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        addSwapIntervalsToAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        allowedSwapIntervals(overrides?: CallOverrides): Promise<[string]>;
        allowedTokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], _miscellaneous: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getNextSwapInfo(_tokens: PromiseOrValue<string>[], _pairs: IDCAHubSwapHandler.PairIndexesStruct[], _calculatePrivilegedAvailability: PromiseOrValue<boolean>, _oracleData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            IDCAHubSwapHandler.SwapInfoStructOutput
        ] & {
            _swapInformation: IDCAHubSwapHandler.SwapInfoStructOutput;
        }>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        increasePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        oracle(overrides?: CallOverrides): Promise<[string]>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        permissionManager(overrides?: CallOverrides): Promise<[string]>;
        platformBalance(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        platformFeeRatio(overrides?: CallOverrides): Promise<[number]>;
        reducePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeSwapIntervalsFromAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAllowedTokens(_tokens: PromiseOrValue<string>[], _allowed: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setOracle(_oracle: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPlatformFeeRatio(_platformFeeRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSwapFee(_swapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        swap(_tokens: PromiseOrValue<string>[], _pairsToSwap: IDCAHubSwapHandler.PairIndexesStruct[], _rewardRecipient: PromiseOrValue<string>, _callbackHandler: PromiseOrValue<string>, _borrow: PromiseOrValue<BigNumberish>[], _callbackData: PromiseOrValue<BytesLike>, _oracleData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        swapAmountDelta(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            swapDeltaAToB: BigNumber;
            swapDeltaBToA: BigNumber;
        }>;
        swapData(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            number,
            BigNumber,
            number,
            BigNumber
        ] & {
            performedSwaps: number;
            nextAmountToSwapAToB: BigNumber;
            lastSwappedAt: number;
            nextAmountToSwapBToA: BigNumber;
        }>;
        swapFee(overrides?: CallOverrides): Promise<[number]>;
        terminate(_positionId: PromiseOrValue<BigNumberish>, _recipientUnswapped: PromiseOrValue<string>, _recipientSwapped: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        tokenMagnitude(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        totalCreatedPositions(overrides?: CallOverrides): Promise<[BigNumber]>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        userPosition(_positionId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            IDCAHubPositionHandler.UserPositionStructOutput
        ] & {
            _userPosition: IDCAHubPositionHandler.UserPositionStructOutput;
        }>;
        withdrawFromPlatformBalance(_amounts: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawSwapped(_positionId: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawSwappedMany(_positions: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    IMMEDIATE_ROLE(overrides?: CallOverrides): Promise<string>;
    MAX_FEE(overrides?: CallOverrides): Promise<number>;
    MAX_PLATFORM_FEE_RATIO(overrides?: CallOverrides): Promise<number>;
    PLATFORM_WITHDRAW_ROLE(overrides?: CallOverrides): Promise<string>;
    PRIVILEGED_SWAPPER_ROLE(overrides?: CallOverrides): Promise<string>;
    TIME_LOCKED_ROLE(overrides?: CallOverrides): Promise<string>;
    accumRatio(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        accumRatioAToB: BigNumber;
        accumRatioBToA: BigNumber;
    }>;
    activeSwapIntervals(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    addSwapIntervalsToAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    allowedSwapIntervals(overrides?: CallOverrides): Promise<string>;
    allowedTokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], _miscellaneous: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getNextSwapInfo(_tokens: PromiseOrValue<string>[], _pairs: IDCAHubSwapHandler.PairIndexesStruct[], _calculatePrivilegedAvailability: PromiseOrValue<boolean>, _oracleData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<IDCAHubSwapHandler.SwapInfoStructOutput>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    increasePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    oracle(overrides?: CallOverrides): Promise<string>;
    pause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    permissionManager(overrides?: CallOverrides): Promise<string>;
    platformBalance(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    platformFeeRatio(overrides?: CallOverrides): Promise<number>;
    reducePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeSwapIntervalsFromAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAllowedTokens(_tokens: PromiseOrValue<string>[], _allowed: PromiseOrValue<boolean>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setOracle(_oracle: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPlatformFeeRatio(_platformFeeRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSwapFee(_swapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    swap(_tokens: PromiseOrValue<string>[], _pairsToSwap: IDCAHubSwapHandler.PairIndexesStruct[], _rewardRecipient: PromiseOrValue<string>, _callbackHandler: PromiseOrValue<string>, _borrow: PromiseOrValue<BigNumberish>[], _callbackData: PromiseOrValue<BytesLike>, _oracleData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    swapAmountDelta(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        swapDeltaAToB: BigNumber;
        swapDeltaBToA: BigNumber;
    }>;
    swapData(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
        number,
        BigNumber,
        number,
        BigNumber
    ] & {
        performedSwaps: number;
        nextAmountToSwapAToB: BigNumber;
        lastSwappedAt: number;
        nextAmountToSwapBToA: BigNumber;
    }>;
    swapFee(overrides?: CallOverrides): Promise<number>;
    terminate(_positionId: PromiseOrValue<BigNumberish>, _recipientUnswapped: PromiseOrValue<string>, _recipientSwapped: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    tokenMagnitude(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    totalCreatedPositions(overrides?: CallOverrides): Promise<BigNumber>;
    unpause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    userPosition(_positionId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<IDCAHubPositionHandler.UserPositionStructOutput>;
    withdrawFromPlatformBalance(_amounts: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawSwapped(_positionId: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawSwappedMany(_positions: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        IMMEDIATE_ROLE(overrides?: CallOverrides): Promise<string>;
        MAX_FEE(overrides?: CallOverrides): Promise<number>;
        MAX_PLATFORM_FEE_RATIO(overrides?: CallOverrides): Promise<number>;
        PLATFORM_WITHDRAW_ROLE(overrides?: CallOverrides): Promise<string>;
        PRIVILEGED_SWAPPER_ROLE(overrides?: CallOverrides): Promise<string>;
        TIME_LOCKED_ROLE(overrides?: CallOverrides): Promise<string>;
        accumRatio(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            accumRatioAToB: BigNumber;
            accumRatioBToA: BigNumber;
        }>;
        activeSwapIntervals(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        addSwapIntervalsToAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        allowedSwapIntervals(overrides?: CallOverrides): Promise<string>;
        allowedTokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], overrides?: CallOverrides): Promise<BigNumber>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], _miscellaneous: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getNextSwapInfo(_tokens: PromiseOrValue<string>[], _pairs: IDCAHubSwapHandler.PairIndexesStruct[], _calculatePrivilegedAvailability: PromiseOrValue<boolean>, _oracleData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<IDCAHubSwapHandler.SwapInfoStructOutput>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        increasePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        oracle(overrides?: CallOverrides): Promise<string>;
        pause(overrides?: CallOverrides): Promise<void>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        permissionManager(overrides?: CallOverrides): Promise<string>;
        platformBalance(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        platformFeeRatio(overrides?: CallOverrides): Promise<number>;
        reducePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        removeSwapIntervalsFromAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setAllowedTokens(_tokens: PromiseOrValue<string>[], _allowed: PromiseOrValue<boolean>[], overrides?: CallOverrides): Promise<void>;
        setOracle(_oracle: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setPlatformFeeRatio(_platformFeeRatio: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setSwapFee(_swapFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        swap(_tokens: PromiseOrValue<string>[], _pairsToSwap: IDCAHubSwapHandler.PairIndexesStruct[], _rewardRecipient: PromiseOrValue<string>, _callbackHandler: PromiseOrValue<string>, _borrow: PromiseOrValue<BigNumberish>[], _callbackData: PromiseOrValue<BytesLike>, _oracleData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<IDCAHubSwapHandler.SwapInfoStructOutput>;
        swapAmountDelta(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            swapDeltaAToB: BigNumber;
            swapDeltaBToA: BigNumber;
        }>;
        swapData(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[
            number,
            BigNumber,
            number,
            BigNumber
        ] & {
            performedSwaps: number;
            nextAmountToSwapAToB: BigNumber;
            lastSwappedAt: number;
            nextAmountToSwapBToA: BigNumber;
        }>;
        swapFee(overrides?: CallOverrides): Promise<number>;
        terminate(_positionId: PromiseOrValue<BigNumberish>, _recipientUnswapped: PromiseOrValue<string>, _recipientSwapped: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            _unswapped: BigNumber;
            _swapped: BigNumber;
        }>;
        tokenMagnitude(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalCreatedPositions(overrides?: CallOverrides): Promise<BigNumber>;
        unpause(overrides?: CallOverrides): Promise<void>;
        userPosition(_positionId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<IDCAHubPositionHandler.UserPositionStructOutput>;
        withdrawFromPlatformBalance(_amounts: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdrawSwapped(_positionId: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        withdrawSwappedMany(_positions: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
    };
    filters: {
        'Deposited(address,address,uint256,address,address,uint32,uint120,uint32,uint32,tuple[])'(depositor?: PromiseOrValue<string> | null, owner?: PromiseOrValue<string> | null, positionId?: null, fromToken?: null, toToken?: null, swapInterval?: null, rate?: null, startingSwap?: null, lastSwap?: null, permissions?: null): DepositedEventFilter;
        Deposited(depositor?: PromiseOrValue<string> | null, owner?: PromiseOrValue<string> | null, positionId?: null, fromToken?: null, toToken?: null, swapInterval?: null, rate?: null, startingSwap?: null, lastSwap?: null, permissions?: null): DepositedEventFilter;
        'Miscellaneous(uint256,bytes)'(positionId?: null, data?: null): MiscellaneousEventFilter;
        Miscellaneous(positionId?: null, data?: null): MiscellaneousEventFilter;
        'Modified(address,uint256,uint120,uint32,uint32)'(user?: PromiseOrValue<string> | null, positionId?: null, rate?: null, startingSwap?: null, lastSwap?: null): ModifiedEventFilter;
        Modified(user?: PromiseOrValue<string> | null, positionId?: null, rate?: null, startingSwap?: null, lastSwap?: null): ModifiedEventFilter;
        'OracleSet(address)'(oracle?: null): OracleSetEventFilter;
        OracleSet(oracle?: null): OracleSetEventFilter;
        'Paused(address)'(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        'PlatformFeeRatioSet(uint16)'(platformFeeRatio?: null): PlatformFeeRatioSetEventFilter;
        PlatformFeeRatioSet(platformFeeRatio?: null): PlatformFeeRatioSetEventFilter;
        'RoleAdminChanged(bytes32,bytes32,bytes32)'(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        'RoleGranted(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        RoleGranted(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        'RoleRevoked(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        RoleRevoked(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        'SwapFeeSet(uint32)'(feeSet?: null): SwapFeeSetEventFilter;
        SwapFeeSet(feeSet?: null): SwapFeeSetEventFilter;
        'SwapIntervalsAllowed(uint32[])'(swapIntervals?: null): SwapIntervalsAllowedEventFilter;
        SwapIntervalsAllowed(swapIntervals?: null): SwapIntervalsAllowedEventFilter;
        'SwapIntervalsForbidden(uint32[])'(swapIntervals?: null): SwapIntervalsForbiddenEventFilter;
        SwapIntervalsForbidden(swapIntervals?: null): SwapIntervalsForbiddenEventFilter;
        'Swapped(address,address,address,tuple,uint256[],uint32)'(sender?: PromiseOrValue<string> | null, rewardRecipient?: PromiseOrValue<string> | null, callbackHandler?: PromiseOrValue<string> | null, swapInformation?: null, borrowed?: null, fee?: null): SwappedEventFilter;
        Swapped(sender?: PromiseOrValue<string> | null, rewardRecipient?: PromiseOrValue<string> | null, callbackHandler?: PromiseOrValue<string> | null, swapInformation?: null, borrowed?: null, fee?: null): SwappedEventFilter;
        'Terminated(address,address,address,uint256,uint256,uint256)'(user?: PromiseOrValue<string> | null, recipientUnswapped?: PromiseOrValue<string> | null, recipientSwapped?: PromiseOrValue<string> | null, positionId?: null, returnedUnswapped?: null, returnedSwapped?: null): TerminatedEventFilter;
        Terminated(user?: PromiseOrValue<string> | null, recipientUnswapped?: PromiseOrValue<string> | null, recipientSwapped?: PromiseOrValue<string> | null, positionId?: null, returnedUnswapped?: null, returnedSwapped?: null): TerminatedEventFilter;
        'TokensAllowedUpdated(address[],bool[])'(tokens?: null, allowed?: null): TokensAllowedUpdatedEventFilter;
        TokensAllowedUpdated(tokens?: null, allowed?: null): TokensAllowedUpdatedEventFilter;
        'Unpaused(address)'(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
        'Withdrew(address,address,uint256,address,uint256)'(withdrawer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, positionId?: null, token?: null, amount?: null): WithdrewEventFilter;
        Withdrew(withdrawer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, positionId?: null, token?: null, amount?: null): WithdrewEventFilter;
        'WithdrewFromPlatform(address,address,tuple[])'(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amounts?: null): WithdrewFromPlatformEventFilter;
        WithdrewFromPlatform(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amounts?: null): WithdrewFromPlatformEventFilter;
        'WithdrewMany(address,address,tuple[],uint256[])'(withdrawer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, positions?: null, withdrew?: null): WithdrewManyEventFilter;
        WithdrewMany(withdrawer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, positions?: null, withdrew?: null): WithdrewManyEventFilter;
    };
    estimateGas: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        IMMEDIATE_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_FEE(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_PLATFORM_FEE_RATIO(overrides?: CallOverrides): Promise<BigNumber>;
        PLATFORM_WITHDRAW_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        PRIVILEGED_SWAPPER_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        TIME_LOCKED_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        accumRatio(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        activeSwapIntervals(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        addSwapIntervalsToAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        allowedSwapIntervals(overrides?: CallOverrides): Promise<BigNumber>;
        allowedTokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], _miscellaneous: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getNextSwapInfo(_tokens: PromiseOrValue<string>[], _pairs: IDCAHubSwapHandler.PairIndexesStruct[], _calculatePrivilegedAvailability: PromiseOrValue<boolean>, _oracleData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        increasePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        oracle(overrides?: CallOverrides): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        permissionManager(overrides?: CallOverrides): Promise<BigNumber>;
        platformBalance(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        platformFeeRatio(overrides?: CallOverrides): Promise<BigNumber>;
        reducePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeSwapIntervalsFromAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAllowedTokens(_tokens: PromiseOrValue<string>[], _allowed: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setOracle(_oracle: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPlatformFeeRatio(_platformFeeRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSwapFee(_swapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        swap(_tokens: PromiseOrValue<string>[], _pairsToSwap: IDCAHubSwapHandler.PairIndexesStruct[], _rewardRecipient: PromiseOrValue<string>, _callbackHandler: PromiseOrValue<string>, _borrow: PromiseOrValue<BigNumberish>[], _callbackData: PromiseOrValue<BytesLike>, _oracleData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        swapAmountDelta(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        swapData(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        swapFee(overrides?: CallOverrides): Promise<BigNumber>;
        terminate(_positionId: PromiseOrValue<BigNumberish>, _recipientUnswapped: PromiseOrValue<string>, _recipientSwapped: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        tokenMagnitude(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalCreatedPositions(overrides?: CallOverrides): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        userPosition(_positionId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        withdrawFromPlatformBalance(_amounts: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawSwapped(_positionId: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawSwappedMany(_positions: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        IMMEDIATE_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_FEE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_PLATFORM_FEE_RATIO(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        PLATFORM_WITHDRAW_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        PRIVILEGED_SWAPPER_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        TIME_LOCKED_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        accumRatio(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        activeSwapIntervals(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addSwapIntervalsToAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        allowedSwapIntervals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowedTokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[])'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'deposit(address,address,uint256,uint32,uint32,address,(address,uint8[])[],bytes)'(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, _amountOfSwaps: PromiseOrValue<BigNumberish>, _swapInterval: PromiseOrValue<BigNumberish>, _owner: PromiseOrValue<string>, _permissions: IDCAPermissionManager.PermissionSetStruct[], _miscellaneous: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getNextSwapInfo(_tokens: PromiseOrValue<string>[], _pairs: IDCAHubSwapHandler.PairIndexesStruct[], _calculatePrivilegedAvailability: PromiseOrValue<boolean>, _oracleData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        increasePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        oracle(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        permissionManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        platformBalance(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        platformFeeRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reducePosition(_positionId: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _newAmountOfSwaps: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeSwapIntervalsFromAllowedList(_swapIntervals: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAllowedTokens(_tokens: PromiseOrValue<string>[], _allowed: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setOracle(_oracle: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPlatformFeeRatio(_platformFeeRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSwapFee(_swapFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        swap(_tokens: PromiseOrValue<string>[], _pairsToSwap: IDCAHubSwapHandler.PairIndexesStruct[], _rewardRecipient: PromiseOrValue<string>, _callbackHandler: PromiseOrValue<string>, _borrow: PromiseOrValue<BigNumberish>[], _callbackData: PromiseOrValue<BytesLike>, _oracleData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        swapAmountDelta(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, arg3: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        swapData(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        swapFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        terminate(_positionId: PromiseOrValue<BigNumberish>, _recipientUnswapped: PromiseOrValue<string>, _recipientSwapped: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        tokenMagnitude(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalCreatedPositions(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        userPosition(_positionId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdrawFromPlatformBalance(_amounts: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawSwapped(_positionId: PromiseOrValue<BigNumberish>, _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawSwappedMany(_positions: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
