import { JwtHeader, JwtPayload, SigningKeyCallback } from 'jsonwebtoken';
import jwksClient from 'jwks-rsa';
import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
import { IAuthProvider } from './IAuthProvider.js';
/**
 * Base implementation of IAuthProvider with common functionality
 * Concrete providers should extend this class and use @RegisterClass decorator
 * with BaseAuthProvider as the base class
 */
export declare abstract class BaseAuthProvider implements IAuthProvider {
    name: string;
    issuer: string;
    audience: string;
    jwksUri: string;
    /** OAuth client ID for this provider (used by OAuth proxy for upstream auth) */
    clientId?: string;
    protected config: AuthProviderConfig;
    protected jwksClient: jwksClient.JwksClient;
    constructor(config: AuthProviderConfig);
    /**
     * Validates that required configuration is present
     */
    validateConfig(): boolean;
    /**
     * Gets the signing key for token verification with retry logic
     */
    getSigningKey(header: JwtHeader, callback: SigningKeyCallback): void;
    /**
     * Retrieves signing key with exponential backoff retry logic
     */
    private getSigningKeyWithRetry;
    /**
     * Checks if a given issuer URL belongs to this provider
     */
    matchesIssuer(issuer: string): boolean;
    /**
     * Abstract method for extracting user info - must be implemented by each provider
     */
    abstract extractUserInfo(payload: JwtPayload): AuthUserInfo;
}
//# sourceMappingURL=BaseAuthProvider.d.ts.map