import * as _angular_core from '@angular/core';
import { AfterViewInit } from '@angular/core';
import { ClassValue } from 'clsx';
import { ZIcon, ZIconVariants } from '@shival99/z-ui/components/z-icon';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

type ZStepsOrientation = 'vertical' | 'horizontal';
type ZStepsType = 'default' | 'inline' | 'arrow' | 'dot';
type ZStepsSize = 'sm' | 'default' | 'lg';
type ZStepsStatus = 'pending' | 'current' | 'completed' | 'error';
interface ZStepItem {
    title?: string;
    description?: string;
    icon?: ZIcon;
    status?: ZStepsStatus;
    disabled?: boolean;
    iconSize?: ZIconVariants['zSize'];
    iconClass?: string;
}
interface ZStepsControl {
    setActive: (index: number) => void;
    next: () => void;
    prev: () => void;
    reset: () => void;
    setDisabled: (index: number, disabled: boolean) => void;
    setStatus: (index: number, status: ZStepsStatus) => void;
    getCurrent: () => number;
    getTotal: () => number;
}

declare class ZStepsComponent implements AfterViewInit {
    private readonly _elementRef;
    private readonly _destroyRef;
    readonly zOnStepClick: _angular_core.OutputEmitterRef<number>;
    readonly zControl: _angular_core.OutputEmitterRef<ZStepsControl>;
    readonly class: _angular_core.InputSignal<ClassValue>;
    readonly zSteps: _angular_core.InputSignal<ZStepItem[]>;
    readonly zCurrent: _angular_core.InputSignal<number>;
    readonly zOrientation: _angular_core.InputSignal<ZStepsOrientation>;
    readonly zType: _angular_core.InputSignal<ZStepsType>;
    readonly zSize: _angular_core.InputSignal<ZStepsSize>;
    readonly zClickable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zShowNumber: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zResponsive: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    private readonly _internalCurrent;
    private readonly _stepOverrides;
    private _resizeObserver;
    protected readonly isResponsiveVertical: _angular_core.WritableSignal<boolean>;
    protected readonly currentStep: _angular_core.Signal<number>;
    protected readonly mergedSteps: _angular_core.Signal<ZStepItem[]>;
    protected readonly effectiveOrientation: _angular_core.Signal<ZStepsOrientation>;
    protected readonly containerClasses: _angular_core.Signal<string>;
    protected readonly getItemClasses: _angular_core.Signal<string>;
    protected readonly iconClassesMap: _angular_core.Signal<Map<number, string>>;
    protected readonly lineClasses: _angular_core.Signal<string>;
    protected readonly getConnectorClassesByIndex: _angular_core.Signal<string[]>;
    protected readonly stepStatuses: _angular_core.Signal<ZStepsStatus[]>;
    protected readonly getArrowClassesByIndex: _angular_core.Signal<string[]>;
    protected readonly getDotClassesByIndex: _angular_core.Signal<string[]>;
    protected readonly getDotLineClassesByIndex: _angular_core.Signal<string[]>;
    protected readonly defaultIconSize: _angular_core.Signal<NonNullable<string | number | null | undefined>>;
    protected readonly getIconSizeByIndex: _angular_core.Signal<NonNullable<string | number | null | undefined>[]>;
    protected readonly iconWidth: _angular_core.Signal<32 | 44 | 36>;
    ngAfterViewInit(): void;
    private _updateStepOverride;
    private _setupResizeObserver;
    private _getStepStatus;
    private _getConnectorStatus;
    protected onStepClick(index: number): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZStepsComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZStepsComponent, "z-steps", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zSteps": { "alias": "zSteps"; "required": true; "isSignal": true; }; "zCurrent": { "alias": "zCurrent"; "required": false; "isSignal": true; }; "zOrientation": { "alias": "zOrientation"; "required": false; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zClickable": { "alias": "zClickable"; "required": false; "isSignal": true; }; "zShowNumber": { "alias": "zShowNumber"; "required": false; "isSignal": true; }; "zResponsive": { "alias": "zResponsive"; "required": false; "isSignal": true; }; "zDisabled": { "alias": "zDisabled"; "required": false; "isSignal": true; }; }, { "zOnStepClick": "zOnStepClick"; "zControl": "zControl"; }, never, never, true, never>;
}

declare const zStepsContainerVariants: (props?: ({
    orientation?: "vertical" | "horizontal" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zStepsItemVariants: (props?: ({
    orientation?: "vertical" | "horizontal" | null | undefined;
    size?: "default" | "sm" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zStepsIconVariants: (props?: ({
    size?: "default" | "sm" | "lg" | null | undefined;
    status?: "pending" | "current" | "completed" | "error" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zStepsLineVariants: (props?: ({
    size?: "default" | "sm" | "lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zStepsConnectorVariants: (props?: ({
    orientation?: "vertical" | "horizontal" | null | undefined;
    status?: "pending" | "current" | "completed" | "error" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zStepsArrowItemVariants: (props?: ({
    size?: "default" | "sm" | "lg" | null | undefined;
    status?: "pending" | "current" | "completed" | "error" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type ZStepsContainerVariants = VariantProps<typeof zStepsContainerVariants>;
type ZStepsItemVariants = VariantProps<typeof zStepsItemVariants>;
type ZStepsIconVariants = VariantProps<typeof zStepsIconVariants>;
type ZStepsLineVariants = VariantProps<typeof zStepsLineVariants>;
type ZStepsConnectorVariants = VariantProps<typeof zStepsConnectorVariants>;
type ZStepsArrowItemVariants = VariantProps<typeof zStepsArrowItemVariants>;

export { ZStepsComponent, zStepsArrowItemVariants, zStepsConnectorVariants, zStepsContainerVariants, zStepsIconVariants, zStepsItemVariants, zStepsLineVariants };
export type { ZStepItem, ZStepsArrowItemVariants, ZStepsConnectorVariants, ZStepsContainerVariants, ZStepsControl, ZStepsIconVariants, ZStepsItemVariants, ZStepsLineVariants, ZStepsOrientation, ZStepsSize, ZStepsStatus, ZStepsType };
