import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai'; import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai'; import { DyNTS_SingletonService } from '../../../_services/base/singleton.service'; import { DyNTS_AI_TestGeneration_Result } from '../_models/ai-test-generation-result.interface'; /** * Absztrakt bazis osztaly a user AI provider kulcs kezeleshez * * A titkositas/visszafejtes NEM itt tortenik -- azt az fdp-auth-service Auth_ControlService-e vegzi. * Ezek a service-ek a mar visszafejtett config-ot es API kulcsot kapjak, * es abbol allitjak ossze a provider-specifikus konfigot. */ export abstract class DyNTS_AI_UserKey_ServiceBase extends DyNTS_SingletonService { /** melyik provider-hez tartozik ez a service */ abstract readonly aiProvider: DyFM_AI_Provider; /** * Visszafejtett user config + kulcs -> provider-specifikus AI config osszeallitas * @param userProviderConfig - a user provider konfiguracioja * @param decryptedApiKey - a mar visszafejtett API kulcs */ abstract resolveConfig( userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string ): DyFM_AI_Config; /** * Kapcsolat tesztelese a provider-rel a visszafejtett kulccsal * @param userProviderConfig - a user provider konfiguracioja * @param decryptedApiKey - a mar visszafejtett API kulcs */ abstract testConnection( userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string ): Promise; /** * Elerheto modellek lekerdezese a provider API-rol * @param userProviderConfig - a user provider konfiguracioja * @param decryptedApiKey - a mar visszafejtett API kulcs */ abstract listAvailableModels( userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string ): Promise; /** * Teszt generalas a provider-rel * @param set.userProviderConfig - a user provider konfiguracioja * @param set.decryptedApiKey - a mar visszafejtett API kulcs * @param set.model - a hasznalando modell */ abstract testGeneration(set: { userProviderConfig: DyFM_AI_UserProviderConfig; decryptedApiKey: string; model: string; }): Promise; }