import { ActionCollectionConfig, BaseMetadata, GlobalStoreCallbacks, StateChanges, StoreTools } from 'react-hooks-global-states/types';
import { GlobalStoreAbstract } from 'react-hooks-global-states/GlobalStoreAbstract';
import { LocalStorageConfig } from './types';
export declare class GlobalStore<State, Metadata extends BaseMetadata | unknown, ActionsConfig extends ActionCollectionConfig<State, Metadata> | undefined | unknown> extends GlobalStoreAbstract<State, Metadata, ActionsConfig> {
    protected localStorage: LocalStorageConfig | null;
    constructor(state: State);
    constructor(state: State, args: {
        metadata?: Metadata;
        callbacks?: GlobalStoreCallbacks<State, Metadata>;
        actions?: ActionsConfig;
        name?: string;
        localStorage?: LocalStorageConfig;
    });
    protected isLocalStorageAvailable: (config: LocalStorageConfig | null) => config is LocalStorageConfig;
    protected _onInitialize: ({ setState, getState }: StoreTools<State, Metadata>) => void;
    protected _onChange: ({ getState }: StoreTools<State, Metadata> & StateChanges<State>) => void;
    /**
     * We set it to null so the instances of the GlobalStoreAbstract can override it.
     */
    protected onInitialize: (args: StoreTools<State, Metadata>) => void;
    protected onChange: (args: StoreTools<State, Metadata> & StateChanges<State>) => void;
    /**
     * Instead of calling onInitialize and onChange directly, we call the _onInitialize and _onChange
     * This allows the concat the logic of the GlobalStore with the logic of the extension class.
     */
    protected onInit: (parameters: StoreTools<State, Metadata>) => void;
    protected onStateChanged: (args: StoreTools<State, Metadata> & StateChanges<State>) => void;
}
export default GlobalStore;
