/**
 * Options interface for the useUrlAuthentication hook
 *
 * @template Tokens - Type for authentication tokens
 * @template Session - Type for session information
 * @template Profile - Type for profile information
 * @template User - Type for user information
 *
 * @interface UseUrlAuthOptions
 * @property {(tokens: Tokens) => void} setTokens - Function to set authentication tokens
 * @property {(session: Session) => void} setSessionInfo - Function to set session information
 * @property {(profile: Profile) => void} [setSelectedProfile] - Optional function to set selected profile
 * @property {(user: User) => void} [setUser] - Optional function to set user data
 * @property {object} api - API instance with get method
 * @property {(endpoint: string, config: unknown) => Promise<unknown>} api.get - API get method
 * @property {string} endpoint - API endpoint to fetch session data
 * @property {(searchParams: URLSearchParams) => object} [extractParams] - Custom parameter extraction function
 * @property {() => void} [clearParamsFromURL] - Function to clear URL parameters after processing
 * @property {number} [maxRetries] - Maximum number of retry attempts (default: 3)
 * @property {number} [retryDelay] - Base delay between retries in milliseconds (default: 1000)
 * @property {(error: unknown) => void} [onError] - Error handler callback
 * @property {() => void} [onAuthHydrated] - Called after session is stored, before URL params are cleared.
 *   Use this to re-run the auth context check so guards re-evaluate immediately,
 *   preventing the "Área Restrita" flash on the first login redirect.
 */
export interface UseUrlAuthOptions<Tokens = unknown, Session = unknown, Profile = unknown, User = unknown> {
    setTokens: (tokens: Tokens) => void;
    setSessionInfo: (session: Session) => void;
    setSelectedProfile?: (profile: Profile) => void;
    setUser?: (user: User) => void;
    api: {
        get: (endpoint: string, config: unknown) => Promise<unknown>;
    };
    endpoint: string;
    extractParams?: (searchParams: URLSearchParams) => {
        sessionId: string;
        token: string;
        refreshToken: string;
    };
    clearParamsFromURL?: () => void;
    maxRetries?: number;
    retryDelay?: number;
    onError?: (error: unknown) => void;
    onAuthHydrated?: () => void | Promise<void>;
}
/**
 * Hook for handling URL-based authentication
 * Extracts authentication parameters from URL and processes them
 *
 * @template Tokens - Type for authentication tokens
 * @template Session - Type for session information
 * @template Profile - Type for profile information
 * @template User - Type for user information
 *
 * @param {UseUrlAuthOptions<Tokens, Session, Profile, User>} options - Configuration options
 * @returns {void}
 *
 * @example
 * ```typescript
 * useUrlAuthentication({
 *   setTokens: (tokens) => authStore.setTokens(tokens),
 *   setSessionInfo: (session) => authStore.setSessionInfo(session),
 *   setSelectedProfile: (profile) => authStore.setProfile(profile),
 *   setUser: (user) => authStore.setUser(user),
 *   api: apiInstance,
 *   endpoint: '/auth/session',
 *   clearParamsFromURL: () => navigate('/', { replace: true })
 * });
 * ```
 */
export declare function useUrlAuthentication<Tokens = unknown, Session = unknown, Profile = unknown, User = unknown>(options: UseUrlAuthOptions<Tokens, Session, Profile, User>): void;
//# sourceMappingURL=useUrlAuthentication.d.ts.map