import { IEventEmitter, IEventDetail } from '@breadstone/mosaik-elements';
import type { CustomElement } from '../Components/Abstracts/CustomElement';
import type { ControlBehaviorBase, ControlBehaviorReturn } from './Abstracts/Behavior';
import type { IDisableableProps } from './Disableable';
/**
 * Represents the events of the `{@link Checkable}` mixin.
 *
 * @public
 */
export interface ICheckableEvents {
    checked: IEventEmitter<IEventDetail>;
    unchecked: IEventEmitter<IEventDetail>;
}
/**
 * Represents the `ICheckableElementProps` interface.
 *
 * @public
 */
export interface ICheckableProps {
    isChecked: boolean;
}
/**
 * Represents the `ICheckable` interface.
 *
 * @public
 */
export interface ICheckable {
    check(): void;
    uncheck(): void;
    toggle(): void;
}
/**
 * @fires checked {CustomEvent<IEventDetail>} - Fired when the `isChecked` property is `true`.
 * @fires unchecked {CustomEvent<IEventDetail>} - Fired when the `isChecked` property is `false`.
 *
 * @public
 */
export declare const Checkable: <T extends ControlBehaviorBase<CustomElement & IDisableableProps>>(base: T) => ControlBehaviorReturn<T, ICheckableProps & ICheckableEvents & ICheckable>;
/**
 * @public
 */
declare global {
    interface HTMLElementEventMap {
        checked: CustomEvent<IEventDetail>;
        unchecked: CustomEvent<IEventDetail>;
    }
}
//# sourceMappingURL=Checkable.d.ts.map