import { AuthController, CMSView, CMSViewsBuilder, DataSourceDelegate, EntityCollection, EntityCollectionsBuilder, FireCMSPlugin, NavigationController, NavigationGroupMapping, PermissionsBuilder, User, UserConfigurationPersistence } from "../types";
export declare const NAVIGATION_ADMIN_GROUP_NAME = "Admin";
export type BuildNavigationContextProps<EC extends EntityCollection, USER extends User> = {
    /**
     * Base path for the CMS, used to build the all the URLs.
     * Defaults to "/".
     */
    basePath?: string;
    /**
     * Base path for the collections, used to build the collection URLs.
     * Defaults to "c" (e.g. "/c/products").
     */
    baseCollectionPath?: string;
    /**
     * The auth controller used to manage the user authentication and permissions.
     */
    authController: AuthController<USER>;
    /**
     * The collections to be used in the CMS.
     * This can be a static array of collections or a function that returns a promise
     * resolving to an array of collections.
     */
    collections?: EC[] | EntityCollectionsBuilder<EC>;
    /**
     * Optional permissions builder to be applied to the collections.
     * If not provided, the permissions will be resolved from the collection configuration.
     */
    collectionPermissions?: PermissionsBuilder;
    /**
     * Custom views to be added to the CMS, these will be available in the main navigation.
     * This can be a static array of views or a function that returns a promise
     * resolving to an array of views.
     */
    views?: CMSView[] | CMSViewsBuilder;
    /**
     * Custom views to be added to the CMS admin navigation.
     * This can be a static array of views or a function that returns a promise
     * resolving to an array of views.
     */
    adminViews?: CMSView[] | CMSViewsBuilder;
    /**
     * Controller for storing user preferences.
     */
    userConfigPersistence?: UserConfigurationPersistence;
    /**
     * Delegate for data source operations, used to resolve collections and views.
     */
    dataSourceDelegate: DataSourceDelegate;
    /**
     * Plugins to be used in the CMS.
     */
    plugins?: FireCMSPlugin[];
    /**
     * Used to define the name of groups and order of the navigation entries.
     */
    navigationGroupMappings?: NavigationGroupMapping[];
    /**
     * If true, the navigation logic will not be updated until this flag is false
     */
    disabled?: boolean;
    /**
     * @deprecated
     * Use `navigationGroupMappings` instead.
     */
    viewsOrder?: string[];
};
export declare function useBuildNavigationController<EC extends EntityCollection, USER extends User>(props: BuildNavigationContextProps<EC, USER>): NavigationController;
