import { DEFAULT_LIST_KEY } from '../config';
import { BasicApi } from './request';
import { Scope } from './user';
export interface AuthState {
    routeName: string;
    authButtonList: {
        [key: string]: string[];
    };
    authMenuList: Menu.MenuOptions[];
}
export type LayoutType = 'vertical' | 'classic' | 'transverse' | 'columns' | 'default';
export type AssemblySizeType = 'large' | 'default' | 'small';
export type LanguageType = 'zh-CN' | 'en-US' | null;
export interface LayoutState {
    layout: LayoutType;
    assemblySize: AssemblySizeType;
    language: LanguageType;
    maximize: boolean;
    primary: string;
    isCollapse: boolean;
    accordion: boolean;
    breadcrumb: boolean;
    breadcrumbIcon: boolean;
    tabs: boolean;
    tabsIcon: boolean;
}
export declare type CacheState = {
    [K: string]: any[] | Record<string, any>;
};
export interface CacheOptionApi {
    [DEFAULT_LIST_KEY]: string;
}
export type ApiOrUrl = {
    url: string;
    api?: any;
} | {
    url?: undefined;
    api: BasicApi<CacheOptionApi>;
};
export declare type CacheOptions = ApiOrUrl & {
    key: string;
    params?: Record<string, any>;
    force?: boolean;
    isArray?: boolean;
};
export declare type CacheResponse = {
    label: string;
    value: string | number;
    [key: string]: any;
};
export declare type LoadingState = {
    requesting: string[];
    executing: string[];
};
export interface UserState {
    token: string;
    scopes: Record<string, Scope>;
    userInfo: UserInfo;
}
export declare type UserInfo = {
    key: string;
    avatar: string;
    username: string;
    phone: string;
    email: string;
    language: string;
    status: number;
    remark: string;
    login_at: string;
};
export declare interface ConfigState {
    app: AppConfig;
    signIn: SignInConfig;
}
export declare type AppConfig = {
    project: string;
    logo: string;
    favicon: string;
    default_avatar: string;
};
export declare type SignInConfig = {
    project: string;
    icon: string;
    title: string;
    sub_title: string;
    copyright: string;
};
export interface KeepAliveState {
    keepAliveName: string[];
    baseModules: Record<string, any> | null;
    setBaseRoutesSuccess: boolean;
}
export interface TabsMenuProps {
    icon: string;
    title: string;
    path: string;
    name: string;
    close: boolean;
    keepAlive: boolean;
}
export interface TabsState {
    tabsMenuList: TabsMenuProps[];
}
