import { type MaybeRefOrGetter } from 'vue';
export type ToggleRole = 'checkbox' | 'switch' | 'radio';
/**
 * Baseline ARIA + keyboard semantics for custom toggle widgets that are built
 * on a non-native element (a `<div>`). Covers WCAG 2.1.1 (Keyboard) and 4.1.2
 * (Name, Role, Value).
 *
 * Bind the returned `attrs` to the root element and attach `onKeydown` to its
 * `@keydown`. The root must also keep its existing pointer `@click` handler —
 * this composable only adds the keyboard/AT layer on top.
 *
 * Note: radios inside a group need roving focus + arrow-key selection, which is
 * the job of the group component; this composable provides the per-control
 * role/state/activation only.
 */
export declare function useToggleable(opts: {
    role: ToggleRole;
    checked: MaybeRefOrGetter<boolean>;
    disabled?: MaybeRefOrGetter<boolean>;
    /** Accessible name when there is no visible label element to reference. */
    label?: MaybeRefOrGetter<string | undefined>;
    /** Id of a visible label element; takes precedence over `label`. */
    labelledBy?: MaybeRefOrGetter<string | undefined>;
    toggle: () => void;
}): {
    attrs: import("vue").ComputedRef<{
        role: ToggleRole;
        tabindex: number;
        'aria-checked': "true" | "false";
        'aria-disabled': "true" | undefined;
        'aria-labelledby': string | undefined;
        'aria-label': string | undefined;
    }>;
    onKeydown: (event: KeyboardEvent) => void;
};
