import { LoginUser } from '../types/LoginUser';
/**
 * The `useItsAuthStore` variable represents a centralized Vue store module defined using `defineStore`.
 * It is used for managing authentication-related state and provides methods for handling various
 * authentication functionalities such as token management, user role retrieval, user login and logout.
 *
 * The store includes the following state properties:
 * - `accessToken` (encrypted): Holds the user's access token.
 * - `pkceCodeVerifier`: Stores the PKCE code verifier for OAuth2.
 * - `expiresInTime`: Records the expiration timestamp for the access token.
 * - `userDetails`: Stores current user information, including roles.
 *
 * Core functionalities offered by the store:
 * - Generating secure secrets for handling encrypted tokens.
 * - Encrypting and decrypting tokens securely.
 * - Checking authentication status and token validity.
 * - Managing user details and roles.
 * - Handling PKCE OAuth2 flows for secure authorization.
 * - Fetching user roles and department information from a remote API.
 * - Managing session state, including login, logout, and session cleanup.
 *
 * Methods:
 * - `isAuthenticated()`: Checks if a user is authenticated based on the presence of an access token.
 * - `decryptedToken()`: Returns the decrypted access token.
 * - `isTokenExpired()`: Checks whether the access token is expired.
 * - `loginUser()`: Retrieves the current logged-in user's details.
 * - `isUserRolesLoaded()`: Verifies if user roles are loaded in the store.
 * - `getRoleAssignedToUser()`: Retrieves the roles assigned to the user.
 * - `clearAccessTokenAndUserData()`: Clears token and user data from the store.
 * - `authenticateUser()`: Authenticates the user via OAuth2 authorization code flow.
 * - `authenticate(authorizationCode?)`: Initiates the authentication process and redirects to the authorization URL if necessary.
 * - `logout()`: Logs out the user by clearing their session and user data.
 *
 * Persistence:
 * - The store uses `persist` to store specific state properties (`accessToken`, `pkceCodeVerifier`, and `userDetails`) in `sessionStorage`.
 */
