import { type AxiosInstance } from "axios";
import type { UserCredentials, SignupResponse, LoginResponse, TokenValidationResponse, OAuthSignupResponse, OAuthCallbackParams, AuthConfig } from "../types/index";
import { extractTokens, isTokenExpired } from "../utils/tokens";
/**
 * Core authentication client for handling all auth flows
 * Handles login, signup, OAuth, token refresh, and validation
 */
export declare class AuthClient {
    private api;
    private accessToken;
    private refreshToken;
    private isRefreshing;
    private failedQueue;
    private config;
    constructor(config: AuthConfig);
    private setupInterceptors;
    private processQueue;
    setTokens(accessToken: string, refreshToken?: string): void;
    clearTokens(): void;
    getAccessToken(): string | null;
    getRefreshToken(): string | null;
    isAuthenticated(): boolean;
    login(credentials: UserCredentials): Promise<LoginResponse>;
    signup(credentials: UserCredentials): Promise<SignupResponse>;
    private refreshTokenFlow;
    validateToken(token: string): Promise<TokenValidationResponse>;
    healthCheck(): Promise<unknown>;
    generateOAuthAuthUrl(provider: string, state: string, scopes: string[]): Promise<string>;
    oauthLoginCallback(provider: string, params: OAuthCallbackParams): Promise<LoginResponse>;
    oauthSignupCallback(provider: string, params: OAuthCallbackParams): Promise<OAuthSignupResponse>;
    getAxiosInstance(): AxiosInstance;
    static extractTokens: typeof extractTokens;
    static isTokenExpired: typeof isTokenExpired;
}
