import * as _angular_core from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { ZEvent } from '@shival99/z-ui/utils';
import { ClassValue } from 'clsx';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

type ZRadioType = 'default' | 'group';
type ZRadioSize = 'sm' | 'default' | 'lg';
type ZRadioOrientation = 'vertical' | 'horizontal';
interface ZRadioOption {
    label: string;
    value: string | number;
    disabled?: boolean;
}

declare class ZRadioComponent implements ControlValueAccessor {
    readonly zChange: _angular_core.OutputEmitterRef<string | number | null>;
    readonly zOnBlur: _angular_core.OutputEmitterRef<FocusEvent>;
    readonly zOnFocus: _angular_core.OutputEmitterRef<FocusEvent>;
    readonly zEvent: _angular_core.OutputEmitterRef<ZEvent>;
    readonly class: _angular_core.InputSignal<ClassValue>;
    readonly zType: _angular_core.InputSignal<ZRadioType>;
    readonly zSize: _angular_core.InputSignal<ZRadioSize>;
    readonly zLabel: _angular_core.InputSignal<string>;
    readonly zText: _angular_core.InputSignal<string>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zValue: _angular_core.InputSignal<string | number>;
    readonly zOptions: _angular_core.InputSignal<ZRadioOption[]>;
    readonly zOrientation: _angular_core.InputSignal<ZRadioOrientation>;
    readonly zSelectedValue: _angular_core.ModelSignal<string | number | null>;
    private readonly _disabled;
    protected readonly isDisabled: _angular_core.Signal<boolean>;
    protected readonly hostClasses: _angular_core.Signal<string>;
    protected readonly groupClasses: _angular_core.Signal<string>;
    protected readonly radioClasses: _angular_core.Signal<string>;
    protected readonly indicatorClasses: _angular_core.Signal<string>;
    protected readonly labelClasses: _angular_core.Signal<string>;
    private _onChange;
    private _onTouched;
    writeValue(value: string | number | null): void;
    registerOnChange(fn: (value: string | number | null) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    protected onFocus(event: FocusEvent): void;
    protected onBlur(event: FocusEvent): void;
    protected onRadioClick(): void;
    protected onOptionClick(option: ZRadioOption): void;
    protected isOptionChecked(option: ZRadioOption): boolean;
    protected isChecked(): boolean;
    protected getRadioState(): string;
    protected getOptionState(option: ZRadioOption): string;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZRadioComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZRadioComponent, "z-radio", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zLabel": { "alias": "zLabel"; "required": false; "isSignal": true; }; "zText": { "alias": "zText"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zValue": { "alias": "zValue"; "required": false; "isSignal": true; }; "zOptions": { "alias": "zOptions"; "required": false; "isSignal": true; }; "zOrientation": { "alias": "zOrientation"; "required": false; "isSignal": true; }; "zSelectedValue": { "alias": "zSelectedValue"; "required": false; "isSignal": true; }; }, { "zChange": "zChange"; "zOnBlur": "zOnBlur"; "zOnFocus": "zOnFocus"; "zEvent": "zEvent"; "zSelectedValue": "zSelectedValueChange"; }, never, never, true, never>;
}

declare const zRadioVariants: (props?: ({
    zSize?: "default" | "sm" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zRadioIndicatorVariants: (props?: ({
    zSize?: "default" | "sm" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zRadioLabelVariants: (props?: ({
    zSize?: "default" | "sm" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type ZRadioVariants = VariantProps<typeof zRadioVariants>;

export { ZRadioComponent, zRadioIndicatorVariants, zRadioLabelVariants, zRadioVariants };
export type { ZRadioOption, ZRadioOrientation, ZRadioSize, ZRadioType, ZRadioVariants };
