import { EventEmitter } from '@stencil/core';
import { CheckboxOption } from './checkbox-option.interface';
import { HintExpander } from '../ontario-hint-expander/hint-expander.interface';
import { Base, Hint } from '../../utils/common/common.interface';
import { Caption } from '../../utils/common/input-caption/caption.interface';
import { Language } from '../../utils/common/language-types';
import { InputFocusBlurEvent, RadioAndCheckboxChangeEvent } from '../../utils/events/event-handler.interface';
export interface Checkboxes extends Base {
/**
* The text to display for the checkbox legend.
*
* @example
*
*
*/
hintExpander?: HintExpander | string;
/**
* The currently selected checkbox option values.
*
* The component keeps the host `value` in sync as users interact with the checkbox group.
* If `value` is provided, it takes precedence over any `checked` flags passed through `options`.
*
* In HTML, pass `value` as a JSON string array.
*
* @example
*
*
*/
value?: string[] | string;
/**
* The options for the checkbox group.
*
* Each property will be passed in through an object in the options array.
* This can either be passed in as an object directly (if using react), or as a string in HTML.
* If there are multiple checkboxes in a fieldset, each checkbox will be displayed as an option.
*
* In the example below, the options are being passed in as a string and there are two checkboxes to be displayed in the fieldset.
*
* @example
*
*
*/
options: string | CheckboxOption[];
/**
* This is used to determine whether the checkbox is required or not.
* This prop also gets passed to the InputCaption utility to display either an optional or required flag in the label.
* If no prop is set, it will default to false (optional).
*/
required?: boolean;
/**
* Used to add a custom function to the checkbox onChange event.
*/
customOnChange?: (event: globalThis.Event) => void;
/**
* Used to add a custom function to the checkbox onBlur event.
*/
customOnBlur?: (event: globalThis.Event) => void;
/**
* Used to add a custom function to the checkbox onFocus event.
*/
customOnFocus?: (event: globalThis.Event) => void;
/**
* Emitted when a keyboard input or mouse event occurs when a checkbox option has been changed.
*/
checkboxOnChange: EventEmitter;
/**
* Emitted when a keyboard input event occurs when a checkbox option has lost focus.
*/
checkboxOnBlur: EventEmitter;
/**
* Emitted when a keyboard input event occurs when a checkbox option has gained focus.
*/
checkboxOnFocus: EventEmitter;
}