import * as Redux from 'redux';
import { AdaptableState } from '../../../AdaptableState/AdaptableState';
import { InitialState } from '../../../types';
import { IAdaptable } from '../../../AdaptableInterfaces/IAdaptable';
export interface LoadStoreConfig {
    adaptable: IAdaptable;
    adaptableStateKey: string;
    initialState?: InitialState;
    postLoadHook?: (state: AdaptableState) => AdaptableState;
}
export interface IAdaptableStore {
    TheStore: Redux.Store<AdaptableState>;
    Load: Promise<any>;
    loadStore: (config: LoadStoreConfig) => Promise<any>;
    getCurrentStorageState: () => AdaptableState | void;
    getPreviousStorageState: () => AdaptableState | void;
    saveStateNow: (adaptable: IAdaptable) => Promise<any>;
    on: (eventName: string, callback: (data?: any) => any) => () => void;
    onAny: (callback: (eventName: string, data?: any) => any) => () => void;
    onBeforeAny: (callback: (eventName: string, data?: any) => any) => () => void;
    emit: (eventName: string, data: any) => Promise<any>;
    destroy: () => void;
}
