/**
 * Copyright 2024 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.
 */
import {Dispatch} from 'redux';

import {IAppStore} from 'store';
import {
  MessagesActionsType,
  ChannelsActions,
  ChannelsPublishingActions,
  ConcurrentsActions,
  ForkingHistoryActions,
  IngestActions,
  PublishingHistoryActions,
  RoomsActions,
  RoomsPublishingActions,
  ScreensActions,
  UserActions,
  WebsocketActions
} from 'store/action';

export type ReduxDispatchActions =
  | MessagesActionsType
  | ChannelsActions
  | ChannelsPublishingActions
  | ConcurrentsActions
  | ForkingHistoryActions
  | IngestActions
  | PublishingHistoryActions
  | RoomsActions
  | RoomsPublishingActions
  | ScreensActions
  | UserActions
  | WebsocketActions;

export interface IReduxStore {
  dispatch: Dispatch<ReduxDispatchActions>;
  getState(): () => IAppStore;
}
