import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../common";
export declare type AllowanceStruct = {
    token: PromiseOrValue<string>;
    allowanceTarget: PromiseOrValue<string>;
    minAllowance: PromiseOrValue<BigNumberish>;
};
export declare type AllowanceStructOutput = [string, string, BigNumber] & {
    token: string;
    allowanceTarget: string;
    minAllowance: BigNumber;
};
export declare type SwapContextStruct = {
    swapperIndex: PromiseOrValue<BigNumberish>;
    value: PromiseOrValue<BigNumberish>;
};
export declare type SwapContextStructOutput = [number, BigNumber] & {
    swapperIndex: number;
    value: BigNumber;
};
export declare type TransferOutBalanceStruct = {
    token: PromiseOrValue<string>;
    recipient: PromiseOrValue<string>;
};
export declare type TransferOutBalanceStructOutput = [string, string] & {
    token: string;
    recipient: string;
};
export declare namespace IDCAFeeManager {
    type PositionBalanceStruct = {
        positionId: PromiseOrValue<BigNumberish>;
        from: PromiseOrValue<string>;
        to: PromiseOrValue<string>;
        swapped: PromiseOrValue<BigNumberish>;
        remaining: PromiseOrValue<BigNumberish>;
    };
    type PositionBalanceStructOutput = [
        BigNumber,
        string,
        string,
        BigNumber,
        BigNumber
    ] & {
        positionId: BigNumber;
        from: string;
        to: string;
        swapped: BigNumber;
        remaining: BigNumber;
    };
    type AvailableBalanceStruct = {
        token: PromiseOrValue<string>;
        platformBalance: PromiseOrValue<BigNumberish>;
        feeManagerBalance: PromiseOrValue<BigNumberish>;
        positions: IDCAFeeManager.PositionBalanceStruct[];
    };
    type AvailableBalanceStructOutput = [
        string,
        BigNumber,
        BigNumber,
        IDCAFeeManager.PositionBalanceStructOutput[]
    ] & {
        token: string;
        platformBalance: BigNumber;
        feeManagerBalance: BigNumber;
        positions: IDCAFeeManager.PositionBalanceStructOutput[];
    };
    type AmountToFillStruct = {
        token: PromiseOrValue<string>;
        amountOfSwaps: PromiseOrValue<BigNumberish>;
        amount: PromiseOrValue<BigNumberish>;
    };
    type AmountToFillStructOutput = [string, number, BigNumber] & {
        token: string;
        amountOfSwaps: number;
        amount: BigNumber;
    };
    type TargetTokenShareStruct = {
        token: PromiseOrValue<string>;
        shares: PromiseOrValue<BigNumberish>;
    };
    type TargetTokenShareStructOutput = [string, number] & {
        token: string;
        shares: number;
    };
    type RunSwapsAndTransferManyParamsStruct = {
        allowanceTargets: AllowanceStruct[];
        swappers: PromiseOrValue<string>[];
        swaps: PromiseOrValue<BytesLike>[];
        swapContext: SwapContextStruct[];
        transferOutBalance: TransferOutBalanceStruct[];
    };
    type RunSwapsAndTransferManyParamsStructOutput = [
        AllowanceStructOutput[],
        string[],
        string[],
        SwapContextStructOutput[],
        TransferOutBalanceStructOutput[]
    ] & {
        allowanceTargets: AllowanceStructOutput[];
        swappers: string[];
        swaps: string[];
        swapContext: SwapContextStructOutput[];
        transferOutBalance: TransferOutBalanceStructOutput[];
    };
}
export declare namespace ISwapAdapter {
    type RevokeActionStruct = {
        spender: PromiseOrValue<string>;
        tokens: PromiseOrValue<string>[];
    };
    type RevokeActionStructOutput = [string, string[]] & {
        spender: string;
        tokens: string[];
    };
}
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[];
    };
}
export interface DCAFeeManagerInterface extends utils.Interface {
    functions: {
        "ADMIN_ROLE()": FunctionFragment;
        "DEFAULT_ADMIN_ROLE()": FunctionFragment;
        "MAX_TOKEN_TOTAL_SHARE()": FunctionFragment;
        "PROTOCOL_TOKEN()": FunctionFragment;
        "SUPER_ADMIN_ROLE()": FunctionFragment;
        "SWAPPER_REGISTRY()": FunctionFragment;
        "SWAP_INTERVAL()": FunctionFragment;
        "availableBalances(address,address[])": FunctionFragment;
        "fillPositions(address,(address,uint32,uint256)[],(address,uint16)[])": FunctionFragment;
        "getPositionKey(address,address)": FunctionFragment;
        "getRoleAdmin(bytes32)": FunctionFragment;
        "grantRole(bytes32,address)": FunctionFragment;
        "hasRole(bytes32,address)": FunctionFragment;
        "multicall(bytes[])": FunctionFragment;
        "positions(bytes32)": FunctionFragment;
        "renounceRole(bytes32,address)": FunctionFragment;
        "revokeAllowances((address,address[])[])": FunctionFragment;
        "revokeRole(bytes32,address)": FunctionFragment;
        "runSwapsAndTransferMany(((address,address,uint256)[],address[],bytes[],(uint8,uint256)[],(address,address)[]))": FunctionFragment;
        "supportsInterface(bytes4)": FunctionFragment;
        "terminatePositions(address,uint256[],address)": FunctionFragment;
        "withdrawFromBalance((address,uint256)[],address)": FunctionFragment;
        "withdrawFromPlatformBalance(address,(address,uint256)[],address)": FunctionFragment;
        "withdrawFromPositions(address,(address,uint256[])[],address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "ADMIN_ROLE" | "DEFAULT_ADMIN_ROLE" | "MAX_TOKEN_TOTAL_SHARE" | "PROTOCOL_TOKEN" | "SUPER_ADMIN_ROLE" | "SWAPPER_REGISTRY" | "SWAP_INTERVAL" | "availableBalances" | "fillPositions" | "getPositionKey" | "getRoleAdmin" | "grantRole" | "hasRole" | "multicall" | "positions" | "renounceRole" | "revokeAllowances" | "revokeRole" | "runSwapsAndTransferMany" | "supportsInterface" | "terminatePositions" | "withdrawFromBalance" | "withdrawFromPlatformBalance" | "withdrawFromPositions"): FunctionFragment;
    encodeFunctionData(functionFragment: "ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "MAX_TOKEN_TOTAL_SHARE", values?: undefined): string;
    encodeFunctionData(functionFragment: "PROTOCOL_TOKEN", values?: undefined): string;
    encodeFunctionData(functionFragment: "SUPER_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "SWAPPER_REGISTRY", values?: undefined): string;
    encodeFunctionData(functionFragment: "SWAP_INTERVAL", values?: undefined): string;
    encodeFunctionData(functionFragment: "availableBalances", values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "fillPositions", values: [
        PromiseOrValue<string>,
        IDCAFeeManager.AmountToFillStruct[],
        IDCAFeeManager.TargetTokenShareStruct[]
    ]): string;
    encodeFunctionData(functionFragment: "getPositionKey", values: [PromiseOrValue<string>, PromiseOrValue<string>]): 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: "multicall", values: [PromiseOrValue<BytesLike>[]]): string;
    encodeFunctionData(functionFragment: "positions", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "renounceRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "revokeAllowances", values: [ISwapAdapter.RevokeActionStruct[]]): string;
    encodeFunctionData(functionFragment: "revokeRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "runSwapsAndTransferMany", values: [IDCAFeeManager.RunSwapsAndTransferManyParamsStruct]): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "terminatePositions", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>[],
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "withdrawFromBalance", values: [IDCAHub.AmountOfTokenStruct[], PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "withdrawFromPlatformBalance", values: [
        PromiseOrValue<string>,
        IDCAHub.AmountOfTokenStruct[],
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "withdrawFromPositions", values: [
        PromiseOrValue<string>,
        IDCAHubPositionHandler.PositionSetStruct[],
        PromiseOrValue<string>
    ]): string;
    decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "MAX_TOKEN_TOTAL_SHARE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "PROTOCOL_TOKEN", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "SUPER_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "SWAPPER_REGISTRY", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "SWAP_INTERVAL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "availableBalances", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fillPositions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionKey", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "positions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "revokeAllowances", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "runSwapsAndTransferMany", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "terminatePositions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawFromBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawFromPlatformBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawFromPositions", data: BytesLike): Result;
    events: {
        "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment;
        "RoleGranted(bytes32,address,address)": EventFragment;
        "RoleRevoked(bytes32,address,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment;
}
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 DCAFeeManager extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: DCAFeeManagerInterface;
    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: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        MAX_TOKEN_TOTAL_SHARE(overrides?: CallOverrides): Promise<[number]>;
        PROTOCOL_TOKEN(overrides?: CallOverrides): Promise<[string]>;
        SUPER_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        SWAPPER_REGISTRY(overrides?: CallOverrides): Promise<[string]>;
        SWAP_INTERVAL(overrides?: CallOverrides): Promise<[number]>;
        availableBalances(_hub: PromiseOrValue<string>, _tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<[
            IDCAFeeManager.AvailableBalanceStructOutput[]
        ] & {
            _balances: IDCAFeeManager.AvailableBalanceStructOutput[];
        }>;
        fillPositions(_hub: PromiseOrValue<string>, _amounts: IDCAFeeManager.AmountToFillStruct[], _distribution: IDCAFeeManager.TargetTokenShareStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getPositionKey(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        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]>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        positions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[BigNumber]>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeAllowances(_revokeActions: ISwapAdapter.RevokeActionStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        runSwapsAndTransferMany(_parameters: IDCAFeeManager.RunSwapsAndTransferManyParamsStruct, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        terminatePositions(_hub: PromiseOrValue<string>, _positionIds: PromiseOrValue<BigNumberish>[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFromBalance(_amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFromPlatformBalance(_hub: PromiseOrValue<string>, _amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFromPositions(_hub: PromiseOrValue<string>, _positionSets: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    MAX_TOKEN_TOTAL_SHARE(overrides?: CallOverrides): Promise<number>;
    PROTOCOL_TOKEN(overrides?: CallOverrides): Promise<string>;
    SUPER_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    SWAPPER_REGISTRY(overrides?: CallOverrides): Promise<string>;
    SWAP_INTERVAL(overrides?: CallOverrides): Promise<number>;
    availableBalances(_hub: PromiseOrValue<string>, _tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<IDCAFeeManager.AvailableBalanceStructOutput[]>;
    fillPositions(_hub: PromiseOrValue<string>, _amounts: IDCAFeeManager.AmountToFillStruct[], _distribution: IDCAFeeManager.TargetTokenShareStruct[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getPositionKey(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    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>;
    multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    positions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeAllowances(_revokeActions: ISwapAdapter.RevokeActionStruct[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    runSwapsAndTransferMany(_parameters: IDCAFeeManager.RunSwapsAndTransferManyParamsStruct, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    terminatePositions(_hub: PromiseOrValue<string>, _positionIds: PromiseOrValue<BigNumberish>[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFromBalance(_amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFromPlatformBalance(_hub: PromiseOrValue<string>, _amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFromPositions(_hub: PromiseOrValue<string>, _positionSets: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        MAX_TOKEN_TOTAL_SHARE(overrides?: CallOverrides): Promise<number>;
        PROTOCOL_TOKEN(overrides?: CallOverrides): Promise<string>;
        SUPER_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        SWAPPER_REGISTRY(overrides?: CallOverrides): Promise<string>;
        SWAP_INTERVAL(overrides?: CallOverrides): Promise<number>;
        availableBalances(_hub: PromiseOrValue<string>, _tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<IDCAFeeManager.AvailableBalanceStructOutput[]>;
        fillPositions(_hub: PromiseOrValue<string>, _amounts: IDCAFeeManager.AmountToFillStruct[], _distribution: IDCAFeeManager.TargetTokenShareStruct[], overrides?: CallOverrides): Promise<void>;
        getPositionKey(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        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>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: CallOverrides): Promise<string[]>;
        positions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeAllowances(_revokeActions: ISwapAdapter.RevokeActionStruct[], overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        runSwapsAndTransferMany(_parameters: IDCAFeeManager.RunSwapsAndTransferManyParamsStruct, overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        terminatePositions(_hub: PromiseOrValue<string>, _positionIds: PromiseOrValue<BigNumberish>[], _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdrawFromBalance(_amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdrawFromPlatformBalance(_hub: PromiseOrValue<string>, _amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdrawFromPositions(_hub: PromiseOrValue<string>, _positionSets: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "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;
    };
    estimateGas: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_TOKEN_TOTAL_SHARE(overrides?: CallOverrides): Promise<BigNumber>;
        PROTOCOL_TOKEN(overrides?: CallOverrides): Promise<BigNumber>;
        SUPER_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        SWAPPER_REGISTRY(overrides?: CallOverrides): Promise<BigNumber>;
        SWAP_INTERVAL(overrides?: CallOverrides): Promise<BigNumber>;
        availableBalances(_hub: PromiseOrValue<string>, _tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<BigNumber>;
        fillPositions(_hub: PromiseOrValue<string>, _amounts: IDCAFeeManager.AmountToFillStruct[], _distribution: IDCAFeeManager.TargetTokenShareStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getPositionKey(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, 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>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        positions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeAllowances(_revokeActions: ISwapAdapter.RevokeActionStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        runSwapsAndTransferMany(_parameters: IDCAFeeManager.RunSwapsAndTransferManyParamsStruct, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        terminatePositions(_hub: PromiseOrValue<string>, _positionIds: PromiseOrValue<BigNumberish>[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFromBalance(_amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFromPlatformBalance(_hub: PromiseOrValue<string>, _amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFromPositions(_hub: PromiseOrValue<string>, _positionSets: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_TOKEN_TOTAL_SHARE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        PROTOCOL_TOKEN(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        SUPER_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        SWAPPER_REGISTRY(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        SWAP_INTERVAL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        availableBalances(_hub: PromiseOrValue<string>, _tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fillPositions(_hub: PromiseOrValue<string>, _amounts: IDCAFeeManager.AmountToFillStruct[], _distribution: IDCAFeeManager.TargetTokenShareStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getPositionKey(_from: PromiseOrValue<string>, _to: PromiseOrValue<string>, 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>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        positions(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeAllowances(_revokeActions: ISwapAdapter.RevokeActionStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        runSwapsAndTransferMany(_parameters: IDCAFeeManager.RunSwapsAndTransferManyParamsStruct, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        terminatePositions(_hub: PromiseOrValue<string>, _positionIds: PromiseOrValue<BigNumberish>[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFromBalance(_amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFromPlatformBalance(_hub: PromiseOrValue<string>, _amountToWithdraw: IDCAHub.AmountOfTokenStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFromPositions(_hub: PromiseOrValue<string>, _positionSets: IDCAHubPositionHandler.PositionSetStruct[], _recipient: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=DCAFeeManager.d.ts.map