import { ReactPortal } from 'react';
import { IAnyOrganization, IAnySpace, IAnyTeam, ISpaceItem } from '../../models';
export type BannerDisplayVariant = 'danger' | 'info' | 'success' | 'warning';
export type LeftSidebarVariant = 'codefeed' | 'course' | 'empty' | 'guess-account' | 'guess-space' | 'guess-spaces' | 'organization' | 'organization-space' | 'organization-spaces' | 'organizations' | 'public' | 'unchanged' | 'user' | 'user-space' | 'user-spaces';
export type BackdropDisplay = {
    open: boolean;
    message?: string | void;
};
export type BannerDisplay = {
    message: string;
    variant: BannerDisplayVariant;
    timestamp?: Date;
};
export type PortalDisplay = {
    portal: ReactPortal;
    pinned: boolean;
};
export type ScreencaptureDisplay = {
    open: boolean;
    message?: string | void;
};
export type ILayoutState = {
    backdrop?: BackdropDisplay;
    banner?: BannerDisplay;
    bootstrapped: boolean;
    item?: ISpaceItem;
    itemsRefreshCount: number;
    leftPortal?: PortalDisplay;
    leftSidebarVariant: LeftSidebarVariant;
    organization?: IAnyOrganization;
    rightPortal?: PortalDisplay;
    screenCapture?: string;
    screenshot?: ScreencaptureDisplay;
    space?: IAnySpace;
    team?: IAnyTeam;
};
export type LayoutState = ILayoutState & {
    hideBackdrop: () => void;
    hideScreencapture: () => void;
    reset: () => void;
    resetForcedLeftPortal: () => void;
    resetForcedRightPortal: () => void;
    resetLeftPortal: () => void;
    resetRightPortal: () => void;
    setBanner: (bannerDisplay: BannerDisplay) => void;
    setBootstrapped: (bootstrapped: boolean) => void;
    setItem: (item?: ISpaceItem) => void;
    setLeftPortal: (leftPortal: PortalDisplay) => void;
    setLeftSidebarVariant: (leftSidebarVariant: LeftSidebarVariant) => void;
    setRightPortal: (rightPortal: PortalDisplay) => void;
    setScreencapture: (screenCapture?: string) => void;
    showBackdrop: (message?: string) => void;
    showScreencapture: (message?: string) => void;
    triggerItemsRefresh: () => void;
    updateLayoutOrganization: (organization?: Partial<IAnyOrganization>) => void;
    updateLayoutSpace: (space?: Partial<IAnySpace>) => void;
    updateLayoutTeam: (team?: Partial<IAnyTeam>) => void;
};
export declare const layoutStore: import("zustand").StoreApi<LayoutState>;
export declare function useLayoutStore(): LayoutState;
export declare function useLayoutStore<T>(selector: (state: LayoutState) => T): T;
export default useLayoutStore;
