import { NavigationItem, SubNavigationItem, NavigationItemPosition, NavigationItemViewType } from '../types/Plugins';
import { NavigationUrlPayload } from '../intercom/types';

export interface INavigationModule extends Omit<NavigationItem, "children"> {
    icon?: string;
    path: string;
    lastPath?: string;
    route?: string;
    id?: string;
    disabled?: boolean;
    children: INavigationModule[];
}
export declare const usePlugins: import('pinia').StoreDefinition<"Core-plugins", Pick<{
    plugins: import('@vueuse/shared').RemovableRef<NavigationItem[]>;
    topBarItem: import('@vueuse/shared').RemovableRef<NavigationItem[]>;
    embeddedApps: import('vue').Ref<{
        namespace: string;
        vendor: string;
        name: string;
        title: string;
        label?: string;
        view: string;
        viewType: NavigationItemViewType;
        icon?: string;
        image?: string;
        position: NavigationItemPosition;
        pin?: boolean;
        children?: {
            label: string;
            route: string;
            disabled: boolean;
        }[];
        titles?: string[];
        url: string;
        moduleUrl: string;
        legacy?: boolean;
    }[], NavigationItem[] | {
        namespace: string;
        vendor: string;
        name: string;
        title: string;
        label?: string;
        view: string;
        viewType: NavigationItemViewType;
        icon?: string;
        image?: string;
        position: NavigationItemPosition;
        pin?: boolean;
        children?: {
            label: string;
            route: string;
            disabled: boolean;
        }[];
        titles?: string[];
        url: string;
        moduleUrl: string;
        legacy?: boolean;
    }[]>;
    filter: import('vue').Ref<string, string>;
    modules: import('vue').ComputedRef<INavigationModule[]>;
    filteredModules: import('vue').WritableComputedRef<INavigationModule[], INavigationModule[]>;
    isEmpty: import('vue').ComputedRef<boolean>;
    activePlugin: import('vue').Ref<NavigationItem, NavigationItem>;
    activeModule: import('vue').Ref<INavigationModule, INavigationModule>;
    activeRoutePath: import('vue').WritableComputedRef<string, string>;
    isActivePlugin: ({ namespace, view, }: Pick<NavigationItem, "view" | "namespace"> | Pick<INavigationModule, "view" | "namespace">) => boolean;
    isActiveSubRoute: (module: INavigationModule) => boolean;
    setChildren: ({ view, name }: Pick<NavigationItem, "name" | "view">, children?: SubNavigationItem[]) => void;
    addChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: SubNavigationItem) => void;
    updateChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: Partial<SubNavigationItem>) => void;
    removeChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: Partial<SubNavigationItem>) => void;
    updateNavigation: ({ view, name }: Pick<NavigationItem, "view" | "name">, updates: Partial<NavigationItem>) => void;
    navigateTo: (module: INavigationModule, child: INavigationModule) => void;
    setUrl: ({ url, view, name, namespace }: NavigationUrlPayload) => Promise<void | import('vue-router').NavigationFailure>;
    requestedNavigation: import('vue').Ref<any, any>;
    fetchModuleNavigation: () => Promise<void>;
    openEmbeddedApps: (app: NavigationItem) => void;
    closeEmbeddedApps: (app: NavigationItem) => void;
    findByViewAndName: (view: string, name: string) => NavigationItem;
}, "filter" | "plugins" | "topBarItem" | "embeddedApps" | "activePlugin" | "activeModule" | "requestedNavigation">, Pick<{
    plugins: import('@vueuse/shared').RemovableRef<NavigationItem[]>;
    topBarItem: import('@vueuse/shared').RemovableRef<NavigationItem[]>;
    embeddedApps: import('vue').Ref<{
        namespace: string;
        vendor: string;
        name: string;
        title: string;
        label?: string;
        view: string;
        viewType: NavigationItemViewType;
        icon?: string;
        image?: string;
        position: NavigationItemPosition;
        pin?: boolean;
        children?: {
            label: string;
            route: string;
            disabled: boolean;
        }[];
        titles?: string[];
        url: string;
        moduleUrl: string;
        legacy?: boolean;
    }[], NavigationItem[] | {
        namespace: string;
        vendor: string;
        name: string;
        title: string;
        label?: string;
        view: string;
        viewType: NavigationItemViewType;
        icon?: string;
        image?: string;
        position: NavigationItemPosition;
        pin?: boolean;
        children?: {
            label: string;
            route: string;
            disabled: boolean;
        }[];
        titles?: string[];
        url: string;
        moduleUrl: string;
        legacy?: boolean;
    }[]>;
    filter: import('vue').Ref<string, string>;
    modules: import('vue').ComputedRef<INavigationModule[]>;
    filteredModules: import('vue').WritableComputedRef<INavigationModule[], INavigationModule[]>;
    isEmpty: import('vue').ComputedRef<boolean>;
    activePlugin: import('vue').Ref<NavigationItem, NavigationItem>;
    activeModule: import('vue').Ref<INavigationModule, INavigationModule>;
    activeRoutePath: import('vue').WritableComputedRef<string, string>;
    isActivePlugin: ({ namespace, view, }: Pick<NavigationItem, "view" | "namespace"> | Pick<INavigationModule, "view" | "namespace">) => boolean;
    isActiveSubRoute: (module: INavigationModule) => boolean;
    setChildren: ({ view, name }: Pick<NavigationItem, "name" | "view">, children?: SubNavigationItem[]) => void;
    addChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: SubNavigationItem) => void;
    updateChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: Partial<SubNavigationItem>) => void;
    removeChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: Partial<SubNavigationItem>) => void;
    updateNavigation: ({ view, name }: Pick<NavigationItem, "view" | "name">, updates: Partial<NavigationItem>) => void;
    navigateTo: (module: INavigationModule, child: INavigationModule) => void;
    setUrl: ({ url, view, name, namespace }: NavigationUrlPayload) => Promise<void | import('vue-router').NavigationFailure>;
    requestedNavigation: import('vue').Ref<any, any>;
    fetchModuleNavigation: () => Promise<void>;
    openEmbeddedApps: (app: NavigationItem) => void;
    closeEmbeddedApps: (app: NavigationItem) => void;
    findByViewAndName: (view: string, name: string) => NavigationItem;
}, "isEmpty" | "modules" | "filteredModules" | "activeRoutePath">, Pick<{
    plugins: import('@vueuse/shared').RemovableRef<NavigationItem[]>;
    topBarItem: import('@vueuse/shared').RemovableRef<NavigationItem[]>;
    embeddedApps: import('vue').Ref<{
        namespace: string;
        vendor: string;
        name: string;
        title: string;
        label?: string;
        view: string;
        viewType: NavigationItemViewType;
        icon?: string;
        image?: string;
        position: NavigationItemPosition;
        pin?: boolean;
        children?: {
            label: string;
            route: string;
            disabled: boolean;
        }[];
        titles?: string[];
        url: string;
        moduleUrl: string;
        legacy?: boolean;
    }[], NavigationItem[] | {
        namespace: string;
        vendor: string;
        name: string;
        title: string;
        label?: string;
        view: string;
        viewType: NavigationItemViewType;
        icon?: string;
        image?: string;
        position: NavigationItemPosition;
        pin?: boolean;
        children?: {
            label: string;
            route: string;
            disabled: boolean;
        }[];
        titles?: string[];
        url: string;
        moduleUrl: string;
        legacy?: boolean;
    }[]>;
    filter: import('vue').Ref<string, string>;
    modules: import('vue').ComputedRef<INavigationModule[]>;
    filteredModules: import('vue').WritableComputedRef<INavigationModule[], INavigationModule[]>;
    isEmpty: import('vue').ComputedRef<boolean>;
    activePlugin: import('vue').Ref<NavigationItem, NavigationItem>;
    activeModule: import('vue').Ref<INavigationModule, INavigationModule>;
    activeRoutePath: import('vue').WritableComputedRef<string, string>;
    isActivePlugin: ({ namespace, view, }: Pick<NavigationItem, "view" | "namespace"> | Pick<INavigationModule, "view" | "namespace">) => boolean;
    isActiveSubRoute: (module: INavigationModule) => boolean;
    setChildren: ({ view, name }: Pick<NavigationItem, "name" | "view">, children?: SubNavigationItem[]) => void;
    addChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: SubNavigationItem) => void;
    updateChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: Partial<SubNavigationItem>) => void;
    removeChild: ({ view, name }: Pick<NavigationItem, "view" | "name">, item: Partial<SubNavigationItem>) => void;
    updateNavigation: ({ view, name }: Pick<NavigationItem, "view" | "name">, updates: Partial<NavigationItem>) => void;
    navigateTo: (module: INavigationModule, child: INavigationModule) => void;
    setUrl: ({ url, view, name, namespace }: NavigationUrlPayload) => Promise<void | import('vue-router').NavigationFailure>;
    requestedNavigation: import('vue').Ref<any, any>;
    fetchModuleNavigation: () => Promise<void>;
    openEmbeddedApps: (app: NavigationItem) => void;
    closeEmbeddedApps: (app: NavigationItem) => void;
    findByViewAndName: (view: string, name: string) => NavigationItem;
}, "removeChild" | "navigateTo" | "setUrl" | "isActivePlugin" | "isActiveSubRoute" | "setChildren" | "addChild" | "updateChild" | "updateNavigation" | "fetchModuleNavigation" | "openEmbeddedApps" | "closeEmbeddedApps" | "findByViewAndName">>;
