import { DeepPartial, EntityManager, EntityTarget, FindConditions, FindOneOptions, Repository, SelectQueryBuilder } from 'typeorm';
import { IOption, IPage } from '@shared/interfaces/model';
declare const paginate: <T>(repository: Repository<T>, { perPage, page, query }: IOption<T>) => Promise<IPage<T>>;
declare const createRelationsArray: (relations: string | any) => string[];
declare const queryRelationsArray: <T>(query: SelectQueryBuilder<T>, relations: string | any) => void;
interface IEnhancedRepository<T> extends Repository<T> {
    findOneOrCreate: (options: FindOneOptions<T>, create?: DeepPartial<T>) => Promise<T>;
    attach: (id: number, relation: string, entityIds: number[]) => Promise<void>;
    detach: (id: number, relation: string, entityIds: number[]) => Promise<void>;
    sync: (id: number, relation: string, entityIds: number[]) => Promise<void>;
    existsGuard: (where: FindConditions<T> | FindConditions<T>[]) => Promise<void>;
}
declare const getEnhancedRepository: <T>(entityClass: EntityTarget<T>, entityManager?: EntityManager, connectionName?: string) => IEnhancedRepository<T>;
declare const getReplaceChildrenQuery: (table: string, column: string, oldVal: string, newVal: string) => string;
export { paginate, getEnhancedRepository, createRelationsArray, queryRelationsArray, getReplaceChildrenQuery, };
export declare const updateMeta: (entityManager: EntityManager, model: any, object: any, meta?: any[], pattern?: RegExp) => Promise<void>;
