import { ComputedRef } from 'vue';
declare type ActionReturnType<T extends (...args: any) => any> = Promise<T extends (...args: any) => Promise<infer U> ? U : ReturnType<T>>;
interface ResultMap<T> {
    state: ComputedRef<T>;
    getters: ComputedRef<T extends (...args: any) => infer U ? U : never>;
    mutations: T extends (a: any) => any ? () => void : T extends (a: any, b: infer U) => any ? (payload: U) => void : never;
    actions: T extends (a: any) => any ? () => ActionReturnType<T> : T extends (a: any, b: infer U) => any ? (payload: U) => ActionReturnType<T> : never;
}
declare type ResultMapKey = keyof ResultMap<any>;
declare type HelperReturnType<RMK extends ResultMapKey, K extends string, Type> = {
    [key in K]: ResultMap<key extends keyof Type ? Type[key] : never>[RMK];
};
interface Helper<RMK extends ResultMapKey, RootType> {
    <K extends string>(keys: K[]): HelperReturnType<RMK, K, RootType>;
    <K extends string, N extends string>(namespace: N, keys: K[]): HelperReturnType<RMK, K, N extends keyof RootType ? RootType[N] : {}>;
    <K extends string>(map: Record<K, string | Function>): HelperReturnType<RMK, K, RootType>;
    <K extends string, N extends string>(namespace: N, map: Record<K, string | Function>): HelperReturnType<RMK, K, N extends keyof RootType ? RootType[N] : {}>;
}
export declare function createVuexHelpers<RootState, RootGetters, RootMutations, RootActions>(): {
    useState: Helper<"state", RootState>;
    useGetters: Helper<"getters", RootGetters>;
    useMutations: Helper<"mutations", RootMutations>;
    useActions: Helper<"actions", RootActions>;
};
export {};
