import type { AxiosInstance } from 'axios';
import { type ModulesConfig } from '../types/modulesConfig';
/**
 * Interface defining the modules state
 */
export interface ModulesState {
    modules: ModulesConfig;
    loading: boolean;
    ownerInstitutionId: string | null;
    ownerProfileType: string | null;
    /**
     * Fetch modules configuration from the API
     * @param institutionId - The institution UUID
     * @param api - Axios instance for API calls
     * @param profileType - Optional profile type (STUDENT, TEACHER, UNIT_MANAGER, etc.)
     */
    fetchModules: (institutionId: string, api: AxiosInstance, profileType?: string) => Promise<void>;
    clearModules: () => void;
}
/**
 * Zustand store for managing modules visibility with persistence
 * Works with all frontends (student, professor, gestor)
 * Supports profile-specific feature flags
 */
export declare const useModulesStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ModulesState>, "setState" | "persist"> & {
    setState(partial: ModulesState | Partial<ModulesState> | ((state: ModulesState) => ModulesState | Partial<ModulesState>), replace?: false | undefined): unknown;
    setState(state: ModulesState | ((state: ModulesState) => ModulesState), replace: true): unknown;
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<ModulesState, unknown, unknown>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: ModulesState) => void) => () => void;
        onFinishHydration: (fn: (state: ModulesState) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<ModulesState, unknown, unknown>>;
    };
}>;
//# sourceMappingURL=modulesStore.d.ts.map