import * as React from "react";
import { ShuttleItem } from "./ShuttleItem";
import { ShuttleContainer } from "./ShuttleContainer";
import { ShuttleControls } from "./ShuttleControls";
import { ShuttleState } from "./hooks/useShuttleState";
export type ShuttleReducer = { [key: string]: any, ... };
declare type Statics = {
  Item: typeof ShuttleItem,
  Container: typeof ShuttleContainer,
  Controls: typeof ShuttleControls,
  ...
};
export type ShuttleProps = {
  /**
   * The state to pass to the Shuttle.
   */
  shuttleState: ShuttleState,

  /**
   * The set state function passed to the shuttle.
   * Internally this function is a `dispatch` from
   * `React.useReducer`. If you're not using the
   * `useShuttleState` hook you **must** provide
   * a dispatch-compatible function yourself.
   */
  setShuttleState: React.Dispatch<{ [key: string]: any, ... }>,

  /**
   * Optional classNames to pass to the shuttle.
   */
  className?: string,

  /**
   * Shuttle children to render.
   */
  children: React.Node[],

  /**
   * Set false to disable user selection hack if it's causing problems
   * in your app.
   */
  enableUserSelectionHack?: boolean,
  ...
};
declare export var Shuttle: React.FC<ShuttleProps> & Statics;
declare export {};
