import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

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];
};

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

declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<HttpErrorProps>, {
description: string;
onLogout: undefined;
hideLogoutButton: boolean;
retryLink: undefined;
title: string;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<HttpErrorProps>, {
description: string;
onLogout: undefined;
hideLogoutButton: boolean;
retryLink: undefined;
title: string;
}>>> & Readonly<{}>, {
title: string;
description: string;
hideLogoutButton: boolean;
onLogout: () => void;
retryLink: string;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
    actions?(_: {}): any;
}>;
export default _default;

declare type ErrorCodes = 401 | 403 | 404 | 405 | 500 | 502 | 503 | 504;

declare const errors: Record<ErrorCodes, {
    title: string;
    description: string;
}>;

export declare interface HttpErrorProps {
    /**
     * A description of what possibly happened.
     */
    description?: string;
    /**
     * The error code.
     */
    errorCode: keyof typeof errors | `${keyof typeof errors}`;
    /**
     * By default, the logout button is visible unless content is provided to the `actions` slot or
     * this prop is `true`.
     */
    hideLogoutButton?: boolean;
    /**
     * A callback that will be called when the user clicks the logout button. If not provided,
     * a `logout` event will be emitted.
     */
    onLogout?: () => void;
    /**
     * A link to redirect the user to see if a hard refresh fixes the issue.
     */
    retryLink?: string;
    /**
     * The error title.
     */
    title?: string;
}

export { }
