/*
 * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3 as published by
 * the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import { EnhancedStore } from '@reduxjs/toolkit';
import GlobalState from '../models/GlobalState';
import { Epic } from 'redux-observable';
import { StandardAction } from '../models/StandardAction';
import { Observable } from 'rxjs';
import LookupTable from '../models/LookupTable';
import { IntlShape } from 'react-intl';
import User from '../models/User';
import { Site } from '../models/Site';
import type { Version } from '../models';
export type EpicMiddlewareDependencies = {
  getIntl: () => IntlShape;
  worker: SharedWorker;
};
export type CrafterCMSStore = EnhancedStore<GlobalState, StandardAction, any>;
export type CrafterCMSEpic = Epic<StandardAction, StandardAction, GlobalState, EpicMiddlewareDependencies>;
export declare function getStore(): Observable<CrafterCMSStore>;
export declare function getStoreSync(): CrafterCMSStore;
export declare function createStoreSync(args?: { preloadedState?: any; dependencies?: any }): CrafterCMSStore;
export declare function fetchStateInitialization(): Observable<{
  user: User;
  sites: Site[];
  properties: LookupTable<any>;
  activeSiteId: string;
  activeEnvironment: string;
  version: Version;
}>;
export default getStore;
