import { Operator, Where, WhereOperator } from '..';
import { RelationShip, RelationType } from '../dataModel/relation/types';
import { FilterListObject } from '../dataModel/type';
export interface RelationWhereConfig {
    foreignKey: string;
    filter: FilterListObject;
    source: string;
    target: string;
    ship: RelationShip;
    list: boolean;
    type: RelationType;
}
export interface RelationWhere {
    sourceKey: string;
    targetKey: string;
    relation: RelationWhereConfig;
    filters: Where;
}
export declare const iterateWhere: (where: Where, callback: (field: string, op: Operator, value: any) => void) => void;
export declare const iterateRelationsWhere: (where: Record<string, RelationWhere>, callback: (relationWhere: RelationWhere) => Promise<boolean>) => Promise<boolean>;
export declare const iterateWhereFilter: (where: (Record<string, RelationWhere> | Array<Record<string, RelationWhere>>), callback: (relationWhere: (Record<string, RelationWhere> | Array<Record<string, RelationWhere>>), operator: Operator | WhereOperator) => Promise<void>) => Promise<void>;
export declare const iterateWhereRelationsFilter: (relationFilter: Record<string, RelationWhere>, callback: (relationWhere: RelationWhere) => Promise<void>) => Promise<void>;
export declare const iterateBaseFilter: (where: Record<string, any>) => Where;
export declare const getRelationItemKeyId: (item: any, relation: RelationWhereConfig) => {
    itemId: string;
    key: string;
};
export declare const iterateFilters: (where: Where) => Where;
export declare const createFilter: (where: Where) => any;
export declare const filter: (rows: any[], where: Where) => any;