export declare const useItsAuthStore: import('pinia').StoreDefinition<"its-auth", Pick<{
    accessToken: import('vue').Ref<string, string>;
    pkceCodeVerifier: import('vue').Ref<string, string>;
    userDetails: import('vue').Ref<{
        id: number;
        firstName?: string | undefined;
        lastName?: string | undefined;
        email: string;
        racfid?: string | undefined;
        adUserId?: string | undefined;
        employeeId?: string | undefined;
        roles?: string[] | undefined;
        departmentName?: string | undefined;
        businessUnitName?: string | undefined;
        system18Id?: string | undefined;
        targetEnv?: string | undefined;
        appVersion?: string | undefined;
    }, LoginUser | {
        id: number;
        firstName?: string | undefined;
        lastName?: string | undefined;
        email: string;
        racfid?: string | undefined;
        adUserId?: string | undefined;
        employeeId?: string | undefined;
        roles?: string[] | undefined;
        departmentName?: string | undefined;
        businessUnitName?: string | undefined;
        system18Id?: string | undefined;
        targetEnv?: string | undefined;
        appVersion?: string | undefined;
    }>;
    preAuthRoute: import('vue').Ref<{
        path: string;
        query: Record<string, any>;
    } | null, {
        path: string;
        query: Record<string, any>;
    } | {
        path: string;
        query: Record<string, any>;
    } | null>;
    isAuthenticated: () => boolean;
    decryptedToken: () => string;
    isTokenExpired: () => boolean;
    loginUser: () => LoginUser;
    setUserDetails: (user: LoginUser) => void;
    isUserRolesLoaded: () => boolean;
    getRoleAssignedToUser: () => string[];
    clearAccessTokenAndUserData: () => void;
    authenticateUser: (authCode: string) => Promise<boolean>;
    authenticate: (authorizationCode?: string) => Promise<boolean>;
    logout: () => void;
    getAvatar: () => string;
    userInfo: () => {
        email: string;
        name: string;
    };
    getUserEmail: () => string;
    logoutSSO: () => void;
}, "accessToken" | "pkceCodeVerifier" | "userDetails" | "preAuthRoute">, Pick<{
    accessToken: import('vue').Ref<string, string>;
    pkceCodeVerifier: import('vue').Ref<string, string>;
    userDetails: import('vue').Ref<{
        id: number;
        firstName?: string | undefined;
        lastName?: string | undefined;
        email: string;
        racfid?: string | undefined;
        adUserId?: string | undefined;
        employeeId?: string | undefined;
        roles?: string[] | undefined;
        departmentName?: string | undefined;
        businessUnitName?: string | undefined;
        system18Id?: string | undefined;
        targetEnv?: string | undefined;
        appVersion?: string | undefined;
    }, LoginUser | {
        id: number;
        firstName?: string | undefined;
        lastName?: string | undefined;
        email: string;
        racfid?: string | undefined;
        adUserId?: string | undefined;
        employeeId?: string | undefined;
        roles?: string[] | undefined;
        departmentName?: string | undefined;
        businessUnitName?: string | undefined;
        system18Id?: string | undefined;
        targetEnv?: string | undefined;
        appVersion?: string | undefined;
    }>;
    preAuthRoute: import('vue').Ref<{
        path: string;
        query: Record<string, any>;
    } | null, {
        path: string;
        query: Record<string, any>;
    } | {
        path: string;
        query: Record<string, any>;
    } | null>;
    isAuthenticated: () => boolean;
    decryptedToken: () => string;
    isTokenExpired: () => boolean;
    loginUser: () => LoginUser;
    setUserDetails: (user: LoginUser) => void;
    isUserRolesLoaded: () => boolean;
    getRoleAssignedToUser: () => string[];
    clearAccessTokenAndUserData: () => void;
    authenticateUser: (authCode: string) => Promise<boolean>;
    authenticate: (authorizationCode?: string) => Promise<boolean>;
    logout: () => void;
    getAvatar: () => string;
    userInfo: () => {
        email: string;
        name: string;
    };
    getUserEmail: () => string;
    logoutSSO: () => void;
}, never>, Pick<{
    accessToken: import('vue').Ref<string, string>;
    pkceCodeVerifier: import('vue').Ref<string, string>;
    userDetails: import('vue').Ref<{
        id: number;
        firstName?: string | undefined;
        lastName?: string | undefined;
        email: string;
        racfid?: string | undefined;
        adUserId?: string | undefined;
        employeeId?: string | undefined;
        roles?: string[] | undefined;
        departmentName?: string | undefined;
        businessUnitName?: string | undefined;
        system18Id?: string | undefined;
        targetEnv?: string | undefined;
        appVersion?: string | undefined;
    }, LoginUser | {
        id: number;
        firstName?: string | undefined;
        lastName?: string | undefined;
        email: string;
        racfid?: string | undefined;
        adUserId?: string | undefined;
        employeeId?: string | undefined;
        roles?: string[] | undefined;
        departmentName?: string | undefined;
        businessUnitName?: string | undefined;
        system18Id?: string | undefined;
        targetEnv?: string | undefined;
        appVersion?: string | undefined;
    }>;
    preAuthRoute: import('vue').Ref<{
        path: string;
        query: Record<string, any>;
    } | null, {
        path: string;
        query: Record<string, any>;
    } | {
        path: string;
        query: Record<string, any>;
    } | null>;
    isAuthenticated: () => boolean;
    decryptedToken: () => string;
    isTokenExpired: () => boolean;
    loginUser: () => LoginUser;
    setUserDetails: (user: LoginUser) => void;
    isUserRolesLoaded: () => boolean;
    getRoleAssignedToUser: () => string[];
    clearAccessTokenAndUserData: () => void;
    authenticateUser: (authCode: string) => Promise<boolean>;
    authenticate: (authorizationCode?: string) => Promise<boolean>;
    logout: () => void;
    getAvatar: () => string;
    userInfo: () => {
        email: string;
        name: string;
    };
    getUserEmail: () => string;
    logoutSSO: () => void;
}, "isAuthenticated" | "decryptedToken" | "isTokenExpired" | "loginUser" | "setUserDetails" | "isUserRolesLoaded" | "getRoleAssignedToUser" | "clearAccessTokenAndUserData" | "authenticateUser" | "authenticate" | "logout" | "getAvatar" | "userInfo" | "getUserEmail" | "logoutSSO">>;
