import { IConfiguration, Overmind, IContext } from 'overmind';
import { Ref, Component } from 'vue';
export declare const withOvermind: (instance: Overmind<IConfiguration>, Component: Component) => {
    new (...args: any[]): {
        $: import("vue").ComponentInternalInstance;
        $data: {};
        $props: import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
        $attrs: {
            [x: string]: unknown;
        };
        $refs: {
            [x: string]: unknown;
        };
        $slots: Readonly<{
            [name: string]: import("vue").Slot;
        }>;
        $root: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, string>>;
        $parent: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, string>>;
        $emit: (event: string, ...args: any[]) => void;
        $el: any;
        $options: import("vue").ComponentOptionsBase<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string>;
        $forceUpdate: import("vue").ReactiveEffect<any>;
        $nextTick: typeof import("vue").nextTick;
        $watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean>): import("vue").WatchStopHandle;
    } & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & import("vue").ComponentOptionsBase<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string> & {
    props?: undefined;
} & ThisType<{
    $: import("vue").ComponentInternalInstance;
    $data: {};
    $props: Readonly<{}>;
    $attrs: {
        [x: string]: unknown;
    };
    $refs: {
        [x: string]: unknown;
    };
    $slots: Readonly<{
        [name: string]: import("vue").Slot;
    }>;
    $root: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, string>>;
    $parent: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, string>>;
    $emit: (event: string, ...args: any[]) => void;
    $el: any;
    $options: import("vue").ComponentOptionsBase<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string>;
    $forceUpdate: import("vue").ReactiveEffect<any>;
    $nextTick: typeof import("vue").nextTick;
    $watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean>): import("vue").WatchStopHandle;
} & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties>;
export interface StateHook<Context extends IContext<{
    state: {};
}>> {
    (): Ref<Context['state']>;
    <CB extends (state: Context['state']) => object>(cb: CB): CB extends (state: Context['state']) => infer O ? O extends object ? Ref<O> : never : never;
}
export declare function createStateHook<Context extends IContext<{
    state: {};
}>>(): StateHook<Context>;
export interface ActionsHook<Context extends IContext<{
    actions: {};
}>> {
    (): Ref<Context['actions']>;
    <CB extends (actions: Context['actions']) => object>(cb: CB): CB extends (actions: Context['actions']) => infer O ? O extends object ? Ref<O> : never : never;
}
export declare function createActionsHook<Context extends IContext<{
    actions: {};
}>>(): ActionsHook<Context>;
export interface EffectsHook<Context extends IContext<{
    effects: {};
}>> {
    (): Ref<Context['effects']>;
    <CB extends (effects: Context['effects']) => object>(cb: CB): CB extends (effects: Context['effects']) => infer O ? O extends object ? Ref<O> : never : never;
}
export declare function createEffectsHook<Context extends IContext<{
    effects: {};
}>>(): EffectsHook<Context>;
export declare function createReactionHook<Context extends IContext<{
    state: {};
}>>(): () => Context['reaction'];
export declare function createHooks<Context extends IContext<{
    state: {};
    actions: {};
    effects: {};
}>>(): {
    state: StateHook<Context>;
    actions: ActionsHook<Context>;
    effects: EffectsHook<Context>;
    reaction: () => Context["reaction"];
};
