import * as React from 'react';

export interface ComposerHeaderProps {
  children?: React.ReactNode;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
  /** Defines the label of a back button */
  backButtonValue?: React.ReactNode;
  /** Defines what happens when the back button is clicked  */
  onBackClick?: React.MouseEventHandler<HTMLElement>;
  /** Sets the height of the component and adjusts the size of the back button */
  size?: 'small' | 'medium';
  /** Applies a drop shadow effect */
  dropShadow?: boolean;
}

declare const ComposerHeaderSaveStatus: React.FC<ComposerHeaderSaveStatusProps>;
interface ComposerHeaderSaveStatusProps {
  saveStatusValue: string;
  saveStatusError?: string;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
  /** Sets the height of the component and adjusts the size of the back button */
  size?: 'small' | 'medium';
}

declare const ComposerHeaderActions: React.FC<ComposerHeaderActionsProps>;
interface ComposerHeaderActionsProps {
  /** @default 'flex-start' */
  justifyContent?: React.CSSProperties['justifyContent'];
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
  children?: React.ReactNode;
}
declare const ComposerHeaderMainActions: React.FC<ComposerHeaderMainActionsProps>;
interface ComposerHeaderMainActionsProps {
  children?: React.ReactNode;
  /** Applies a data-hook HTML attribute to be used in the tests */
  dataHook?: string;
}

export default class ComposerHeader extends React.Component<ComposerHeaderProps> {
  static SaveStatus: typeof ComposerHeaderSaveStatus;
  static Actions: typeof ComposerHeaderActions;
  static MainActions: typeof ComposerHeaderMainActions;
}
