import type { ComputedRef, InjectionKey, MaybeRefOrGetter, Ref } from "vue"; import type { XySize } from "../config"; export type XyControlStatus = "error" | "success" | "warning"; export type XyControlVariant = "borderless" | "filled" | "outlined" | "underlined"; export interface XyFormControlContext { describedBy?: MaybeRefOrGetter; disabled?: MaybeRefOrGetter; id?: MaybeRefOrGetter; labelledBy?: MaybeRefOrGetter; onBlur?: (event: FocusEvent) => void; onChange?: (value: unknown) => void; readonly?: MaybeRefOrGetter; size?: MaybeRefOrGetter; status?: MaybeRefOrGetter; } export interface XyControlProps { disabled?: boolean; id?: string; readonly?: boolean; size?: XySize; status?: XyControlStatus; } export interface XyResolvedControl { describedBy: ComputedRef; disabled: ComputedRef; id: ComputedRef; labelledBy: ComputedRef; notifyBlur: (event: FocusEvent) => void; notifyChange: (value: unknown) => void; readonly: ComputedRef; size: ComputedRef; status: ComputedRef; } export declare const xyFormControlKey: InjectionKey; export declare function provideXyFormControl(context: XyFormControlContext): XyFormControlContext; export declare function useXyFormControl(props: MaybeRefOrGetter): XyResolvedControl; export declare function assignRefValue(target: Ref, value: T): void;