import { BaseField } from '@dvn/core/doldurma/src/BaseField';
export declare type Match = {
  item: any;
  score: number;
};
export declare type MatchBundle = {
  item: any;
  matches: Match[];
};
export declare enum RuleType {
  comparison = "comparison",
  conditionalComparison = "conditionalComparison"
}
export declare enum FieldType {
  number = "number",
  range = "range",
  singleChoice = "single-choice",
  multipleChoice = "multipleChoice",
  text = "text"
}
export declare enum Comparison {
  eq = "eq",
  ne = "ne",
  lt = "lt",
  lte = "lte",
  gt = "gt",
  gte = "gte",
  in = "in",
  contain = "contain",
  ncontain = "ncontain",
  similar = "similar",
  different = "different"
}
export interface RuleBase {
  firstField?: BaseField;
  firstValue?: any;
  comparison?: Comparison;
  secondField?: BaseField;
  secondValue?: any;
}
export declare class Rule {
  comparisons: RuleBase[];
  type: RuleType;
  static decode(json: any): Rule;
  constructor(comparisons: RuleBase[], type: RuleType);
  isValid(): boolean;
}
export interface PairScore {
  id: string;
  score: number;
  manual: boolean;
}
export interface ScoreMap {
  [key: string]: number;
}
export interface ScoreMapMap {
  [key: string]: ScoreMap;
}
export interface BuildPairsResult {
  averageScore: number;
  totalMatchCount: number;
  totalScore: number;
  pairMapFirstToSecond: PairScore[];
  pairMapSecondToFirst: PairScore[];
  scoreMap: ScoreMapMap;
}
export declare class PairIdHolder {
  firstUserId: string;
  secondUserId: string;
  static generateTuple: (firstUserId: string, secondUserId: string) => string;
  constructor(firstUserId: string, secondUserId: string);
  match: (firstUserId: string, secondUserId: string) => boolean;
  toTuple: () => string;
}
