// @flow
import type { BrandProps } from '../../../mixins/branding/branding.proptypes';
import type { ContainerProps } from '../../../mixins/container';
import type { FocusProps } from '../../../mixins/focus';
import type { SpaceProps } from '../../../mixins/spacing/spacing.proptypes';
import type { StackedProps } from '../../../mixins/stacking/stacking.proptypes';
import type { StackeeProps } from '../../../mixins/stackee/stackee.proptypes';
import type { TypographyProps } from '../../../mixins/typography/typography.proptypes';
import type { StylableProps } from '../../../mixins/themes';
import type { TestingProps } from '../../../mixins/testing';
import type { AriaProps } from '../../../mixins/aria';

export type UnstyledButtonProps = {|
  ...TestingProps,
  ...ContainerProps,
  ...FocusProps,
  ...SpaceProps,
  ...StackedProps,
  ...StackeeProps,
  ...TypographyProps,
  ...BrandProps,
  ...StylableProps,
  ...AriaProps,
  type?: 'submit' | 'button',
  insetFocus?: boolean,
  borderRadius?: number,
  hasTransition?: boolean,
  style?: ?$Shape<CSSStyleDeclaration>,
  onClick?: (event: SyntheticEvent<HTMLButtonElement>) => void,
  onBlur?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onFocus?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onMouseEnter?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onMouseLeave?: (SyntheticFocusEvent<HTMLInputElement>) => void,
  onKeyDown?: (SyntheticKeyboardEvent<*>) => void,
  href?: string,
  target?: string,
|};
