import { Store } from "vuex";
import { VuexModule } from "./VuexModule";
export interface ModuleOptions {
    generateMutationSetters?: boolean;
}
export interface RegisterOptions {
    store: Store<any>;
    name: string;
}
export interface IVuexModule extends Dictionary<any> {
    __options: RegisterOptions;
}
export interface IModulePrototype {
    __mutations?: Dictionary<(payload?: any) => void>;
    __actions?: Dictionary<(payload?: any) => Promise<void>>;
}
export declare type ModulePrototype = IModulePrototype & Function;
declare type Dictionary<T> = {
    [k: string]: T;
};
interface ModuleDefinition {
    state: Dictionary<any>;
    moduleRefs: Dictionary<VuexModule>;
    getters: Dictionary<() => void>;
    mutations: Dictionary<(payload?: any) => void>;
    actions: Dictionary<(payload?: any) => Promise<void>>;
    localFunctions: Dictionary<(...args: any[]) => any>;
}
export declare class VuexClassModuleFactory {
    moduleOptions: ModuleOptions;
    instance: IVuexModule;
    registerOptions: RegisterOptions;
    definition: ModuleDefinition;
    constructor(classModule: ModulePrototype, instance: IVuexModule, moduleOptions: ModuleOptions);
    private init;
    registerVuexModule(): void;
    buildAccessor(): any;
    private buildThisProxy;
    private getMutationSetterName;
}
export {};
