import { Entity } from '..';
import { ResultOrder } from '../enum/result-order.type';
export declare type ResultOrderType = [string, keyof typeof ResultOrder];
export declare type PrimitiveTypes = string | number | boolean | typeof Date;
export declare type OracleBindType = {
    dir?: number;
    type?: number;
    maxSize?: number;
};
export declare type MapperObject = {
    [key: string]: PrimitiveTypes | OracleBindType;
};
export interface IFindOptions<T> {
    where?: WhereOptions<T>;
    order?: ResultOrderType[];
    limit?: number;
    offset?: number;
    logging?: boolean;
    include?: Array<typeof Entity>;
}
export declare type WhereOptions<T> = {
    [P in keyof T]?: PrimitiveTypes | WhereLogic<T> | WhereOptions<T[P]> | WhereOptions<T>[];
};
export declare type WhereLogic<T> = Partial<{
    $eq: PrimitiveTypes;
    $in: PrimitiveTypes[];
    $or: WhereOptions<T>[];
    $and: WhereOptions<T>[];
}>;
