import React from "react";

export interface CheckboxHandleProps {
  element: null | HTMLInputElement;
  focus: any;
  name?: null | string;
  value?: null | string | number | boolean | string[];
}

export interface CheckboxBlurEventProps {
  nativeEvent: any;
  syntheticEvent: React.SyntheticEvent<any>;
  target: CheckboxHandleProps;
}

export interface CheckboxChangeEventProps {
  nativeEvent: any;
  syntheticEvent: React.SyntheticEvent<any>;
  target: CheckboxHandleProps;
  value: boolean;
}

export interface CheckboxFocusEventProps {
  nativeEvent: any;
  syntheticEvent: React.SyntheticEvent<any>;
  target: CheckboxHandleProps;
}

export interface CheckboxProps {
  ariaDescribedBy?: string;
  ariaLabelledBy?: string;
  checked?: boolean;
  children?: any;
  className?: string;
  defaultChecked?: boolean;
  defaultValue?: any;
  dir?: "ltr" | "rtl" | "auto";
  disabled?: boolean;
  id?: string;
  label?: string;
  labelClassName?: string;
  labelOptional?: boolean;
  labelPlacement?: "after" | "before";
  name?: string;
  required?: boolean;
  rounded?: null | "small" | "medium" | "large";
  size?: null | "small" | "medium" | "large";
  tabIndex?: number;
  valid?: boolean;
  validationMessage?: string;
  validityStyles?: boolean;
  value?: null | "string" | "number" | "boolean";
  onBlur?: (event: CheckboxBlurEventProps) => void;
  onChange?: (event: CheckboxChangeEventProps) => void;
  onFocus?: (event: CheckboxFocusEventProps) => void;
}
