/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { getFormState, getFormValue, setValidity } from '../constants';
import { BaseComponent, FormValue } from '../core';
import { IWithFocusable } from '../core/mixins/focus/with-focusable';
import { IWithFormAssociation } from '../core/mixins/form/with-form-associated';
import { IWithDefaultAria } from '../core/mixins/internals/with-default-aria';
import { IWithElementInternals } from '../core/mixins/internals/with-element-internals';
import { IWithLabelAwareness } from '../core/mixins/label/with-label-aware';
import { CheckboxLabelPosition, CheckboxState } from './checkbox-constants';
export interface ICheckboxComponent extends IWithFormAssociation, IWithFocusable, IWithLabelAwareness, IWithElementInternals, IWithDefaultAria {
    value: string;
    checked: boolean;
    defaultChecked: boolean;
    indeterminate: boolean;
    required: boolean;
    dense: boolean;
    labelPosition: CheckboxLabelPosition;
    toggle(force?: boolean): void;
    setFormValue(value: FormValue | null, state?: FormValue | null | undefined): void;
    [setValidity](): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-checkbox': ICheckboxComponent;
    }
}
declare const CheckboxComponent_base: import("../constants").AbstractConstructor<import("../core/mixins/form/with-form-associated").WithFormAssociationContract> & import("../constants").AbstractConstructor<import("../core/mixins/label/with-label-aware").WithLabelAwarenessContract> & import("../constants").AbstractConstructor<import("../core/mixins/focus/with-focusable").WithFocusableContract> & import("../constants").AbstractConstructor<import("../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("../constants").AbstractConstructor<import("../core/mixins/internals/with-element-internals").WithElementInternalsContract> & typeof BaseComponent;
/**
 * @tag forge-checkbox
 *
 * @summary Checkboxes select single values for submission in a form.
 *
 * @description
 * Use checkboxes to:
 * - Select one or multiple items from a list.
 * - Present a list containing sub-selections.
 * - Turn an option on or off in desktop environment.
 *
 * @property {boolean} [checked=false] - Whether the checkbox is checked.
 * @property {boolean} [defaultChecked=false] - Whether the checkbox is checked by default.
 * @property {boolean} [indeterminate=false] - Toggles the indeterminate state. This does not affect whether the checkbox is checked or its form submission.
 * @property {string} value - The value of the checkbox when checked.
 * @property {boolean} [disabled=false] - Controls if the checkbix is disabled.
 * @property {boolean} [required=false] = Controls if the checkbox is required.
 * @property {boolean} [readonly=false] = Controls if the checkbox is readonly.
 * @property {boolean} [dense=false] - The density state.
 * @property {SwitchLabelPosition} [labelPosition='end'] - Whether the label appears before or after the checkbox.
 *
 * @attribute {string} [checked=false] - Controls whether the checkbox is checked.
 * @attribute {string} [defaultChecked=false] - Controls whether the checkbox is checked by default.
 * @attribute {string} [indeterminate=false] - Controls the indeterminate state.
 * @attribute {string} value - The value of the checkbox when checked.
 * @attribute {string} [disabled=false] - Controls if the switch is disabled.
 * @attribute {string} [required=false] - Controls if the switch is required.
 * @attribute {string} [readonly=false] - Controls if the switch is readonly.
 * @attribute {string} [dense=false] - Sets the density state.
 * @attribute {string} [label-position='end'] - Sets whether the label appears before or after the switch.
 *
 * @method {(force?: boolean) => void} toggle - Toggles whether the checkbox is is checked or forces a checked state.
 *
 * @event {Event} change - Dispatches when the checkbox is checked or unchecked.
 *
 * @cssproperty --forge-checkbox-background - The color of the checkbox background when unchecked and not indeterminate.
 * @cssproperty --forge-checkbox-width - The inline size of the checkbox.
 * @cssproperty --forge-checkbox-height - The block size of the checkbox.
 * @cssproperty --forge-checkbox-unchecked-border-width - The width of the checkbox border when unchecked and not indeterminate.
 * @cssproperty --forge-checkbox-unchecked-border-color - The color of the checkbox border when unchecked and not indeterminate.
 * @cssproperty --forge-checkbox-shape - The shape of the checkbox.
 * @cssproperty --forge-checkbox-elevation - The shadow of the checkbox.
 * @cssproperty --forge-checkbox-gap - The space between the checkbox and label.
 * @cssproperty --forge-checkbox-justify - How the checkbox and label are distributed along their main axis.
 * @cssproperty --forge-checkbox-direction - Whether the checkbox and label are arranged along the inline or block axis.
 * @cssproperty --forge-checkbox-checked-background - The color of the checkbox background when checked or indeterminate.
 * @cssproperty --forge-checkbox-checked-border-width - The width of the checkbox border when checked or indeterminate.
 * @cssproperty --forge-checkbox-checked-border-color - The color of the checkbox border when checked or indeterminate.
 * @cssproperty --forge-checkbox-icon-checked-color - The color of the checkmark mark.
 * @cssproperty --forge-checkbox-icon-indeterminate-color - The color of the indeterminate mark.
 * @cssproperty --forge-checkbox-icon-stroke-width - The stroke width of the checkmark and indeterminate marks.
 * @cssproperty --forge-checkbox-state-layer-width - The inline size of the state layer.
 * @cssproperty --forge-checkbox-state-layer-height - The block size of the state layer.
 * @cssproperty --forge-checkbox-state-layer-checked-color - The color of the state layer when checked.
 * @cssproperty --forge-checkbox-state-layer-unchecked-color - The color of the state layer when unchecked.
 * @cssproperty --forge-checkbox-state-layer-shape - The shape of the state layer.
 * @cssproperty --forge-checkbox-state-layer-dense-width - The inline size of the state layer when dense.
 * @cssproperty --forge-checkbox-state-layer-dense-height - The block size of the state layer when dense.
 * @cssproperty --forge-checkbox-disabled-opacity - The opacity when disabled.
 * @cssproperty --forge-checkbox-animation-duration - The duration of animations.
 * @cssproperty --forge-checkbox-background-animation-timing - The timing function of the background animations.
 * @cssproperty --forge-checkbox-icon-animation-timing - The timing function of the checked and indeterminate icons animations.
 *
 * @csspart root - Styles the root element.
 * @csspart background - Styles the checkbox background element.
 * @csspart checkmark - Styles the checkmark element.
 * @csspart mixedmark - Styles the indeterminate mark element.
 * @csspart label - Styles the label element.
 * @csspart state-layer - Styles the state layer element.
 * @csspart focus-indicator - Styles the focus indicator element.
 */
export declare class CheckboxComponent extends CheckboxComponent_base implements ICheckboxComponent {
    static get observedAttributes(): string[];
    private readonly _core;
    constructor();
    connectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    [getFormValue](): FormValue | null;
    [getFormState](): CheckboxState;
    [setValidity](): void;
    formResetCallback(): void;
    formStateRestoreCallback(state: CheckboxState): void;
    labelClickedCallback(): void;
    labelChangedCallback(value: string | null): void;
    setFormValue(value: FormValue | null, state?: FormValue | null | undefined): void;
    checked: boolean;
    defaultChecked: boolean;
    indeterminate: boolean;
    value: string;
    dense: boolean;
    disabled: boolean;
    required: boolean;
    readonly: boolean;
    labelPosition: CheckboxLabelPosition;
    /**
     * Toggles the checkbox checked or unchecked.
     * @param force Whether to set the checkbox checked or unchecked.
     */
    toggle(force?: boolean): void;
}
export {};
