import React from 'react';
import PropTypes from 'prop-types';
import CheckboxFoundation, { CheckboxAdapter, BasicCheckboxEvent, BasicTargetObject, BaseCheckboxProps } from '@douyinfe/semi-foundation/lib/cjs/checkbox/checkboxFoundation';
import CheckboxInner from './checkboxInner';
import BaseComponent from '../_base/baseComponent';
import '@douyinfe/semi-foundation/lib/cjs/checkbox/checkbox.css';
import { CheckboxContextType } from './context';
import { CheckboxType } from './checkboxGroup';
export interface CheckboxEvent extends BasicCheckboxEvent {
    nativeEvent: {
        stopImmediatePropagation: () => void;
    };
}
export type TargetObject = BasicTargetObject;
export interface CheckboxProps extends BaseCheckboxProps {
    'aria-describedby'?: React.AriaAttributes['aria-describedby'];
    'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
    'aria-invalid'?: React.AriaAttributes['aria-invalid'];
    'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
    'aria-required'?: React.AriaAttributes['aria-required'];
    children?: React.ReactNode;
    onChange?: (e: CheckboxEvent) => any;
    style?: React.CSSProperties;
    onMouseEnter?: React.MouseEventHandler<HTMLSpanElement>;
    onMouseLeave?: React.MouseEventHandler<HTMLSpanElement>;
    extra?: React.ReactNode;
    'aria-label'?: React.AriaAttributes['aria-label'];
    role?: React.HTMLAttributes<HTMLSpanElement>['role'];
    tabIndex?: number;
    addonId?: string;
    extraId?: string;
    type?: CheckboxType;
}
interface CheckboxState {
    checked: boolean;
    addonId?: string;
    extraId?: string;
    focusVisible?: boolean;
}
declare class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
    static contextType: React.Context<CheckboxContextType>;
    static propTypes: {
        'aria-describedby': PropTypes.Requireable<string>;
        'aria-errormessage': PropTypes.Requireable<string>;
        'aria-invalid': PropTypes.Requireable<boolean>;
        'aria-labelledby': PropTypes.Requireable<string>;
        'aria-required': PropTypes.Requireable<boolean>;
        checked: PropTypes.Requireable<boolean>;
        defaultChecked: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        indeterminate: PropTypes.Requireable<boolean>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        value: PropTypes.Requireable<any>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        extra: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        index: PropTypes.Requireable<number>;
        'aria-label': PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        preventScroll: PropTypes.Requireable<boolean>;
        type: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        defaultChecked: boolean;
        indeterminate: boolean;
        onChange: (...args: any[]) => void;
        onMouseEnter: (...args: any[]) => void;
        onMouseLeave: (...args: any[]) => void;
        type: string;
    };
    static elementType: string;
    checkboxEntity: CheckboxInner;
    context: CheckboxContextType;
    get adapter(): CheckboxAdapter<CheckboxProps, CheckboxState>;
    foundation: CheckboxFoundation;
    constructor(props: CheckboxProps);
    componentDidUpdate(prevProps: CheckboxProps): void;
    isInGroup(): boolean;
    focus(): void;
    blur(): void;
    handleChange: React.MouseEventHandler<HTMLSpanElement>;
    handleEnterPress: (e: React.KeyboardEvent<HTMLSpanElement>) => void;
    handleFocusVisible: (event: React.FocusEvent) => void;
    handleBlur: (event: React.FocusEvent) => void;
    render(): React.JSX.Element;
}
export default Checkbox;
