/**
 * Interface representing user authentication tokens.
 */
export interface AuthTokens {
    token: string;
    refreshToken: string;
    [key: string]: unknown;
}
/**
 * Interface representing a user profile.
 */
export interface UserProfile {
    id: string;
    name?: string;
    email?: string;
    [key: string]: unknown;
}
/**
 * Interface representing a user.
 */
export interface User {
    id: string;
    name?: string;
    email?: string;
    [key: string]: unknown;
}
/**
 * Interface representing session information from the API.
 */
export interface SessionInfo {
    sessionId: string;
    userId: string;
    profileId: string;
    institutionId: string;
    institutionTheme?: string | null;
    institutionFavicon?: string | null;
    institutionIcon?: string | null;
    institutionMainLogo?: string | null;
    institutionInternalLogo?: string | null;
    institutionLoginImage?: string | null;
    schoolId: string;
    schoolYearId: string;
    classId: string;
    subjects: string[];
    schools: string[];
    userName?: string;
    urlProfilePicture?: string;
    [key: string]: unknown;
}
/**
 * Interface defining the authentication state.
 */
export interface AuthState {
    user: User | null;
    tokens: AuthTokens | null;
    isAuthenticated: boolean;
    profiles: UserProfile[];
    selectedProfile: UserProfile | null;
    sessionInfo: SessionInfo | null;
    setUser: (user: User | null) => void;
    setTokens: (tokens: AuthTokens | null) => void;
    setProfiles: (profiles: UserProfile[]) => void;
    setSelectedProfile: (profile: UserProfile | null) => void;
    setSessionInfo: (sessionInfo: SessionInfo | null) => void;
    signIn: (user: User, tokens: AuthTokens, profiles: UserProfile[]) => void;
    signOut: () => void;
    updateUserSession: (sessionData: Partial<User>) => void;
}
/**
 * Zustand store for managing authentication state with persistence.
 */
export declare const useAuthStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<AuthState>, "setState" | "persist"> & {
    setState(partial: AuthState | Partial<AuthState> | ((state: AuthState) => AuthState | Partial<AuthState>), replace?: false | undefined): unknown;
    setState(state: AuthState | ((state: AuthState) => AuthState), replace: true): unknown;
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: AuthState) => void) => () => void;
        onFinishHydration: (fn: (state: AuthState) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>;
    };
}>;
//# sourceMappingURL=authStore.d.ts.map