import * as React from 'react';

export interface TableToolbarProps {
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  /** Removes vertical paddings from the component */
  removeVerticalPadding?: boolean;
}

interface ItemGroupProps {
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  position?: string;
}

interface ItemProps {
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  layout?: 'button';
}

interface TitleProps {
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
}

interface LabelProps {
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
}

interface DividerProps {
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
}

interface SelectedCountProps {
  children?: React.ReactNode;
  /** Specifies a CSS class name to be appended to the component’s root element.
   * @internal
   */
  className?: string;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
}

declare const ItemGroup: React.FC<ItemGroupProps>;
declare const Item: React.FC<ItemProps>;
declare const Title: React.FC<TitleProps>;
declare const Label: React.FC<LabelProps>;
declare const Divider: React.FC<DividerProps>;
declare const SelectedCount: React.FC<SelectedCountProps>;

export declare const TableToolbar: React.FC<TableToolbarProps> & {
  ItemGroup: typeof ItemGroup;
  Item: typeof Item;
  Title: typeof Title;
  Label: typeof Label;
  Divider: typeof Divider;
  SelectedCount: typeof SelectedCount;
};

export default TableToolbar;
