import { Headers } from '../../../lib/headers/Headers.js';
import { type Logger, type ILogObj } from '../../../lib/logging/index.js';
import type { INtlmAuthorization, IAuthorizationSettingsUnion } from '../../../models/Authorization.js';
import type { IRequestAuthState } from '../CoreEngine.js';
export interface ProxyAuthCredentials {
    proxyUsername?: string;
    proxyPassword?: string;
    proxyAuthorization?: string;
}
export interface AuthOptions {
    logger: Logger<ILogObj>;
    proxyCredentials?: ProxyAuthCredentials;
}
export interface AuthorizationConfig {
    type: string;
    enabled: boolean;
    config?: IAuthorizationSettingsUnion;
}
/**
 * Manages all authentication logic for HTTP requests
 */
export declare class AuthManager {
    private logger;
    private proxyCredentials?;
    private authState?;
    constructor(options: AuthOptions);
    /**
     * Handle all authorization types for request headers.
     * It applied authorization data defined on the request object.
     */
    handleRequestAuthorization(headers: Headers, authorizationConfig?: AuthorizationConfig[], hostname?: string): void;
    /**
     * Handle NTLM authentication
     */
    handleNtlmAuth(authData: INtlmAuthorization, headers: Headers, hostname?: string): void;
    /**
     * Handle NTLM response from server
     */
    handleNtlmResponse(headers: Headers): boolean;
    /**
     * Generate proxy authorization header
     */
    generateProxyAuthHeader(): string | undefined;
    /**
     * Handle Basic authentication
     */
    handleBasicAuth(username: string, password: string, headers: Headers): void;
    /**
     * Handle Bearer token authentication
     */
    handleBearerAuth(token: string, headers: Headers): void;
    /**
     * Get current authentication state
     */
    getAuthState(): IRequestAuthState | undefined;
    /**
     * Set authentication state
     */
    setAuthState(state: IRequestAuthState): void;
    /**
     * Clear authentication state
     */
    clearAuthState(): void;
    /**
     * Check if authentication is in progress
     */
    isAuthenticating(): boolean;
    /**
     * Check if we have credentials for proxy authentication
     */
    hasProxyCredentials(): boolean;
}
//# sourceMappingURL=AuthManager.d.ts.map