import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { RouteLocationRaw } from 'vue-router';
import { RouterLinkProps } from 'vue-router';

declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

declare type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};

declare type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};

declare type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};

/**
 * Allowed attributes for the `<a>` element when the `href` prop is used.
 */
declare type AnchorAttrs = HTMLAnchorElement['download'] | HTMLAnchorElement['hreflang'] | HTMLAnchorElement['ping'] | HTMLAnchorElement['referrerPolicy'] | HTMLAnchorElement['rel'] | HTMLAnchorElement['target'] | HTMLAnchorElement['type'];

declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageNavigationProps>, {
activeIndex: undefined;
modelValue: string;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
"update:modelValue": (activeTab: string) => void;
change: (activeNavIndex: number) => void;
}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageNavigationProps>, {
activeIndex: undefined;
modelValue: string;
}>>> & Readonly<{
onChange?: ((activeNavIndex: number) => any) | undefined;
"onUpdate:modelValue"?: ((activeTab: string) => any) | undefined;
}>, {
modelValue: string;
activeIndex: string | number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;

export declare interface NavItem extends Omit<TabProps, 'value'> {
    /**
     * The tab's label
     */
    label: string;
    /**
     * The tab's label
     */
    value?: string;
}

export declare interface PageNavigationProps {
    /**
     * Index of active tab (zero-based)
     * @deprecated Use v-model instead.
     */
    activeIndex?: number | string;
    /**
     * The currently active tab value
     */
    modelValue?: string;
    /**
     * Array of tabs. A `tab` is an object containing a `label` and either an `href` | `to`
     */
    items: NavItem[];
}

declare interface TabProps {
    /**
     * The tab identifier
     */
    value: string;
    /**
     * Router link `to` prop
     */
    to?: RouteLocationRaw;
    /**
     * Anchor tag href. Used for navigating to non-vue pages, such as Django pages in marketplace.
     */
    href?: string;
    /**
     * The badge's content
     */
    badge?: string | number;
    /**
     * Will render a plain text item if true.
     */
    disabled?: boolean;
    /**
     * Props for the `<a>` element when the `href` prop is used
     */
    anchorProps?: Record<AnchorAttrs, string>;
    /**
     * Props for the `<RouterLink>` element when the `to` prop is used
     */
    routerLinkProps?: Omit<RouterLinkProps, 'to'>;
}

export { }
