import type { DataSource , GeneratorConfig } from '@prisma/generator-helper' ; import type * as Transaction from './types/Transaction' ; import type { QueryEngineRequestHeaders , QueryEngineResult } from './types/QueryEngine' ; export interface FilterConstructor { new ( config ) : Engine ; } export abstract class Engine { abstract on ( event , listener ) ; abstract start ( ) ; abstract stop ( ) ; abstract getConfig ( ) ; abstract version ( forceRun ? ) ; abstract request < T > ( query , headers ? , numTry ? ) ; abstract requestBatch < T > ( queries , headers ? , transaction ? , numTry ? ) ; abstract transaction ( action , options ? ) ; abstract transaction ( action , info ) ; abstract transaction ( action , info ) ; } export type EngineEventType = 'query' | 'info' | 'warn' | 'error' | 'beforeExit' ; export interface DatasourceOverwrite { name : string ; url ? : string ; env ? : string ; } export interface EngineConfig { cwd ? : string ; dirname ? : string ; datamodelPath : string ; enableDebugLogs ? : boolean ; allowTriggerPanic ? : boolean ; prismaPath ? : string ; fetcher ? : ( query : string ) => Promise < { data ? : any ; error ? : any ; } > ; generator ? : GeneratorConfig ; datasources ? : DatasourceOverwrite [ ] ; showColors ? : boolean ; logQueries ? : boolean ; logLevel ? : 'info' | 'warn' ; env ? : Record < string , string > ; flags ? : string [ ] ; useUds ? : boolean ; clientVersion ? : string ; previewFeatures ? : string [ ] ; engineEndpoint ? : string ; activeProvider ? : string ; remarks inlineSchema ? : string ; remarks inlineDatasources ? : any ; remarks inlineSchemaHash ? : string ; } export type GetConfigResult = { datasources : DataSource [ ] ; generators : GeneratorConfig [ ] ; } ;