import type { DMMF } from '@prisma/generator-helper';
import { WritableDeep } from 'type-fest';
import type { TemplateHelpers } from './template-helpers';
import type { IClassValidator, IDecorators, ImportStatementParams, Model, ParsedField } from './types';
export declare const uniq: <T = any>(input: T[]) => T[];
export declare const concatIntoArray: <T = any>(source: T[], target: T[]) => void;
export declare function concatUniqueIntoArray<T = any>(source: T[], target: T[]): void;
export declare function concatUniqueIntoArray<T = {
    [key: string]: any;
}>(source: T[], target: T[], prop: string): void;
export declare const makeImportsFromPrismaClient: (fields: ParsedField[], prismaClientImportPath: string, importEnums?: boolean) => ImportStatementParams[];
export declare const makeCustomImports: (fields: ParsedField[]) => ImportStatementParams[];
export declare const mapDMMFToParsedField: (field: WritableDeep<DMMF.Field> | ParsedField, overrides?: Partial<ParsedField>, decorators?: IDecorators) => ParsedField;
export declare const getRelationScalars: (fields: ParsedField[]) => Record<string, string[]>;
interface GetRelationConnectInputFieldsParam {
    field: ParsedField;
    allModels: DMMF.Model[];
}
export declare const getRelationConnectInputFields: ({ field, allModels, }: GetRelationConnectInputFieldsParam) => Set<DMMF.Field>;
export declare const getRelativePath: (from: string, to: string) => string;
interface GenerateRelationInputParam {
    field: ParsedField;
    model: Model;
    allModels: Model[];
    templateHelpers: TemplateHelpers;
    preAndSuffixClassName: TemplateHelpers['createDtoName'] | TemplateHelpers['updateDtoName'];
    canCreateAnnotation: RegExp;
    canConnectAnnotation: RegExp;
    canUpdateAnnotation?: RegExp;
    canDisconnectAnnotation?: RegExp;
}
export declare const generateRelationInput: ({ field, model, allModels, templateHelpers: t, preAndSuffixClassName, canCreateAnnotation, canConnectAnnotation, canUpdateAnnotation, canDisconnectAnnotation, }: GenerateRelationInputParam) => {
    type: string;
    imports: ImportStatementParams[];
    generatedClasses: string[];
    apiExtraModels: string[];
    classValidators: IClassValidator[];
};
interface GenerateUniqueInputParam {
    compoundName: string;
    fields: ParsedField[];
    model: Model;
    templateHelpers: TemplateHelpers;
}
export declare const generateUniqueInput: ({ compoundName, fields, model, templateHelpers: t, }: GenerateUniqueInputParam) => {
    type: string;
    imports: ImportStatementParams[];
    generatedClasses: string[];
    apiExtraModels: string[];
    classValidators: IClassValidator[];
};
export declare const mergeImportStatements: (first: ImportStatementParams, second: ImportStatementParams) => ImportStatementParams;
export declare const zipImportStatementParams: (items: ImportStatementParams[]) => ImportStatementParams[];
export {};
