import { ExtractPropTypes, InjectionKey, Ref, PropType } from 'vue';
import { MouseEventHandler } from '../_util/EventInterface';
import { VueNode } from '../_util/type';
import { VueTypeValidableDef } from 'vue-types';
export type CheckboxValueType = string | number | boolean;
export interface CheckboxOptionType {
    label?: VueNode;
    value: CheckboxValueType;
    disabled?: boolean;
    indeterminate?: boolean;
    onChange?: (e: CheckboxChangeEvent) => void;
}
export interface CheckboxChangeEvent {
    target: CheckboxChangeEventTarget;
    stopPropagation: () => void;
    preventDefault: () => void;
    nativeEvent: MouseEvent;
}
export interface CheckboxChangeEventTarget extends CheckboxProps {
    checked: boolean;
}
export declare const abstractCheckboxGroupProps: () => {
    name: StringConstructor;
    prefixCls: StringConstructor;
    options: {
        type: PropType<(string | number | CheckboxOptionType)[]>;
        default: (string | number | CheckboxOptionType)[];
    };
    disabled: BooleanConstructor;
    id: StringConstructor;
};
export declare const checkboxGroupProps: () => {
    defaultValue: {
        type: PropType<CheckboxValueType[]>;
        default: CheckboxValueType[];
    };
    value: {
        type: PropType<CheckboxValueType[]>;
        default: CheckboxValueType[];
    };
    onChange: {
        type: PropType<(checkedValue: Array<CheckboxValueType>) => void>;
        default: (checkedValue: Array<CheckboxValueType>) => void;
    };
    'onUpdate:value': {
        type: PropType<(checkedValue: Array<CheckboxValueType>) => void>;
        default: (checkedValue: Array<CheckboxValueType>) => void;
    };
    name: StringConstructor;
    prefixCls: StringConstructor;
    options: {
        type: PropType<(string | number | CheckboxOptionType)[]>;
        default: (string | number | CheckboxOptionType)[];
    };
    disabled: BooleanConstructor;
    id: StringConstructor;
};
export type CheckboxGroupProps = Partial<ExtractPropTypes<ReturnType<typeof checkboxGroupProps>>>;
export declare const abstractCheckboxProps: () => {
    prefixCls: StringConstructor;
    defaultChecked: {
        type: BooleanConstructor;
        default: boolean;
    };
    checked: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    isGroup: {
        type: BooleanConstructor;
        default: boolean;
    };
    value: VueTypeValidableDef<any>;
    name: StringConstructor;
    id: StringConstructor;
    indeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    type: {
        type: PropType<"checkbox">;
        default: "checkbox";
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    onChange: {
        type: PropType<(e: CheckboxChangeEvent) => void>;
        default: (e: CheckboxChangeEvent) => void;
    };
    'onUpdate:checked': {
        type: PropType<(checked: boolean) => void>;
        default: (checked: boolean) => void;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    skipGroup: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export declare const checkboxProps: () => {
    indeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    prefixCls: StringConstructor;
    defaultChecked: {
        type: BooleanConstructor;
        default: boolean;
    };
    checked: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    isGroup: {
        type: BooleanConstructor;
        default: boolean;
    };
    value: VueTypeValidableDef<any>;
    name: StringConstructor;
    id: StringConstructor;
    type: {
        type: PropType<"checkbox">;
        default: "checkbox";
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    onChange: {
        type: PropType<(e: CheckboxChangeEvent) => void>;
        default: (e: CheckboxChangeEvent) => void;
    };
    'onUpdate:checked': {
        type: PropType<(checked: boolean) => void>;
        default: (checked: boolean) => void;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    skipGroup: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type CheckboxProps = Partial<ExtractPropTypes<ReturnType<typeof checkboxProps>>>;
export interface CheckboxGroupContext {
    cancelValue: (id: symbol) => void;
    registerValue: (id: symbol, value: string) => void;
    toggleOption: (option: CheckboxOptionType) => void;
    name: Ref<string>;
    disabled: Ref<boolean>;
    mergedValue: Ref<CheckboxValueType[]>;
}
export declare const CheckboxGroupContextKey: InjectionKey<CheckboxGroupContext>;
