import * as _angular_core from '@angular/core';
import { TemplateRef, OnInit } from '@angular/core';
import { MXBaseComponent, AXOrientation } from '@acorex/cdk/common';

interface AXStepWizardItem {
    id: string;
    title: string;
}
type AXStepWizardLook = 'rounded-icon' | 'circular-icon' | 'circular' | 'text-line' | 'rounded-arrow-minimal' | 'rectangular-arrow-minimal' | 'custom';
type AXStepWizardSize = 'ax-sm' | 'ax-md' | 'ax-lg';
type AXStepWizardState = 'pending' | 'success' | 'error' | 'warning' | 'clear';

declare class AXStepWizardItemComponent extends MXBaseComponent {
    step: _angular_core.InputSignal<number>;
    label: _angular_core.InputSignal<string>;
    description: _angular_core.InputSignal<string>;
    customTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
    active: _angular_core.ModelSignal<boolean>;
    passed: _angular_core.ModelSignal<boolean>;
    look: _angular_core.ModelSignal<AXStepWizardLook>;
    state: _angular_core.ModelSignal<AXStepWizardState>;
    stepId: _angular_core.WritableSignal<string>;
    className: _angular_core.Signal<string>;
    isArrowMinimalLook: _angular_core.Signal<boolean>;
    template: _angular_core.Signal<TemplateRef<unknown>>;
    set id(v: string);
    private get __hostClass();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXStepWizardItemComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXStepWizardItemComponent, "ax-step-wizard-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "color": { "alias": "color"; "required": false; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "customTemplate": { "alias": "customTemplate"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "passed": { "alias": "passed"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; }, { "active": "activeChange"; "passed": "passedChange"; "look": "lookChange"; "state": "stateChange"; }, never, ["ax-content", "ax-icon"], true, never>;
}

declare class AXStepWizardContentDirective {
    private _viewContainerRef;
    private _portal;
    get portal(): TemplateRef<any> | undefined;
    set portal(v: TemplateRef<any> | undefined);
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXStepWizardContentDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXStepWizardContentDirective, "[axStepWizardContent]", ["axStepWizardContent"], { "portal": { "alias": "axStepWizardContent"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 *  @category
 * A component for creating a step-by-step wizard interface.
 */
declare class AXStepWizardComponent extends MXBaseComponent implements OnInit {
    #private;
    connector: _angular_core.InputSignal<boolean>;
    /**
     * Whether to automatically scroll to the active step when it changes
     */
    scrollToStep: _angular_core.InputSignal<boolean>;
    size: _angular_core.InputSignal<AXStepWizardSize>;
    look: _angular_core.InputSignal<AXStepWizardLook>;
    changeStep: _angular_core.InputSignal<boolean>;
    stepChanged: _angular_core.OutputEmitterRef<AXStepWizardItemComponent>;
    /**
     * Current active step index (0-based)
     */
    activeStepIndex: _angular_core.WritableSignal<number>;
    /** @ignore */
    protected activeOrientation: _angular_core.WritableSignal<AXOrientation>;
    isFirst: _angular_core.Signal<boolean>;
    isLast: _angular_core.Signal<boolean>;
    /** @ignore */
    private changeStepContent;
    /** @ignore */
    ngOnInit(): void;
    /** @ignore */
    steps: _angular_core.Signal<readonly AXStepWizardItemComponent[]>;
    /**
     * Sets the orientation of the component.
     *
     * @param v
     */
    set orientation(v: AXOrientation);
    content: AXStepWizardContentDirective;
    /**
     * Advances to the next step if available.
     */
    next(): void;
    /**
     * Moves to the previous step if available.
     */
    previous(): void;
    /**
     * Directly navigates to the specified step by its index.
     * @param stepIndex - The step index to navigate to
     */
    goStep(stepIndex: number): void;
    /**
     * Resets the wizard to the first step.
     */
    reset(): void;
    /** @ignore */
    private get __hostClass();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXStepWizardComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXStepWizardComponent, "ax-step-wizard", never, { "connector": { "alias": "connector"; "required": false; "isSignal": true; }; "scrollToStep": { "alias": "scrollToStep"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "changeStep": { "alias": "changeStep"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; }; "content": { "alias": "content"; "required": false; }; }, { "stepChanged": "stepChanged"; }, ["steps"], ["ax-step-wizard-item"], true, never>;
}

declare class AXStepWizardModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXStepWizardModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXStepWizardModule, never, [typeof AXStepWizardComponent, typeof AXStepWizardItemComponent, typeof AXStepWizardContentDirective], [typeof AXStepWizardComponent, typeof AXStepWizardItemComponent, typeof AXStepWizardContentDirective]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXStepWizardModule>;
}

export { AXStepWizardComponent, AXStepWizardContentDirective, AXStepWizardItemComponent, AXStepWizardModule };
export type { AXStepWizardItem, AXStepWizardLook, AXStepWizardSize, AXStepWizardState };
