import { ShuttleState } from "../hooks/useShuttleState";
declare export { move } from "./moveSelectedReducer";
declare export { moveAll } from "./moveAllReducer";
declare export { selectItem } from "./selectItemReducer";
declare export { lazyLoad } from "./lazyLoadReducer";

declare export var SHUTTLE_CONTROL_TYPES: {|
  +MOVE_SELECTIONS: "MOVE_SELECTIONS", // "MOVE_SELECTIONS"
  +MOVE_ALL: "MOVE_ALL", // "MOVE_ALL"
  +SELECT_ITEM: "SELECT_ITEM" // "SELECT_ITEM"
|};

/**
 * Redux-style composeReducers function. The main difference here
 * is that this function operates on the _same_ slice of state
 * for _all_ reducer functions.
 * @param reducers An object of key: function pairs.
 * @see useShuttleState for usage and other configuration docs.
 */
declare export var composeReducers: (reducers: {
  [key: string]: Function,
  ...
}) => (
  state: ShuttleState,
  action: { [key: string]: any, ... }
) => ShuttleState;
