import { ButtonClickHelper } from '../helpers/ButtonClickHelper.js';
import { Widget } from './Widget.js';
import { WidgetEvent } from '../events/WidgetEvent.js';
import type { Rect } from '../helpers/Rect.js';
import type { WidgetAutoXML } from '../xml/WidgetAutoXML.js';
import type { ClickableWidgetProperties } from './ClickableWidgetProperties.js';
import { type Box } from '../state/Box.js';
/**
 * A checkbox widget; can be ticked or unticked.
 *
 * @category Widget
 */
export declare class Checkbox extends Widget {
    static autoXML: WidgetAutoXML;
    /** Horizontal offset. */
    private offsetX;
    /** Vertical offset. */
    private offsetY;
    /** Actual length after resolving layout. */
    private actualLength;
    /** The helper used for handling pointer clicks and enter presses */
    protected clickHelper: ButtonClickHelper;
    /** The helper for keeping track of the checkbox value */
    readonly variable: Box<boolean>;
    /** The callback used for the {@link Checkbox#"variable"} */
    private readonly callback;
    /** See {@link Checkbox#clickable} */
    private _clickable;
    /**
     * @param variable - The {@link Box} where the value will be stored.
     */
    constructor(variable?: Box<boolean>, properties?: Readonly<ClickableWidgetProperties>);
    protected handleChange(): void;
    protected handleAttachment(): void;
    protected handleDetachment(): void;
    protected activate(): void;
    protected onThemeUpdated(property?: string | null): void;
    /** Is the checkbox checked? */
    set checked(checked: boolean);
    get checked(): boolean;
    protected handleEvent(event: WidgetEvent): Widget | null;
    protected handleResolveDimensions(minWidth: number, maxWidth: number, minHeight: number, maxHeight: number): void;
    finalizeBounds(): void;
    protected handlePainting(_dirtyRects: Array<Rect>): void;
    /**
     * Is the checkbox clickable? True by default. Used for disabling the
     * checkbox without hiding it.
     */
    get clickable(): boolean;
    set clickable(clickable: boolean);
    protected handlePreLayoutUpdate(): void;
}
