/**
 * The MIT License (MIT)
 * Copyright (c) Taketoshi Aono
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * @fileoverview
 * @author Taketoshi Aono
 */
import { StoreConstructor, Store, StateFactory } from './store/store';
import { Intent, IntentConstructor } from './intent/intent';
import { Handler } from './handler/handler';
import { StateHandler } from './handler/state-handler';
import { IntentHandler } from './intent/intent-handler';
import { SubjectTree } from './subject';
/**
 * Type definition of state which created by StoreGroup.
 */
export interface StoreGroupState {
    [key: string]: any;
}
export declare class Provisioning<ContextType extends {
    provisioning?: Provisioning<any>;
    __intent?: Intent;
    __subject?: SubjectTree;
}> {
    private name;
    private context;
    private intentConstructors;
    private storeConstructors;
    private stateFactory;
    private service;
    private stateHandlers;
    private intentAdvice;
    private subscription;
    private intent;
    private subject;
    private isDisposed;
    private handlerSubscriptions;
    private unobservablifiedState;
    private subscribers;
    private state;
    private handlers;
    private devTools;
    private devToolsSubscribers;
    private cache;
    constructor(name: string, context: ContextType, intentConstructors: {
        [key: string]: IntentConstructor;
    }, storeConstructors: StoreConstructor<any, any>[], stateFactory?: StateFactory, service?: {
        [key: string]: any;
    }, stateHandlers?: {
        [key: string]: StateHandler;
    }, intentAdvice?: (intentInstance: any) => any);
    dispose(removeCache?: boolean): void;
    prepare(): void;
    getStores(): Store<any>[];
    getState(): any;
    getIntentHandler(): IntentHandler;
    getIntentInstance(): any;
    getIntent(): Intent;
    getSubject(): SubjectTree;
    subscribe(subscriber: (state: any) => void, runInitial?: boolean): () => void;
    getHandlers(): {
        [key: string]: Handler;
    };
    private subscribeHandler;
    private notifyUpdate;
    private notifyUpdateView;
}
