import { AuthProviderConfig } from '@memberjunction/core';
import { IAuthProvider } from './IAuthProvider.js';
import './providers/Auth0Provider.js';
import './providers/MSALProvider.js';
import './providers/OktaProvider.js';
import './providers/CognitoProvider.js';
import './providers/GoogleProvider.js';
/**
 * Factory and registry for managing authentication providers
 * Combines provider creation and lifecycle management in a single class
 */
export declare class AuthProviderFactory {
    private static instance;
    private providers;
    private issuerCache;
    private issuerMultiCache;
    private constructor();
    /**
     * Gets the singleton instance of the factory
     */
    static getInstance(): AuthProviderFactory;
    /**
     * Creates an authentication provider instance based on configuration
     * Uses MJGlobal ClassFactory to instantiate the correct provider class
     */
    static createProvider(config: AuthProviderConfig): IAuthProvider;
    /**
     * Registers a new authentication provider
     */
    register(provider: IAuthProvider): void;
    /**
     * Gets a provider by its issuer URL
     */
    getByIssuer(issuer: string): IAuthProvider | undefined;
    /**
     * Gets all providers matching an issuer URL.
     * Unlike getByIssuer() which returns only the first match, this returns
     * all providers for a given issuer. This is needed when multiple apps
     * (e.g. MJExplorer + MJCentral) share the same Auth0 domain but have
     * different audiences (client IDs).
     */
    getAllByIssuer(issuer: string): IAuthProvider[];
    /**
     * Gets a provider by its name
     */
    getByName(name: string): IAuthProvider | undefined;
    /**
     * Gets all registered providers
     */
    getAllProviders(): IAuthProvider[];
    /**
     * Checks if any providers are registered
     */
    hasProviders(): boolean;
    /**
     * Clears all registered providers (useful for testing)
     */
    clear(): void;
    /**
     * Gets all registered provider types from the ClassFactory
     */
    static getRegisteredProviderTypes(): string[];
    /**
     * Checks if a provider type is registered
     */
    static isProviderTypeRegistered(type: string): boolean;
}
//# sourceMappingURL=AuthProviderFactory.d.ts.map