/*
 * 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 * as React from 'react';
import * as ReactDOM from 'react-dom';
import { createRoot } from 'react-dom/client';
import * as MaterialUI from '@mui/material';
import * as ReactRedux from 'react-redux';
import * as ReactIntl from 'react-intl';
import * as rxjs from 'rxjs';
import { createAction } from '@reduxjs/toolkit';
import createEmotion from '@emotion/css/create-instance';
import { CrafterCMSStore } from '../state/store';
import { components, icons, services, utils } from './studioUI';
declare global {
  interface Window {
    craftercms: CrafterCMSGlobal;
  }
}
export interface CrafterCMSGlobal {
  libs: {
    React: typeof React;
    ReactDOM: typeof ReactDOM;
    ReactDOMClient: {
      createRoot: typeof createRoot;
    };
    MaterialUI: typeof MaterialUI;
    ReactRedux: typeof ReactRedux;
    ReactIntl: typeof ReactIntl;
    createEmotion: typeof createEmotion;
    ReduxToolkit: {
      createAction: typeof createAction;
    };
    react: typeof React;
    rxjs: typeof rxjs;
    'react-dom': typeof ReactDOM;
    'react-dom/client': CrafterCMSGlobal['libs']['ReactDOMClient'];
    'react-redux': typeof ReactRedux;
    'react-intl': typeof ReactIntl;
    '@mui/material': typeof MaterialUI;
    '@emotion/css/create-instance': typeof createEmotion;
    '@reduxjs/toolkit': {
      createAction: typeof createAction;
    };
  };
  components: typeof components;
  icons: typeof icons;
  utils: typeof utils;
  services: typeof services;
  getStore(): CrafterCMSStore;
  define: {
    (): void;
    amd: true;
  };
}
export declare const libs: CrafterCMSGlobal['libs'];
export declare const define: {
  (): void;
  amd: true;
};
export declare const craftercms: CrafterCMSGlobal;
export declare const publishCrafterGlobal: () => void;
export default craftercms;
