import * as _angular_core from '@angular/core';
import { AfterViewInit, PipeTransform } from '@angular/core';
import { ClassValue } from 'clsx';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

type ZTagSize = 'sm' | 'default' | 'lg';
type ZTagColor = 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
interface ZTagItem {
    label: string;
    value: string | number;
    color?: ZTagColor;
    closable?: boolean;
    disabled?: boolean;
}
interface ZTagRandomColorCache {
    bg: string;
    text: string;
    border: string;
    hoverBg: string;
    darkBg?: string;
    darkText?: string;
    darkHoverBg?: string;
}
interface ZTagConfig {
    size: ZTagSize;
    color: ZTagColor;
    closable: boolean;
    disabled: boolean;
    randomColor: boolean;
    tagClass: ClassValue;
    randomColorCache: Map<string | number, ZTagRandomColorCache>;
}

declare class ZTagsComponent implements AfterViewInit {
    private readonly _zTranslate;
    private readonly _addInput;
    readonly class: _angular_core.InputSignal<ClassValue>;
    readonly zTags: _angular_core.InputSignal<ZTagItem[]>;
    readonly zSize: _angular_core.InputSignal<ZTagSize>;
    readonly zColor: _angular_core.InputSignal<ZTagColor>;
    readonly zClosable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zAddable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zAddText: _angular_core.InputSignal<string>;
    readonly zAddPlaceholder: _angular_core.InputSignal<string>;
    readonly zRandomColor: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zTagClass: _angular_core.InputSignal<ClassValue>;
    readonly zLabelClass: _angular_core.InputSignal<ClassValue>;
    readonly zMaxWidth: _angular_core.InputSignal<string>;
    protected readonly labelClasses: _angular_core.Signal<string>;
    protected readonly labelStyle: _angular_core.Signal<{
        'max-width': string;
    } | null>;
    readonly zTagClose: _angular_core.OutputEmitterRef<ZTagItem>;
    readonly zTagAdd: _angular_core.OutputEmitterRef<string>;
    protected readonly uiState: _angular_core.WritableSignal<{
        isAdding: boolean;
        pendingFocus: boolean;
    }>;
    private readonly _randomColorCache;
    protected readonly hostClasses: _angular_core.Signal<string>;
    protected readonly containerClasses: _angular_core.Signal<string>;
    protected readonly closeButtonClasses: _angular_core.Signal<string>;
    protected readonly closeIconSize: _angular_core.Signal<"10" | "12" | "14">;
    protected readonly tagConfig: _angular_core.Signal<ZTagConfig>;
    protected readonly effectiveAddText: _angular_core.Signal<string>;
    protected readonly effectiveAddPlaceholder: _angular_core.Signal<string>;
    protected readonly addInputClasses: _angular_core.Signal<string>;
    protected readonly addButtonClasses: _angular_core.Signal<string>;
    ngAfterViewInit(): void;
    protected onRemoveTag(tag: ZTagItem, event: Event): void;
    protected onAddClick(): void;
    protected onAddConfirm(event: Event): void;
    protected onAddCancel(): void;
    protected onAddBlur(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTagsComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZTagsComponent, "z-tags", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zTags": { "alias": "zTags"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zColor": { "alias": "zColor"; "required": false; "isSignal": true; }; "zClosable": { "alias": "zClosable"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zAddable": { "alias": "zAddable"; "required": false; "isSignal": true; }; "zAddText": { "alias": "zAddText"; "required": false; "isSignal": true; }; "zAddPlaceholder": { "alias": "zAddPlaceholder"; "required": false; "isSignal": true; }; "zRandomColor": { "alias": "zRandomColor"; "required": false; "isSignal": true; }; "zTagClass": { "alias": "zTagClass"; "required": false; "isSignal": true; }; "zLabelClass": { "alias": "zLabelClass"; "required": false; "isSignal": true; }; "zMaxWidth": { "alias": "zMaxWidth"; "required": false; "isSignal": true; }; }, { "zTagClose": "zTagClose"; "zTagAdd": "zTagAdd"; }, never, never, true, never>;
}

declare class ZTagsDirective {
    readonly zSize: _angular_core.InputSignal<ZTagSize>;
    readonly zColor: _angular_core.InputSignal<ZTagColor>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zClass: _angular_core.InputSignal<ClassValue>;
    protected readonly hostClasses: _angular_core.Signal<string>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTagsDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZTagsDirective, "[z-tags]", ["zTags"], { "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zColor": { "alias": "zColor"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare const zTagsContainerVariants: (props?: ({
    zSize?: "sm" | "default" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zTagVariants: (props?: ({
    zSize?: "sm" | "default" | "lg" | null | undefined;
    zColor?: "default" | "primary" | "success" | "warning" | "danger" | "info" | null | undefined;
    zClosable?: boolean | null | undefined;
    zDisabled?: boolean | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zTagCloseButtonVariants: (props?: ({
    zSize?: "sm" | "default" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type ZTagsContainerVariants = VariantProps<typeof zTagsContainerVariants>;
type ZTagVariants = VariantProps<typeof zTagVariants>;
type ZTagCloseButtonVariants = VariantProps<typeof zTagCloseButtonVariants>;

declare class ZTagClassesPipe implements PipeTransform {
    transform(tag: ZTagItem, config: ZTagConfig): string;
    private _isClosable;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTagClassesPipe, never>;
    static ɵpipe: _angular_core.ɵɵPipeDeclaration<ZTagClassesPipe, "zTagClasses", true>;
}

declare class ZTagClosablePipe implements PipeTransform {
    transform(tag: ZTagItem, config: ZTagConfig): boolean;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTagClosablePipe, never>;
    static ɵpipe: _angular_core.ɵɵPipeDeclaration<ZTagClosablePipe, "zTagClosable", true>;
}

declare class ZTagStylePipe implements PipeTransform {
    transform(tag: ZTagItem, config: ZTagConfig): Record<string, string> | null;
    private _getOrCreateRandomColor;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTagStylePipe, never>;
    static ɵpipe: _angular_core.ɵɵPipeDeclaration<ZTagStylePipe, "zTagStyle", true>;
}

export { ZTagClassesPipe, ZTagClosablePipe, ZTagStylePipe, ZTagsComponent, ZTagsDirective, zTagCloseButtonVariants, zTagVariants, zTagsContainerVariants };
export type { ZTagCloseButtonVariants, ZTagColor, ZTagConfig, ZTagItem, ZTagRandomColorCache, ZTagSize, ZTagVariants, ZTagsContainerVariants };
