import type { EventEmitter } from '../../stencil-public-runtime';
import type { SwitchChangeDetail } from './mud-switch.types';
/**
* Switch — binary on/off toggle atom (form-associated).
*
* Pattern B (atom-interactive, form-associated): renders its own
* `` inside shadow DOM and paints the
* visual track + thumb with CSS. Implements the WAI-ARIA switch pattern, not
* the checkbox pattern — `role="switch"` with `aria-checked="true|false"`.
* Space toggles per native checkbox semantics; the role swap does not break
* keyboard activation.
*
* The visible track is 48 × 28px; the hit area expands to 32px on
* pointer-devices and 40px on touch-devices (via `pointer: coarse`) per the
* Figma "Target Sizes" spec, achieved with a `::before` pseudo-element so the
* visual footprint stays untouched.
*
* @element mud-switch
*
* @slot label - Rich label content, replaces the `label` prop when present.
*/
export declare class MudSwitch {
/**
* Whether the switch is currently on.
* @default false
*/
checked: boolean;
/**
* Disables interactivity. The internal control receives `aria-disabled`
* and the native `disabled` attribute.
* @default false
*/
disabled: boolean;
/**
* Marks the field as mandatory. Sets `aria-required` on the internal control.
* @default false
*/
required: boolean;
/** Form-control `name`. Used during form submission. */
name?: string;
/**
* Value submitted with the form when this switch is on.
* @default 'on'
*/
value?: string;
/**
* Visible label text, which also names the switch. The `label` slot replaces it
* for rich content. For an accessible name with no visible text, set the native
* `aria-label` attribute instead.
*/
label?: string;
/** Consumer-set `aria-labelledby`. Same strip + cache pattern as `aria-label`. */
ariaLabelledby?: string;
private hasLabelSlot;
private isFocused;
private fieldsetDisabled;
private resolvedAriaLabel?;
private resolvedAriaLabelledby?;
host: HTMLMudSwitchElement;
internals: ElementInternals;
/** Fires whenever the checked state changes. `detail.checked` is the new state. */
mudChange: EventEmitter;
/** Fires when the internal control gains focus. The native `FocusEvent` is forwarded as-is. */
mudFocus: EventEmitter;
/** Fires when the internal control loses focus. The native `FocusEvent` is forwarded as-is. */
mudBlur: EventEmitter;
private readonly instanceId;
private readonly inputId;
private readonly labelId;
private initialChecked;
private stopAriaLabel?;
handleCheckedChange(): void;
handleValueChange(): void;
syncAriaLabelledby(next?: string): void;
connectedCallback(): void;
disconnectedCallback(): void;
componentWillLoad(): void;
/** Mirrors `disabled` from an ancestor `