import type { VueNode } from '@antdv/pro-utils';
import type { DropdownProps } from 'ant-design-vue';
import type { MouseEventHandler } from 'ant-design-vue/es/_util/EventInterface';
import type { AnchorHTMLAttributes, Ref } from 'vue';
export interface LayoutItemType {
    href?: string;
    path?: string;
    title?: VueNode;
    overlay?: VueNode;
    className?: string;
    dropdownProps?: DropdownProps;
    onClick?: MouseEventHandler;
    linkPath?: string;
    component?: string;
}
export interface StaticContext {
    statusCode?: number | undefined;
}
export interface match<Params extends {
    [K in keyof Params]?: string;
} = Record<string, any>> {
    params: Params;
    isExact: boolean;
    path: string;
    url: string;
}
export type LinkProps = {
    to: string;
    replace?: boolean;
    innerRef?: Ref<HTMLAnchorElement>;
} & AnchorHTMLAttributes;
export interface MenuDataItem {
    children?: MenuDataItem[];
    routes?: undefined;
    hideChildrenInMenu?: boolean;
    hideInMenu?: boolean;
    icon?: VueNode;
    locale?: string | false;
    name?: string;
    key?: string;
    disabled?: boolean;
    disabledTooltip?: boolean;
    path?: string;
    parentKeys?: string[];
    flatMenu?: boolean;
    target?: string;
    tooltip?: string;
    pro_layout_parentKeys?: string[];
    [key: string]: any;
}
export type Route = Omit<MenuDataItem, 'routes'> & {
    children?: Route[];
};
export type WithFalse<T> = T | false;
export interface RouterTypes {
    computedMatch?: match<any>;
    route?: Route;
    location: {
        pathname?: string;
    };
}
export interface MessageDescriptor {
    id: any;
    description?: string;
    defaultMessage?: string;
}
