import { EventEmitter } from 'events';
import type { FluxAction, FluxMiddlewareType, FluxOptions, FluxStore } from './Flux.types';
export declare class FluxFramework extends EventEmitter {
    static initFlux: boolean;
    isInit: boolean;
    readonly pluginTypes: readonly string[];
    private state;
    private storeActions;
    private readonly defaultOptions;
    private middleware;
    private options;
    private stateCache;
    private stateChanged;
    constructor();
    addMiddleware(middleware: FluxMiddlewareType[]): void;
    clearAppData(): Promise<boolean>;
    clearMiddleware(): boolean;
    removeStores(storeNames: string[]): void;
    dispatch(action: FluxAction, silent?: boolean): Promise<FluxAction>;
    getOptions(): FluxOptions;
    getState<T = unknown>(path?: string | string[], defaultValue?: T): T;
    getStore(name?: string): FluxStore | undefined;
    init(options?: FluxOptions, reset?: boolean): Promise<FluxFramework>;
    onInit(listener: (...args: any[]) => void): void;
    offInit(listener: (...args: any[]) => void): void;
    off(eventType: string, listener: (...args: any[]) => void): this;
    on(eventType: string, listener: (...args: any[]) => void): this;
    addStores(stores: FluxStore[]): Promise<FluxStore[]>;
    removeMiddleware(names: string[]): void;
    reset(clearStorage?: boolean): Promise<void>;
    setState(path: string | string[] | undefined, value: unknown): Promise<boolean>;
    private processMiddleware;
    private updateStorage;
    private updateStoresState;
    private getCachedStack;
    private addPlugin;
    private deregister;
    private register;
    private removePlugin;
    private useStorage;
}
export declare const Flux: FluxFramework;
