import { AntdIconType } from '@ant-design/icons-vue/es/components/AntdIcon';
import { Component } from 'vue';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { FunctionalComponent } from 'vue';
import { PublicProps } from 'vue';
import { Ref } from 'vue';
import { VNode } from 'vue';

declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
changeLanguage: (...args: any[]) => void;
toggleTheme: (...args: any[]) => void;
menuSelect: (...args: any[]) => void;
sidebarCollapsed: (...args: any[]) => void;
}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
onChangeLanguage?: ((...args: any[]) => any) | undefined;
onToggleTheme?: ((...args: any[]) => any) | undefined;
onMenuSelect?: ((...args: any[]) => any) | undefined;
onSidebarCollapsed?: ((...args: any[]) => any) | undefined;
}>, {
languages: Languages;
siteTitle: Text_2;
showPageHeader: boolean;
showBreadcrumb: boolean;
showFooter: boolean;
showThemeSwitch: boolean;
showLanguageSelect: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_component_2: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;

declare const __VLS_component_3: DefineComponent<    {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
clickUnFold: (...args: any[]) => void;
}, string, PublicProps, Readonly<{}> & Readonly<{
onClickUnFold?: ((...args: any[]) => any) | undefined;
}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>;

declare const __VLS_component_4: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
clickMenuItem: (...args: any[]) => void;
collapseSidebar: (...args: any[]) => void;
"update:drawerVisible": (value: boolean) => void;
}, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
onClickMenuItem?: ((...args: any[]) => any) | undefined;
onCollapseSidebar?: ((...args: any[]) => any) | undefined;
"onUpdate:drawerVisible"?: ((value: boolean) => any) | undefined;
}>, {
headerTitle: Text_2;
items: SidebarItem[];
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_component_5: DefineComponent<__VLS_Props_4, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_4> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_component_6: DefineComponent<ExtractPropTypes<    {
pageTitle: {
type: StringConstructor;
};
}>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<    {
pageTitle: {
type: StringConstructor;
};
}>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

declare type __VLS_Props = {
    siteTitle?: Text_2;
    pageTitle?: Text_2;
    copyright?: Text_2;
    logo?: string;
    showPageHeader?: boolean;
    showBreadcrumb?: boolean;
    breadcrumbItems?: AppBreadcrumbItem[];
    sidebarItems?: SidebarItem[];
    showFooter?: boolean;
    showThemeSwitch?: boolean;
    currentTheme?: Theme;
    showLanguageSelect?: boolean;
    currentLanguage?: LanguageValue;
    languages?: Languages;
};

declare type __VLS_Props_2 = {
    copyright?: string;
};

declare type __VLS_Props_3 = {
    logo?: string;
    headerTitle?: Text_2;
    items?: SidebarItem[];
};

declare type __VLS_Props_4 = {
    items?: AppBreadcrumbItem[];
};

declare type __VLS_Props_5 = {
    currentLanguage?: LanguageValue;
    languages?: Languages;
};

declare type __VLS_Props_6 = {
    currentTheme?: Theme;
};

declare type __VLS_PublicProps = {
    'drawerVisible'?: boolean;
} & __VLS_Props_3;

declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: {
        logo?(_: any): any;
        'header-extra'?(_: {}): any;
        'breadcrumb-item'?(_: {
            item: {
                item: AppBreadcrumbItem;
            };
        }): any;
        'page-header-extra'?(_: {}): any;
        default?(_: {}): any;
        'footer-content'?(_: {}): any;
    };
    refs: {};
    rootEl: any;
};

declare function __VLS_template_2(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {}): any;
        'footer-content'?(_: {}): any;
    };
    refs: {};
    rootEl: HTMLDivElement;
};

declare function __VLS_template_3(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {}): any;
        actions?(_: {}): any;
    };
    refs: {};
    rootEl: HTMLDivElement;
};

declare function __VLS_template_4(): any;

declare function __VLS_template_5(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {
            item: AppBreadcrumbItem;
        }): any;
    };
    refs: {};
    rootEl: any;
};

declare function __VLS_template_6(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {}): any;
        extra?(_: {}): any;
    };
    refs: {};
    rootEl: any;
};

declare type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;

declare type __VLS_TemplateResult_2 = ReturnType<typeof __VLS_template_2>;

declare type __VLS_TemplateResult_3 = ReturnType<typeof __VLS_template_3>;

declare type __VLS_TemplateResult_4 = ReturnType<typeof __VLS_template_4>;

declare type __VLS_TemplateResult_5 = ReturnType<typeof __VLS_template_5>;

declare type __VLS_TemplateResult_6 = ReturnType<typeof __VLS_template_6>;

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_2<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_3<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_4<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_5<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_6<T, S> = T & {
    new (): {
        $slots: S;
    };
};

export declare interface AppBreadcrumbItem {
    title: Text_2;
    path: string;
    icon?: AntdIconType | FunctionalComponent | Component;
    lastRouteName?: Text_2;
}

export declare const AppFooter: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;

export declare const AppHeader: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;

export declare const AppSidebar: __VLS_WithTemplateSlots_4<typeof __VLS_component_4, __VLS_TemplateResult_4["slots"]>;

export declare const Breadcrumb: __VLS_WithTemplateSlots_5<typeof __VLS_component_5, __VLS_TemplateResult_5["slots"]>;

declare const config: {
    siteTitle: string;
    copyright: string;
};

declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export { _default as AdminLayout }
export { _default as Layout }

export declare function getAppConfig(): {
    siteTitle: string;
    copyright: string;
};

export declare function getRealTitle(t?: Text_2): string;

export declare type Languages = string[] | Record<string, LanguageValue>;

export declare const LanguageSelect: DefineComponent<__VLS_Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
changeLanguage: (...args: any[]) => void;
}, string, PublicProps, Readonly<__VLS_Props_5> & Readonly<{
onChangeLanguage?: ((...args: any[]) => any) | undefined;
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

export declare type LanguageValue = string | number;

export declare const PageHeader: __VLS_WithTemplateSlots_6<typeof __VLS_component_6, __VLS_TemplateResult_6["slots"]>;

export declare function setAppConfig(newConfig: Partial<typeof config>): void;

export declare interface SidebarItem {
    title: Text_2;
    name: string;
    path: string;
    icon?: VNode;
    children?: SidebarItem[];
}

declare type Text_2 = string | (() => string);
export { Text_2 as Text }

export declare type Theme = 'auto' | 'light' | 'dark';

export declare const ThemeSwitch: DefineComponent<__VLS_Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
toggleTheme: (...args: any[]) => void;
}, string, PublicProps, Readonly<__VLS_Props_6> & Readonly<{
onToggleTheme?: ((...args: any[]) => any) | undefined;
}>, {
currentTheme: Theme;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLButtonElement>;

export declare function useBreadcrumbs(): Ref<AppBreadcrumbItem[]>;

export { }
