import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { PublicProps } from 'vue';
import { Ref } from 'vue';

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare const _default: __VLS_WithTemplateSlots<DefineComponent<StepperProps, {
back: () => void;
next: () => void;
goTo: (stepIndex: number, substepIndex?: number) => void;
isStepCompleted: (stepIndex: number, substepIndex?: number) => boolean;
isStepActive: (stepIndex: number, substepIndex?: number) => boolean;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
"update:step": (step: number) => any;
"update:substep": (substep: number) => any;
}, string, PublicProps, Readonly<StepperProps> & Readonly<{
"onUpdate:step"?: ((step: number) => any) | undefined;
"onUpdate:substep"?: ((substep: number) => any) | undefined;
}>, {
step: number;
substep: number;
linear: boolean;
orientation: StepperOrientation;
useResponsiveNav: boolean;
theme: StepperTheme;
}, {}, {}, {}, string, ComponentProvideOptions, false, {
stepperListRef: HTMLUListElement;
}, HTMLDivElement>, {
    default?(_: {}): any;
}>;
export default _default;

export declare type StepperOrientation = `${StepperOrientationEnum}`;

export declare enum StepperOrientationEnum {
    VERTICAL = "vertical",
    HORIZONTAL = "horizontal"
}

export declare interface StepperProps {
    /**
     * The current step index
     */
    step?: number;
    /**
     * The current substep index
     */
    substep?: number;
    /**
     * A linear stepper prevents navigation to steps that are ahead of the completed ones
     */
    linear?: boolean;
    /**
     * Determines whether the stepper is horizontal or vertical
     */
    orientation?: StepperOrientation;
    /**
     * Force responsive view on horizontal orientation
     */
    useResponsiveNav?: boolean;
    /**
     * Determines the theme of the stepper
     */
    theme?: StepperTheme;
}

/**
 * Helper type for the template ref (the "ref" attribute) on a Stepper instance
 * @see: https://vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs
 */
export declare type StepperRef = Ref<InstanceType<typeof _default> | null>;

export declare type StepperTheme = 'dark' | 'light';

export { }
