import { Type } from '@nestjs/common'; import { ModuleRef } from '@nestjs/core'; import { IStrategy } from './interfaces'; export interface StrategyMetadata { id: string; name: string; version: string; enabled: boolean; description?: string; requiredFields: string[]; } export declare class StrategyFactory { private readonly moduleRef; private readonly logger; private readonly strategies; private readonly metadata; constructor(moduleRef: ModuleRef); register(strategyClass: Type, metadata: StrategyMetadata): void; get(strategyId: string): Promise; getAvailableStrategies(): string[]; getEnabledStrategies(): string[]; getMetadata(strategyId: string): StrategyMetadata | undefined; getAllMetadata(): StrategyMetadata[]; exists(strategyId: string): boolean; setEnabled(strategyId: string, enabled: boolean): void; validateUserData(strategyId: string, userData: Record): Promise<{ valid: boolean; missing: string[]; }>; discoverStrategies(module: any): Promise; } export declare function Strategy(metadata: Omit): >(constructor: T) => T; export declare function RequiredFields(fields: string[]): >(constructor: T) => T;