/// <reference types="react" />
import type { ISiteContext } from 'dumi/dist/client/theme-api/context';
import { ILocale, INavItem, IRouteMeta, ISidebarGroup } from 'dumi/dist/client/theme-api/types';
import type { Location } from 'history';
import { StoreApi } from 'zustand';
import { SiteThemeConfig } from "../types";
export type NavData = (INavItem & {
    children?: INavItem[] | undefined;
})[];
export type ISiteData = ISiteContext & {
    themeConfig: SiteThemeConfig;
};
export interface SiteStore {
    locale: ILocale;
    location: Location;
    navData: NavData;
    routeMeta: IRouteMeta;
    sidebar?: ISidebarGroup[];
    siteData: ISiteData;
    tabMeta?: NonNullable<IRouteMeta['tabs']>[0]['meta'];
}
export declare const createStore: (initState: SiteStore) => import("zustand/traditional").UseBoundStoreWithEqualityFn<Omit<StoreApi<SiteStore>, "setState"> & {
    setState(partial: SiteStore | Partial<SiteStore> | ((state: SiteStore) => SiteStore | Partial<SiteStore>), replace?: false | undefined, action?: (string | {
        [x: string]: unknown;
        [x: number]: unknown;
        [x: symbol]: unknown;
        type: string;
    }) | undefined): void;
    setState(state: SiteStore | ((state: SiteStore) => SiteStore), replace: true, action?: (string | {
        [x: string]: unknown;
        [x: number]: unknown;
        [x: symbol]: unknown;
        type: string;
    }) | undefined): void;
}>;
declare const useStore: import("zustand-utils").UseContextStore<StoreApi<SiteStore>>, useStoreApi: () => {
    setState: {
        (partial: SiteStore | Partial<SiteStore> | ((state: SiteStore) => SiteStore | Partial<SiteStore>), replace?: false | undefined): void;
        (state: SiteStore | ((state: SiteStore) => SiteStore), replace: true): void;
    };
    getState: () => SiteStore;
    getInitialState: () => SiteStore;
    subscribe: (listener: (state: SiteStore, prevState: SiteStore) => void) => () => void;
}, Provider: ({ createStore, children }: {
    createStore: () => StoreApi<SiteStore>;
    children: import("react").ReactNode;
}) => import("react").FunctionComponentElement<import("react").ProviderProps<StoreApi<SiteStore> | undefined>>;
export { Provider, useStore as useSiteStore, useStoreApi };
