/** * @fileoverview Factory for creating authentication providers. * * This module provides a factory for creating the appropriate authentication * provider based on configuration or environment variables. */ import type { AuthProvider, AuthProviderConfig } from './auth_provider.js'; /** * Factory for creating authentication providers. * * Use this factory to create the appropriate authentication provider based on * configuration or environment variables. * * @example * ```typescript * // Create from environment variables (recommended) * const provider = AuthProviderFactory.fromEnv() * * // Create from explicit configuration * const provider = AuthProviderFactory.create({ * mode: 'jwt', * jwt: { secret: 'your-secret' } * }) * ``` */ export declare class AuthProviderFactory { /** * Create an authentication provider from explicit configuration. * * @param config - Authentication configuration * @returns Configured authentication provider * @throws Error if configuration is invalid * * @example * ```typescript * // Gateway mode (default) * const provider = AuthProviderFactory.create({ mode: 'gateway' }) * * // JWT mode * const provider = AuthProviderFactory.create({ * mode: 'jwt', * jwt: { secret: 'your-secret', algorithm: 'HS256' } * }) * * // No auth mode (development only) * const provider = AuthProviderFactory.create({ mode: 'none' }) * ``` */ static create(config: AuthProviderConfig): AuthProvider; /** * Create an authentication provider from environment variables. * * Environment variables: * - `AUTH_MODE`: Authentication mode ('gateway', 'jwt', 'none'). Default: 'gateway' * - `AUTH_ADMIN_ROLE`: Name of admin role. Default: 'admin' * * For JWT mode: * - `JWT_SECRET`: Secret key for HMAC algorithms * - `JWT_PUBLIC_KEY`: Public key content for RSA/EC algorithms * - `JWT_PUBLIC_KEY_FILE`: Path to public key file * - `JWT_ALGORITHM`: Algorithm (default: 'HS256') * - `JWT_ISSUER`: Expected token issuer * - `JWT_AUDIENCE`: Expected token audience * - `JWT_USER_ID_CLAIM`: Claim for user ID (default: 'sub') * - `JWT_ROLES_CLAIM`: Claim for roles (default: 'roles') * * For no-auth mode: * - `DIGITALTWIN_DISABLE_AUTH`: Set to 'true' to disable auth * - `DIGITALTWIN_ANONYMOUS_USER_ID`: Anonymous user ID (default: 'anonymous') * * @returns Configured authentication provider * * @example * ```typescript * // Gateway mode (default, no env vars needed) * // AUTH_MODE=gateway or not set * const provider = AuthProviderFactory.fromEnv() * * // JWT mode * // AUTH_MODE=jwt * // JWT_SECRET=your-secret * const provider = AuthProviderFactory.fromEnv() * * // Disable auth for development * // DIGITALTWIN_DISABLE_AUTH=true * const provider = AuthProviderFactory.fromEnv() * ``` */ static fromEnv(): AuthProvider; } //# sourceMappingURL=auth_provider_factory.d.ts.map