import { Dictionary } from 'lodash' ; /**
 * Types used to describe the seed models.
 */ export type SeedFunction < GeneratedPrismaClientType extends PrismaClientType , GeneratedSeedModels extends SeedModels > = ( options : SeedOptions < GeneratedPrismaClientType , GeneratedSeedModels > ) => Promise < Dictionary < object [ ] > > ; export type SeedModelsDefinition < GeneratedSeedModels extends SeedModels > = ( kit : SeedKit ) => GeneratedSeedModels ; export interface SeedKit { faker : Chance . Chance ; } export type SeedModels = { '*' : { amount : number ; } ; [ type ] : SeedModel ; } ; export type SeedModel = { amount ? : number ; factory ? : Dictionary < SeedModelFieldDefinition | ( ( ) => SeedModelFieldDefinition ) | SeedModelScalarListDefinition | SeedModelFieldRelationConstraint > ; } ; export type SeedModelFieldDefinition = string | number | boolean ; export type SeedModelScalarListDefinition = SeedModelFieldDefinition [ ] | ( ( ) => SeedModelFieldDefinition [ ] ) ; export type SeedModelFieldRelationConstraint = { min ? : number ; max ? : number ; } ; /**
 * Represents the outline of the Prisma Client functions.
 */ export type PrismaClientType = any ; export type SeedOptions < GeneratedPrismaClientType extends PrismaClientType , GeneratedSeedModel extends SeedModels > = { client : GeneratedPrismaClientType ; models : SeedModelsDefinition < GeneratedSeedModel > ; seed ? : number ; } ; /**
 * Types used to describe the Pool.
 */ export type DBInstance = { url : string ; cwd : string ; datamodel : string ; } ; export abstract class Pool { abstract async getDBInstance ( ) ; abstract async releaseDBInstance ( db ) ; abstract async run < T > ( fn ) ; abstract async drain ( ) ; }