import * as i0 from '@angular/core';
import { AfterContentInit, OnChanges, EventEmitter, QueryList, ElementRef, SimpleChanges } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

/**
 * @ignore
 * @internal
 */
interface IEuiWizardStep {
    id: string;
    indexLabel: string;
    indexIconSvgName: string;
    label: string;
    subLabel: string;
    isCompleted: boolean;
    isActive: boolean;
    isShowStepTitle: boolean;
    isInvalid: boolean;
    isWarning: boolean;
    isDisabled: boolean;
    index: number;
    url: string;
}
/**
 * @ignore
 * @internal
 */
declare class EuiWizardStep implements IEuiWizardStep {
    id: string;
    indexLabel: string;
    indexIconSvgName: string;
    label: string;
    subLabel: string;
    isCompleted: boolean;
    isActive: boolean;
    isShowStepTitle: boolean;
    isInvalid: boolean;
    isWarning: boolean;
    isDisabled: boolean;
    index: number;
    url: string;
    constructor(values?: any);
    toString(): string;
    toJSON(): object;
}

/**
 * @ignore
 * @internal
 */
declare class EuiWizardStepComponent implements EuiWizardStep {
    id: string;
    indexLabel: string;
    indexIconSvgName: string;
    label: string;
    subLabel: string;
    index: number;
    url: string;
    isCompleted: boolean;
    isActive: boolean;
    isShowStepTitle: boolean;
    isInvalid: boolean;
    isWarning: boolean;
    isDisabled: boolean;
    /**
     * TODO: from which one is this method being used from?
     */
    toJSON(): object;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiWizardStepComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiWizardStepComponent, "eui-wizard-step", never, { "id": { "alias": "id"; "required": false; }; "indexLabel": { "alias": "indexLabel"; "required": false; }; "indexIconSvgName": { "alias": "indexIconSvgName"; "required": false; }; "label": { "alias": "label"; "required": false; }; "subLabel": { "alias": "subLabel"; "required": false; }; "index": { "alias": "index"; "required": false; }; "url": { "alias": "url"; "required": false; }; "isCompleted": { "alias": "isCompleted"; "required": false; }; "isActive": { "alias": "isActive"; "required": false; }; "isShowStepTitle": { "alias": "isShowStepTitle"; "required": false; }; "isInvalid": { "alias": "isInvalid"; "required": false; }; "isWarning": { "alias": "isWarning"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_isCompleted: unknown;
    static ngAcceptInputType_isActive: unknown;
    static ngAcceptInputType_isShowStepTitle: unknown;
    static ngAcceptInputType_isInvalid: unknown;
    static ngAcceptInputType_isWarning: unknown;
    static ngAcceptInputType_isDisabled: unknown;
}

/**
 * @ignore
 * @internal
 * @description
 * Enhanced wizard component (version 2) for guiding users through sequential processes or forms.
 * Displays step indicators with navigation controls and manages step activation state.
 * Supports keyboard navigation, custom content mode, and programmatic step selection.
 * Provides both declarative (content children) and programmatic (steps array) configuration.
 * Commonly used for onboarding flows, multi-page forms, checkout processes, and guided workflows.
 *
 * @usageNotes
 * ### Basic Usage
 * ```html
 * <eui-wizard [activeStepIndex]="1" (selectStep)="onStepChange($event)">
 *   <eui-wizard-step label="Account Details">
 *     <form><!-- step 1 content --></form>
 *   </eui-wizard-step>
 *   <eui-wizard-step label="Preferences">
 *     <form><!-- step 2 content --></form>
 *   </eui-wizard-step>
 *   <eui-wizard-step label="Confirmation">
 *     <div><!-- step 3 content --></div>
 *   </eui-wizard-step>
 * </eui-wizard>
 * ```
 *
 * ### Custom Content Mode
 * ```html
 * <eui-wizard
 *   [isCustomContent]="true"
 *   [steps]="wizardSteps"
 *   [activeStepIndex]="currentStep">
 * </eui-wizard>
 *
 * <!-- Render step content externally -->
 * <div *ngIf="currentStep === 1">Step 1 Content</div>
 * <div *ngIf="currentStep === 2">Step 2 Content</div>
 * ```
 *
 * ### Accessibility
 * - Use role="navigation" with aria-label describing the wizard
 * - Each step has clear labels and state indicators
 * - Keyboard navigation: Arrow keys to move between steps
 * - Current step is announced to screen readers
 *
 * ### Notes
 * - activeStepIndex is 1-based (first step is 1, not 0)
 * - isCustomContent mode displays only step indicators
 * - isShowStepTitle displays step labels below indicators
 * - isNavigationAllowed controls whether users can click steps directly
 * - Version 2 provides enhanced features over original wizard
 */
declare class EuiWizardComponent implements AfterContentInit, OnChanges {
    activeStepIndex: number;
    steps: Array<EuiWizardStep>;
    tabindex: number;
    e2eAttr: string;
    selectStep: EventEmitter<EuiWizardStep>;
    childrenSteps: QueryList<EuiWizardStepComponent>;
    canBeFocused: QueryList<ElementRef>;
    stepContentId: string;
    stepIds: string;
    isCustomContent: boolean;
    isShowStepTitle: boolean;
    isNavigationAllowed: boolean;
    ngAfterContentInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onSelectStep(step: EuiWizardStep, index: number): void;
    onKeyDown(event: KeyboardEvent): void;
    /** @deprecated This will be removed in next version of eUI */
    protected trackByFn(index: number, item: EuiWizardStep): string;
    protected selectPreviousStep(): void;
    protected selectNextStep(): void;
    private _selectStep;
    private _getStep;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiWizardComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiWizardComponent, "eui-wizard", never, { "activeStepIndex": { "alias": "activeStepIndex"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "e2eAttr": { "alias": "e2eAttr"; "required": false; }; "isCustomContent": { "alias": "isCustomContent"; "required": false; }; "isShowStepTitle": { "alias": "isShowStepTitle"; "required": false; }; "isNavigationAllowed": { "alias": "isNavigationAllowed"; "required": false; }; }, { "selectStep": "selectStep"; }, ["childrenSteps"], ["*"], true, never>;
    static ngAcceptInputType_isCustomContent: unknown;
    static ngAcceptInputType_isShowStepTitle: unknown;
    static ngAcceptInputType_isNavigationAllowed: unknown;
}

/**
 * @ignore
 * @internal
 */
declare class EuiWizardService {
    activeStepIndex: number;
    steps: EuiWizardStep[];
    route: ActivatedRoute;
    private router;
    init(steps: EuiWizardStep[], route: ActivatedRoute): void;
    navigationIncrement(increment: number): void;
    selectStep(step: EuiWizardStep): void;
    private _navigateToStep;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiWizardService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<EuiWizardService>;
}

declare const EUI_WIZARD_V2: readonly [typeof EuiWizardStepComponent, typeof EuiWizardComponent];

export { EUI_WIZARD_V2, EuiWizardComponent, EuiWizardService, EuiWizardStep, EuiWizardStepComponent };
export type { IEuiWizardStep };
//# sourceMappingURL=eui-components-eui-wizard-v2.d.ts.map
