import Vue, { VueConstructor } from 'vue';
import { Store } from 'vuex';
import Router from 'vue-router';
import { IComponent } from './component';
import { IFilter } from './filter';
import { IPlugin } from './plugins';
import { IPrototype } from './prototype';
import { IRouter } from './router';
import { IStore } from './store';
import { IServiceWorker } from './serviceWorker';
import { IMixin } from './mixin';
import { IDirective } from './directive';
export declare namespace Maintainer {
    interface IBuildEnv {
        env: string;
        isLocal: boolean;
        isTest: boolean;
        isDev: boolean;
        isStage: boolean;
        isPreProduction: boolean;
        isProduction: boolean;
    }
    interface IResult<S> {
        buildEnv: IBuildEnv;
        router: Router | null;
        store: Store<S> | null;
    }
    interface IOption<V extends Vue, T, S, P> {
        showLogEnvs: string[];
        router?: IRouter<V>;
        store?: IStore<T, S>;
        plugins?: IPlugin<P> | null;
        serviceWorker?: IServiceWorker | null;
        prototype?: IPrototype | null;
        filter?: IFilter | null;
        component?: IComponent | null;
        mixin?: IMixin | null;
        directive?: IDirective | null;
    }
    function initialize<V extends Vue, T, S, P>(vue: VueConstructor<V>, maintainerOption: IOption<V, T, S, P>): IResult<S>;
    function getBuildEnv(): IBuildEnv;
}
