/** * OAuth2ProviderLoader - Loads provider definitions from YAML files * * Pattern: Configuration-driven providers * - Loads provider definitions from tools/[provider]/definition.yaml * - Discovers providers with type: provider * - Makes endpoints available to OAuth2Handler * - Supports infinite providers without code changes * * Usage: * ```typescript * const loader = new OAuth2ProviderLoader('./tools'); * const providers = await loader.loadProviders(); * const googleEndpoints = providers.get('google'); * ``` */ import { OAuth2Endpoints } from './oauth2-config.js'; import { type ProviderDefinition } from '../core/schema.js'; /** * OAuth2ProviderLoader - Loads OAuth2 provider configurations from YAML * * Design Principle: * - Configuration-driven: All provider config in YAML files * - Discoverable: Automatically finds tools/[provider]/definition.yaml with type: provider * - Extensible: Add new providers by adding YAML file, no code changes * - Overridable: Users can override via env vars or runtime config */ export declare class OAuth2ProviderLoader { private toolsPath; private providers; private definitions; constructor(toolsPath: string); /** * Load all provider definitions from tools directory * * Discovers tools/[provider]/definition.yaml files with type: provider * Validates and stores provider endpoint configurations * * @returns Map of provider name → OAuth2Endpoints * @throws MatimoError if invalid provider definition found */ loadProviders(): Promise>; /** * Get endpoints for a specific provider * @param providerName - Name of the provider (e.g., 'google', 'github') * @returns OAuth2Endpoints or undefined if provider not found */ getProvider(providerName: string): OAuth2Endpoints | undefined; /** * Get full provider definition * @param providerName - Name of the provider * @returns ProviderDefinition or undefined if provider not found */ getDefinition(providerName: string): ProviderDefinition | undefined; /** * List all loaded providers */ listProviders(): string[]; /** * Validate provider definition structure using Zod schema */ protected validateProviderDefinition(definition: ProviderDefinition): void; /** * Register a provider definition */ private registerProvider; } //# sourceMappingURL=oauth2-provider-loader.d.ts.map