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 namespace DataTypes {
    type VaultStruct = {
        owner: PromiseOrValue<string>;
        seriesId: PromiseOrValue<BytesLike>;
        ilkId: PromiseOrValue<BytesLike>;
    };
    type VaultStructOutput = [string, string, string] & {
        owner: string;
        seriesId: string;
        ilkId: string;
    };
}
export interface YieldProtocolLadleInterface extends utils.Interface {
    functions: {
        'LOCK()': FunctionFragment;
        'LOCK8605463013()': FunctionFragment;
        'ROOT()': FunctionFragment;
        'ROOT4146650865()': FunctionFragment;
        'addIntegration(address,bool)': FunctionFragment;
        'addJoin(bytes6,address)': FunctionFragment;
        'addModule(address,bool)': FunctionFragment;
        'addPool(bytes6,address)': FunctionFragment;
        'addToken(address,bool)': FunctionFragment;
        'batch(bytes[])': FunctionFragment;
        'borrowingFee()': FunctionFragment;
        'build(bytes6,bytes6,uint8)': FunctionFragment;
        'cauldron()': FunctionFragment;
        'close(bytes12,address,int128,int128)': FunctionFragment;
        'closeFromLadle(bytes12,address)': FunctionFragment;
        'destroy(bytes12)': FunctionFragment;
        'exitEther(address)': FunctionFragment;
        'forwardDaiPermit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)': FunctionFragment;
        'forwardPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment;
        'getRoleAdmin(bytes4)': FunctionFragment;
        'give(bytes12,address)': FunctionFragment;
        'grantRole(bytes4,address)': FunctionFragment;
        'grantRoles(bytes4[],address)': FunctionFragment;
        'hasRole(bytes4,address)': FunctionFragment;
        'integrations(address)': FunctionFragment;
        'joinEther(bytes6)': FunctionFragment;
        'joins(bytes6)': FunctionFragment;
        'lockRole(bytes4)': FunctionFragment;
        'moduleCall(address,bytes)': FunctionFragment;
        'modules(address)': FunctionFragment;
        'pools(bytes6)': FunctionFragment;
        'pour(bytes12,address,int128,int128)': FunctionFragment;
        'redeem(bytes6,address,uint256)': FunctionFragment;
        'renounceRole(bytes4,address)': FunctionFragment;
        'repay(bytes12,address,int128,uint128)': FunctionFragment;
        'repayFromLadle(bytes12,address)': FunctionFragment;
        'repayVault(bytes12,address,int128,uint128)': FunctionFragment;
        'retrieve(address,address)': FunctionFragment;
        'revokeRole(bytes4,address)': FunctionFragment;
        'revokeRoles(bytes4[],address)': FunctionFragment;
        'roll(bytes12,bytes6,uint8,uint128)': FunctionFragment;
        'route(address,bytes)': FunctionFragment;
        'router()': FunctionFragment;
        'serve(bytes12,address,uint128,uint128,uint128)': FunctionFragment;
        'setFee(uint256)': FunctionFragment;
        'setRoleAdmin(bytes4,bytes4)': FunctionFragment;
        'stir(bytes12,bytes12,uint128,uint128)': FunctionFragment;
        'tokens(address)': FunctionFragment;
        'transfer(address,address,uint128)': FunctionFragment;
        'tweak(bytes12,bytes6,bytes6)': FunctionFragment;
        'weth()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'LOCK' | 'LOCK8605463013' | 'ROOT' | 'ROOT4146650865' | 'addIntegration' | 'addJoin' | 'addModule' | 'addPool' | 'addToken' | 'batch' | 'borrowingFee' | 'build' | 'cauldron' | 'close' | 'closeFromLadle' | 'destroy' | 'exitEther' | 'forwardDaiPermit' | 'forwardPermit' | 'getRoleAdmin' | 'give' | 'grantRole' | 'grantRoles' | 'hasRole' | 'integrations' | 'joinEther' | 'joins' | 'lockRole' | 'moduleCall' | 'modules' | 'pools' | 'pour' | 'redeem' | 'renounceRole' | 'repay' | 'repayFromLadle' | 'repayVault' | 'retrieve' | 'revokeRole' | 'revokeRoles' | 'roll' | 'route' | 'router' | 'serve' | 'setFee' | 'setRoleAdmin' | 'stir' | 'tokens' | 'transfer' | 'tweak' | 'weth'): FunctionFragment;
    encodeFunctionData(functionFragment: 'LOCK', values?: undefined): string;
    encodeFunctionData(functionFragment: 'LOCK8605463013', values?: undefined): string;
    encodeFunctionData(functionFragment: 'ROOT', values?: undefined): string;
    encodeFunctionData(functionFragment: 'ROOT4146650865', values?: undefined): string;
    encodeFunctionData(functionFragment: 'addIntegration', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'addJoin', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'addModule', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'addPool', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'addToken', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'batch', values: [PromiseOrValue<BytesLike>[]]): string;
    encodeFunctionData(functionFragment: 'borrowingFee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'build', values: [PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'cauldron', values?: undefined): string;
    encodeFunctionData(functionFragment: 'close', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'closeFromLadle', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'destroy', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'exitEther', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'forwardDaiPermit', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<boolean>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'forwardPermit', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'give', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'grantRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'grantRoles', values: [PromiseOrValue<BytesLike>[], PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'integrations', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'joinEther', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'joins', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'lockRole', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'moduleCall', values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'modules', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'pools', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'pour', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'redeem', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'renounceRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'repay', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'repayFromLadle', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'repayVault', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'retrieve', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeRoles', values: [PromiseOrValue<BytesLike>[], PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'roll', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'route', values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'router', values?: undefined): string;
    encodeFunctionData(functionFragment: 'serve', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'setFee', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setRoleAdmin', values: [PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'stir', values: [
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'tokens', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'transfer', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'tweak', values: [PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'weth', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'LOCK', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'LOCK8605463013', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ROOT', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ROOT4146650865', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addIntegration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addJoin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addModule', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'batch', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowingFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'build', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'cauldron', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'close', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'closeFromLadle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'destroy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exitEther', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'forwardDaiPermit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'forwardPermit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'give', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'grantRoles', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'integrations', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'joinEther', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'joins', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lockRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'moduleCall', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'modules', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pools', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pour', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repay', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repayFromLadle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repayVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'retrieve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeRoles', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'roll', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'route', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'router', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'serve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRoleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stir', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokens', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tweak', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'weth', data: BytesLike): Result;
    events: {
        'FeeSet(uint256)': EventFragment;
        'IntegrationAdded(address,bool)': EventFragment;
        'JoinAdded(bytes6,address)': EventFragment;
        'ModuleAdded(address,bool)': EventFragment;
        'PoolAdded(bytes6,address)': EventFragment;
        'RoleAdminChanged(bytes4,bytes4)': EventFragment;
        'RoleGranted(bytes4,address,address)': EventFragment;
        'RoleRevoked(bytes4,address,address)': EventFragment;
        'TokenAdded(address,bool)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'FeeSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'IntegrationAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'JoinAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ModuleAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PoolAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TokenAdded'): EventFragment;
}
export interface FeeSetEventObject {
    fee: BigNumber;
}
export declare type FeeSetEvent = TypedEvent<[BigNumber], FeeSetEventObject>;
export declare type FeeSetEventFilter = TypedEventFilter<FeeSetEvent>;
export interface IntegrationAddedEventObject {
    integration: string;
    set: boolean;
}
export declare type IntegrationAddedEvent = TypedEvent<[string, boolean], IntegrationAddedEventObject>;
export declare type IntegrationAddedEventFilter = TypedEventFilter<IntegrationAddedEvent>;
export interface JoinAddedEventObject {
    assetId: string;
    join: string;
}
export declare type JoinAddedEvent = TypedEvent<[string, string], JoinAddedEventObject>;
export declare type JoinAddedEventFilter = TypedEventFilter<JoinAddedEvent>;
export interface ModuleAddedEventObject {
    module: string;
    set: boolean;
}
export declare type ModuleAddedEvent = TypedEvent<[string, boolean], ModuleAddedEventObject>;
export declare type ModuleAddedEventFilter = TypedEventFilter<ModuleAddedEvent>;
export interface PoolAddedEventObject {
    seriesId: string;
    pool: string;
}
export declare type PoolAddedEvent = TypedEvent<[string, string], PoolAddedEventObject>;
export declare type PoolAddedEventFilter = TypedEventFilter<PoolAddedEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    newAdminRole: string;
}
export declare type RoleAdminChangedEvent = TypedEvent<[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 TokenAddedEventObject {
    token: string;
    set: boolean;
}
export declare type TokenAddedEvent = TypedEvent<[string, boolean], TokenAddedEventObject>;
export declare type TokenAddedEventFilter = TypedEventFilter<TokenAddedEvent>;
export interface YieldProtocolLadle extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: YieldProtocolLadleInterface;
    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: {
        LOCK(overrides?: CallOverrides): Promise<[string]>;
        LOCK8605463013(overrides?: CallOverrides): Promise<[string]>;
        ROOT(overrides?: CallOverrides): Promise<[string]>;
        ROOT4146650865(overrides?: CallOverrides): Promise<[string]>;
        addIntegration(integration: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addJoin(assetId: PromiseOrValue<BytesLike>, join: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addModule(module: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addPool(seriesId: PromiseOrValue<BytesLike>, pool: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addToken(token: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        batch(calls: PromiseOrValue<BytesLike>[], overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrowingFee(overrides?: CallOverrides): Promise<[BigNumber]>;
        build(seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        cauldron(overrides?: CallOverrides): Promise<[string]>;
        close(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        closeFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        destroy(vaultId_: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exitEther(to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        forwardDaiPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, nonce: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, allowed: PromiseOrValue<boolean>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        forwardPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        give(vaultId_: PromiseOrValue<BytesLike>, receiver: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        grantRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        integrations(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        joinEther(etherId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        joins(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        lockRole(role: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        moduleCall(module: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        modules(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        pools(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        pour(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeem(seriesId: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repay(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, min: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repayFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repayVault(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        retrieve(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        roll(vaultId_: PromiseOrValue<BytesLike>, newSeriesId: PromiseOrValue<BytesLike>, loan: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        route(integration: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        router(overrides?: CallOverrides): Promise<[string]>;
        serve(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, base: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRoleAdmin(role: PromiseOrValue<BytesLike>, adminRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stir(from: PromiseOrValue<BytesLike>, to: PromiseOrValue<BytesLike>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        tokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        transfer(token: PromiseOrValue<string>, receiver: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        tweak(vaultId_: PromiseOrValue<BytesLike>, seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        weth(overrides?: CallOverrides): Promise<[string]>;
    };
    LOCK(overrides?: CallOverrides): Promise<string>;
    LOCK8605463013(overrides?: CallOverrides): Promise<string>;
    ROOT(overrides?: CallOverrides): Promise<string>;
    ROOT4146650865(overrides?: CallOverrides): Promise<string>;
    addIntegration(integration: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addJoin(assetId: PromiseOrValue<BytesLike>, join: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addModule(module: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addPool(seriesId: PromiseOrValue<BytesLike>, pool: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addToken(token: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    batch(calls: PromiseOrValue<BytesLike>[], overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrowingFee(overrides?: CallOverrides): Promise<BigNumber>;
    build(seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    cauldron(overrides?: CallOverrides): Promise<string>;
    close(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    closeFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    destroy(vaultId_: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exitEther(to: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    forwardDaiPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, nonce: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, allowed: PromiseOrValue<boolean>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    forwardPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    give(vaultId_: PromiseOrValue<BytesLike>, receiver: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    grantRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    integrations(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    joinEther(etherId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    joins(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    lockRole(role: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    moduleCall(module: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    modules(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    pools(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    pour(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeem(seriesId: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repay(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, min: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repayFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repayVault(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    retrieve(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    roll(vaultId_: PromiseOrValue<BytesLike>, newSeriesId: PromiseOrValue<BytesLike>, loan: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    route(integration: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    router(overrides?: CallOverrides): Promise<string>;
    serve(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, base: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRoleAdmin(role: PromiseOrValue<BytesLike>, adminRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stir(from: PromiseOrValue<BytesLike>, to: PromiseOrValue<BytesLike>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    tokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    transfer(token: PromiseOrValue<string>, receiver: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    tweak(vaultId_: PromiseOrValue<BytesLike>, seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    weth(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        LOCK(overrides?: CallOverrides): Promise<string>;
        LOCK8605463013(overrides?: CallOverrides): Promise<string>;
        ROOT(overrides?: CallOverrides): Promise<string>;
        ROOT4146650865(overrides?: CallOverrides): Promise<string>;
        addIntegration(integration: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        addJoin(assetId: PromiseOrValue<BytesLike>, join: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        addModule(module: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        addPool(seriesId: PromiseOrValue<BytesLike>, pool: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        addToken(token: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        batch(calls: PromiseOrValue<BytesLike>[], overrides?: CallOverrides): Promise<string[]>;
        borrowingFee(overrides?: CallOverrides): Promise<BigNumber>;
        build(seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string, DataTypes.VaultStructOutput]>;
        cauldron(overrides?: CallOverrides): Promise<string>;
        close(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        closeFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        destroy(vaultId_: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        exitEther(to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        forwardDaiPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, nonce: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, allowed: PromiseOrValue<boolean>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        forwardPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        give(vaultId_: PromiseOrValue<BytesLike>, receiver: PromiseOrValue<string>, overrides?: CallOverrides): Promise<DataTypes.VaultStructOutput>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        grantRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        integrations(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        joinEther(etherId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        joins(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        lockRole(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        moduleCall(module: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        modules(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        pools(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        pour(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        redeem(seriesId: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        repay(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, min: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        repayFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        repayVault(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        retrieve(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        roll(vaultId_: PromiseOrValue<BytesLike>, newSeriesId: PromiseOrValue<BytesLike>, loan: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            DataTypes.VaultStructOutput,
            BigNumber
        ] & {
            vault: DataTypes.VaultStructOutput;
            newDebt: BigNumber;
        }>;
        route(integration: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        router(overrides?: CallOverrides): Promise<string>;
        serve(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, base: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        setFee(fee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRoleAdmin(role: PromiseOrValue<BytesLike>, adminRole: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        stir(from: PromiseOrValue<BytesLike>, to: PromiseOrValue<BytesLike>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        tokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        transfer(token: PromiseOrValue<string>, receiver: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        tweak(vaultId_: PromiseOrValue<BytesLike>, seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<DataTypes.VaultStructOutput>;
        weth(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        'FeeSet(uint256)'(fee?: null): FeeSetEventFilter;
        FeeSet(fee?: null): FeeSetEventFilter;
        'IntegrationAdded(address,bool)'(integration?: PromiseOrValue<string> | null, set?: PromiseOrValue<boolean> | null): IntegrationAddedEventFilter;
        IntegrationAdded(integration?: PromiseOrValue<string> | null, set?: PromiseOrValue<boolean> | null): IntegrationAddedEventFilter;
        'JoinAdded(bytes6,address)'(assetId?: PromiseOrValue<BytesLike> | null, join?: PromiseOrValue<string> | null): JoinAddedEventFilter;
        JoinAdded(assetId?: PromiseOrValue<BytesLike> | null, join?: PromiseOrValue<string> | null): JoinAddedEventFilter;
        'ModuleAdded(address,bool)'(module?: PromiseOrValue<string> | null, set?: PromiseOrValue<boolean> | null): ModuleAddedEventFilter;
        ModuleAdded(module?: PromiseOrValue<string> | null, set?: PromiseOrValue<boolean> | null): ModuleAddedEventFilter;
        'PoolAdded(bytes6,address)'(seriesId?: PromiseOrValue<BytesLike> | null, pool?: PromiseOrValue<string> | null): PoolAddedEventFilter;
        PoolAdded(seriesId?: PromiseOrValue<BytesLike> | null, pool?: PromiseOrValue<string> | null): PoolAddedEventFilter;
        'RoleAdminChanged(bytes4,bytes4)'(role?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        'RoleGranted(bytes4,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(bytes4,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;
        'TokenAdded(address,bool)'(token?: PromiseOrValue<string> | null, set?: PromiseOrValue<boolean> | null): TokenAddedEventFilter;
        TokenAdded(token?: PromiseOrValue<string> | null, set?: PromiseOrValue<boolean> | null): TokenAddedEventFilter;
    };
    estimateGas: {
        LOCK(overrides?: CallOverrides): Promise<BigNumber>;
        LOCK8605463013(overrides?: CallOverrides): Promise<BigNumber>;
        ROOT(overrides?: CallOverrides): Promise<BigNumber>;
        ROOT4146650865(overrides?: CallOverrides): Promise<BigNumber>;
        addIntegration(integration: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addJoin(assetId: PromiseOrValue<BytesLike>, join: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addModule(module: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addPool(seriesId: PromiseOrValue<BytesLike>, pool: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addToken(token: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        batch(calls: PromiseOrValue<BytesLike>[], overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrowingFee(overrides?: CallOverrides): Promise<BigNumber>;
        build(seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        cauldron(overrides?: CallOverrides): Promise<BigNumber>;
        close(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        closeFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        destroy(vaultId_: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exitEther(to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        forwardDaiPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, nonce: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, allowed: PromiseOrValue<boolean>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        forwardPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        give(vaultId_: PromiseOrValue<BytesLike>, receiver: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        grantRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        integrations(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        joinEther(etherId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        joins(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        lockRole(role: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        moduleCall(module: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        modules(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        pools(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        pour(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeem(seriesId: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repay(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, min: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repayFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repayVault(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        retrieve(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        roll(vaultId_: PromiseOrValue<BytesLike>, newSeriesId: PromiseOrValue<BytesLike>, loan: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        route(integration: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        router(overrides?: CallOverrides): Promise<BigNumber>;
        serve(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, base: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRoleAdmin(role: PromiseOrValue<BytesLike>, adminRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stir(from: PromiseOrValue<BytesLike>, to: PromiseOrValue<BytesLike>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        tokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        transfer(token: PromiseOrValue<string>, receiver: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        tweak(vaultId_: PromiseOrValue<BytesLike>, seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        weth(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        LOCK(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LOCK8605463013(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ROOT(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ROOT4146650865(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addIntegration(integration: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addJoin(assetId: PromiseOrValue<BytesLike>, join: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addModule(module: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addPool(seriesId: PromiseOrValue<BytesLike>, pool: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addToken(token: PromiseOrValue<string>, set: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        batch(calls: PromiseOrValue<BytesLike>[], overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrowingFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        build(seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, salt: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        cauldron(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        close(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        closeFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        destroy(vaultId_: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exitEther(to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        forwardDaiPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, nonce: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, allowed: PromiseOrValue<boolean>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        forwardPermit(token: PromiseOrValue<string>, spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        give(vaultId_: PromiseOrValue<BytesLike>, receiver: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        grantRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        integrations(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        joinEther(etherId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        joins(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lockRole(role: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        moduleCall(module: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        modules(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pools(arg0: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pour(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeem(seriesId: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repay(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, min: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repayFromLadle(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repayVault(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        retrieve(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRoles(roles: PromiseOrValue<BytesLike>[], account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        roll(vaultId_: PromiseOrValue<BytesLike>, newSeriesId: PromiseOrValue<BytesLike>, loan: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        route(integration: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        router(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        serve(vaultId_: PromiseOrValue<BytesLike>, to: PromiseOrValue<string>, ink: PromiseOrValue<BigNumberish>, base: PromiseOrValue<BigNumberish>, max: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRoleAdmin(role: PromiseOrValue<BytesLike>, adminRole: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stir(from: PromiseOrValue<BytesLike>, to: PromiseOrValue<BytesLike>, ink: PromiseOrValue<BigNumberish>, art: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        tokens(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(token: PromiseOrValue<string>, receiver: PromiseOrValue<string>, wad: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        tweak(vaultId_: PromiseOrValue<BytesLike>, seriesId: PromiseOrValue<BytesLike>, ilkId: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        weth(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
