// Code generated by jtd-codegen for TypeScript v0.2.1

export type Senzingsdk = any;

export interface AdditionalScores {
  FULL_SCORE: number;
  GENERATION_MATCH: number;
  GNR_FN: number;
  GNR_GN: number;
  GNR_ON: number;
  GNR_SN: number;
}

export interface AffectedEntity {
  /**
   * The ENTITY_ID is the Senzing-generated identifier for the discovered
   * entity. It may change when new information is added.
   */
  ENTITY_ID: number;
}

export interface CfgAttr {
  ATTR_CLASS: string;
  ATTR_CODE: string;
  ATTR_ID: number;
  DEFAULT_VALUE: string;
  FELEM_CODE: string;
  FELEM_REQ: string;
  FTYPE_CODE: string;
  INTERNAL: string;
  XXX_ADVANCED: string;
}

export interface CfgCfbom {
  CFCALL_ID: number;
  EXEC_ORDER: number;
  FELEM_ID: number;
  FTYPE_ID: number;
}

export interface CfgCfcall {
  CFCALL_ID: number;
  CFUNC_ID: number;
  FTYPE_ID: number;
  XXX_EXEC_ORDER: number;
}

export interface CfgCfrtn {
  CFRTN_ID: number;
  CFUNC_ID: number;
  CFUNC_RTNVAL: string;
  CLOSE_SCORE: number;
  EXEC_ORDER: number;
  FTYPE_ID: number;
  LIKELY_SCORE: number;
  PLAUSIBLE_SCORE: number;
  SAME_SCORE: number;
  UN_LIKELY_SCORE: number;
}

export interface CfgCfunc {
  ANON_SUPPORT: string;
  CFUNC_CODE: string;
  CFUNC_DESC: string;
  CFUNC_ID: number;
  CONNECT_STR: string;
  XXX_FUNC_LIB: string;
  XXX_FUNC_VER: string;
  XXX_JAVA_CLASS_NAME: string;
  XXX_LANGUAGE: string;
}

export interface CfgDfbom {
  DFCALL_ID: number;
  EXEC_ORDER: number;
  FELEM_ID: number;
  FTYPE_ID: number;
}

export interface CfgDfcall {
  DFCALL_ID: number;
  DFUNC_ID: number;
  FTYPE_ID: number;
  XXX_EXEC_ORDER: number;
}

export interface CfgDfunc {
  ANON_SUPPORT: string;
  CONNECT_STR: string;
  DFUNC_CODE: string;
  DFUNC_DESC: string;
  DFUNC_ID: number;
  XXX_FUNC_LIB: string;
  XXX_FUNC_VER: string;
  XXX_JAVA_CLASS_NAME: string;
  XXX_LANGUAGE: string;
}

export interface CfgDsrc {
  DSRC_CODE: string;
  DSRC_DESC: string;
  DSRC_ID: number;
  RETENTION_LEVEL: string;
  XXX_CONVERSATIONAL: string;
  XXX_DSRC_RELY: number;
}

export interface CfgDsrcInterest {
  XXX_DSRC_ID: number;
  XXX_INTEREST_FLAG: string;
  XXX_MAX_DEGREE: number;
}

export interface CfgEbom {
  XXX_ETYPE_ID: number;
  XXX_EXEC_ORDER: number;
  XXX_FTYPE_ID: number;
  XXX_UTYPE_CODE: string;
}

export interface CfgEclass {
  XXX_ECLASS_CODE: string;
  XXX_ECLASS_DESC: string;
  XXX_ECLASS_ID: number;
  XXX_RESOLVE: string;
}

export interface CfgEfbom {
  EFCALL_ID: number;
  EXEC_ORDER: number;
  FELEM_ID: number;
  FELEM_REQ: string;
  FTYPE_ID: number;
}

export interface CfgEfcall {
  EFCALL_ID: number;
  EFEAT_FTYPE_ID: number;
  EFUNC_ID: number;
  EXEC_ORDER: number;
  FELEM_ID: number;
  FTYPE_ID: number;
  IS_VIRTUAL: string;
}

export interface CfgEfunc {
  CONNECT_STR: string;
  EFUNC_CODE: string;
  EFUNC_DESC: string;
  EFUNC_ID: number;
  XXX_FUNC_LIB: string;
  XXX_FUNC_VER: string;
  XXX_JAVA_CLASS_NAME: string;
  XXX_LANGUAGE: string;
}

export interface CfgErfrag {
  ERFRAG_CODE: string;
  ERFRAG_DEPENDS: string;
  ERFRAG_DESC: string;
  ERFRAG_ID: number;
  ERFRAG_SOURCE: string;
}

export interface CfgErrule {
  DISQ_ERFRAG_CODE: string;

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;
  ERRULE_ID: number;
  ERRULE_TIER: number;
  QUAL_ERFRAG_CODE: string;
  RELATE: string;
  RESOLVE: string;
  RTYPE_ID: number;
  XXX_ERRULE_DESC: string;
  XXX_REF_SCORE: number;
}

export interface CfgEtype {
  XXX_ECLASS_ID: number;
  XXX_ETYPE_CODE: string;
  XXX_ETYPE_DESC: string;
  XXX_ETYPE_ID: number;
}

export interface CfgFbom {
  DERIVED: string;
  DISPLAY_LEVEL: number;
  EXEC_ORDER: number;
  FELEM_ID: number;
  FTYPE_ID: number;
  XXX_DISPLAY_DELIM: string;
}

export interface CfgFbovr {
  FTYPE_EXCL: string;
  FTYPE_FREQ: string;
  FTYPE_ID: number;
  FTYPE_STAB: string;
  UTYPE_CODE: string;
  XXX_ECLASS_ID: number;
}

export interface CfgFclass {
  FCLASS_CODE: string;
  FCLASS_DESC: string;
  FCLASS_ID: number;
}

export interface CfgFelem {
  DATA_TYPE: string;
  FELEM_CODE: string;
  FELEM_DESC: string;
  FELEM_ID: number;
  XXX_TOKENIZE: string;
}

export interface CfgFtype {
  ANONYMIZE: string;
  DERIVED: string;
  FCLASS_ID: number;
  FTYPE_CODE: string;
  FTYPE_DESC: string;
  FTYPE_EXCL: string;
  FTYPE_FREQ: string;
  FTYPE_ID: number;
  FTYPE_STAB: string;
  PERSIST_HISTORY: string;
  RTYPE_ID: number;
  SHOW_IN_MATCH_KEY: string;
  USED_FOR_CAND: string;
  VERSION: number;
  XXX_DERIVATION: string;
}

export interface CfgGenericThreshold {
  BEHAVIOR: string;
  CANDIDATE_CAP: number;
  FTYPE_ID: number;
  GPLAN_ID: number;
  SCORING_CAP: number;
  SEND_TO_REDO: string;
}

export interface CfgGplan {
  GPLAN_CODE: string;
  GPLAN_DESC: string;
  GPLAN_ID: number;
}

export interface CfgLens {
  XXX_LENS_CODE: string;
  XXX_LENS_DESC: string;
  XXX_LENS_ID: number;
}

export type CfgLensrl = Fixme[];

export interface CfgRclass {
  /**
   * Indicates if this is a disclosed relationship.
   */
  IS_DISCLOSED: string;
  RCLASS_CODE: string;
  RCLASS_DESC: string;
  RCLASS_ID: number;
}

export interface CfgRtype {
  BREAK_RES: string;
  RCLASS_ID: number;
  RTYPE_CODE: string;
  RTYPE_DESC: string;
  RTYPE_ID: number;
  XXX_REL_STRENGTH: number;
}

export interface CfgSfcall {
  EXEC_ORDER: number;
  FELEM_ID: number;
  FTYPE_ID: number;
  SFCALL_ID: number;
  SFUNC_ID: number;
}

export interface CfgSfunc {
  CONNECT_STR: string;
  SFUNC_CODE: string;
  SFUNC_DESC: string;
  SFUNC_ID: number;
  XXX_FUNC_LIB: string;
  XXX_FUNC_VER: string;
  XXX_JAVA_CLASS_NAME: string;
  XXX_LANGUAGE: string;
}

export interface ConfigBaseVersion {
  BUILD_DATE: string;
  BUILD_NUMBER: string;
  BUILD_VERSION: string;
  COMPATIBILITY_VERSION: CompatibilityVersion;
  VERSION: string;
  XXX_PRODUCT_NAME: string;
}

export type CandidateKeysForMatchInfo = { [key: string]: MatchInfoForAttribute[] };

export interface CandidateKeysForSearchStatistic {
  FEATURE_TYPES: FeatureType[];
  SUMMARY: CandidateKeysSummary;
}

export interface CandidateKeysSummary {
  FOUND: number;
  GENERIC: number;
  NOT_FOUND: number;
}

export interface CompatibilityVersion {
  CONFIG_VERSION: string;
}

export interface Config {
  /**
   * A user-provided description of the configuration.
   */
  CONFIG_COMMENTS: string;

  /**
   * An internally-generated unique identifier of the configuration.
   */
  CONFIG_ID: number;

  /**
   * The timestamp of the original registration of the configuration.
   */
  SYS_CREATE_DT: string;
}

export interface Confirmation {
  ADDITIONAL_SCORES: AdditionalScores;
  CANDIDATE_FEAT_DESC: string;
  CANDIDATE_FEAT_ID: number;
  CANDIDATE_FEAT_USAGE_TYPE: string;

  /**
   * Internal use.
   */
  FTYPE_CODE: string;
  INBOUND_FEAT_DESC: string;
  INBOUND_FEAT_ID: number;
  INBOUND_FEAT_USAGE_TYPE: string;
  SCORE: number;
  SCORE_BEHAVIOR: string;
  SCORE_BUCKET: string;
  SOURCE: string;
  TOKEN: string;
}

export interface DataSource {
  /**
   * The unique text identifier of the datasource. It should be UPPER_CASE ASCII
   * without spaces. It will be used as a JSON key.
   */
  DSRC_CODE: string;

  /**
   * The unique internal integer identifier of the datasource.
   */
  DSRC_ID: number;
}

export interface DisclosedRelationsForMatchInfo {
  DOMAIN: string;
  ENTITY_ROLES: EntityRoles[];
  RELATED_ROLES: RelatedRoles[];
  REL_LINK: RelLink[];
  XXX_REL_ANCHOR: RelAnchor[];
  XXX_REL_POINTER: RelPointer[];
}

export interface DisclosedRelationsForMatchInfoForWhy {
  DOMAIN: string;
  FEAT_ID: number;
  FEAT_USAGE_TYPE: string;
  LINKED_FEAT_ID: number;
  LINKED_FEAT_TYPE: string;
  REL_ANCHOR: RelAnchor[];
  REL_LINK: RelLink[];
  REL_POINTER: RelPointer[];

  /**
   * Describes the attributes that make up the feature.
   */
  XXX_FEAT_DESC: string;
  XXX_LINKED_FEAT_DESC: string;
}

export interface DisclosedRelationsForWhyKeyDetails {
  DOMAIN: string;
  ENTITY_ROLES: EntityRoles[];
  RELATED_ROLES: RelatedRoles[];
}

export interface Entity {
  RELATED_ENTITIES: RelatedEntity[];
  RESOLVED_ENTITY: ResolvedEntity;
}

export interface EntityForResolvedEntity {
  RELATED_ENTITIES: RelatedEntity[];
  RESOLVED_ENTITY: ResolvedEntity;
}

export interface EntityForWhySearch {
  RELATED_ENTITIES: RelatedEntity[];
  RESOLVED_ENTITY: ResolvedEntity;
}

export interface EntityNetworkLink {
  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;

  /**
   * Indicates if this is an ambiguous relationship.
   */
  IS_AMBIGUOUS: number;

  /**
   * Indicates if this is a disclosed relationship.
   */
  IS_DISCLOSED: number;

  /**
   * Representation of matched source record features.
   */
  MATCH_KEY: string;
  MATCH_KEY_DETAILS: MatchKeyDetails;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;
  MAX_ENTITY_ID: number;
  MIN_ENTITY_ID: number;
}

export interface EntityPath {
  END_ENTITY_ID: number;
  ENTITIES: number[];
  START_ENTITY_ID: number;
}

export interface EntityPathLink {
  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;

  /**
   * Indicates if this is an ambiguous relationship.
   */
  IS_AMBIGUOUS: number;

  /**
   * Indicates if this is a disclosed relationship.
   */
  IS_DISCLOSED: number;

  /**
   * Representation of matched source record features.
   */
  MATCH_KEY: string;
  MATCH_KEY_DETAILS: MatchKeyDetails;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;
  MAX_ENTITY_ID: number;
  MIN_ENTITY_ID: number;
}

export interface EntityRoles {
  FEAT_DESC: string;
  ROLE: string;
}

export interface Feature {
  /**
   * Internal use.
   */
  FELEM_CODE: string;

  /**
   * Internal use.
   */
  FELEM_VALUE: string;
}

export interface FeatureDescriptionValue {
  ATTRIBUTES: { [key: string]: string };
  CANDIDATE_CAP_REACHED: string;
  ENTITY_COUNT: number;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;
  FEAT_DESC_VALUES: FeatureDescriptionValueDetails[];

  /**
   * Internal use.
   */
  LIB_FEAT_ID: number;
  SCORING_CAP_REACHED: string;
  SUPPRESSED: string;
  USED_FOR_CAND: string;
  USED_FOR_SCORING: string;
}

export interface FeatureDescriptionValueDetails {
  CANDIDATE_CAP_REACHED: string;
  ENTITY_COUNT: number;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;
  LIB_FEAT_ID: number;
  SCORING_CAP_REACHED: string;
  SUPPRESSED: string;
  USED_FOR_CAND: string;
  USED_FOR_SCORING: string;
}

export interface FeatureForAttributes {
  ATTRIBUTES: SenzingEntitySpecification;
  CANDIDATE_CAP_REACHED: string;
  ENTITY_COUNT: number;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC_VALUES: FeatureDescriptionValue[];
  LIB_FEAT_ID: number;
  SCORING_CAP_REACHED: string;

  /**
   * Label to identify how some features are being used (can also change some
   * features behavior).
   */
  USAGE_TYPE: string;
  USED_FOR_CAND: string;
  USED_FOR_SCORING: string;
}

export interface FeatureForGetEntity {
  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC_VALUES: FeatureDescriptionValue[];
  LIB_FEAT_ID: number;

  /**
   * Label to identify how some features are being used (can also change some
   * features behavior).
   */
  USAGE_TYPE: string;
  XXX_ATTRIBUTES: SenzingEntitySpecification[];
}

export interface FeatureId {
  LIB_FEAT_ID: number;

  /**
   * Label to identify how some features are being used (can also change some
   * features behavior).
   */
  USAGE_TYPE: string;
}

export interface FeatureScoreForAttribute {
  ADDITIONAL_SCORES: AdditionalScores;
  CANDIDATE_FEAT_DESC: string;
  CANDIDATE_FEAT_ID: number;
  CANDIDATE_FEAT_USAGE_TYPE: string;
  INBOUND_FEAT_DESC: string;
  INBOUND_FEAT_ID: number;
  INBOUND_FEAT_USAGE_TYPE: string;
  SCORE: number;
  SCORE_BEHAVIOR: string;
  SCORE_BUCKET: string;
}

export type FeatureScores = { [key: string]: FeatureScoreForAttribute[] };

export interface FeatureType {
  FOUND: number;
  FTYPE_CODE: string;
  GENERIC: number;
  NOT_FOUND: number;
}

export interface FinalState {
  NEED_REEVALUATION: number;
  VIRTUAL_ENTITIES: VirtualEntitySynopsis[];
}

export interface Fixme {
  FIXME_KEY: string;
}

export interface FocusRecord {
  /**
   * A label identifying the provenance of the record. FIXME: An example of
   * differences.
   */
  DATA_SOURCE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
}

export interface G2configSettings {
  METAPHONE_VERSION: number;
}

export interface G2config {
  CFG_ATTR: CfgAttr[];
  CFG_CFBOM: CfgCfbom[];
  CFG_CFCALL: CfgCfcall[];
  CFG_CFRTN: CfgCfrtn[];
  CFG_CFUNC: CfgCfunc[];
  CFG_DFBOM: CfgDfbom[];
  CFG_DFCALL: CfgDfcall[];
  CFG_DFUNC: CfgDfunc[];
  CFG_DSRC: CfgDsrc[];
  CFG_DSRC_INTEREST: CfgDsrcInterest[];
  CFG_EBOM: CfgEbom[];
  CFG_EFBOM: CfgEfbom[];
  CFG_EFCALL: CfgEfcall[];
  CFG_EFUNC: CfgEfunc[];
  CFG_ERFRAG: CfgErfrag[];
  CFG_ERRULE: CfgErrule[];
  CFG_FBOM: CfgFbom[];
  CFG_FBOVR: CfgFbovr[];
  CFG_FCLASS: CfgFclass[];
  CFG_FELEM: CfgFelem[];
  CFG_FTYPE: CfgFtype[];
  CFG_GENERIC_THRESHOLD: CfgGenericThreshold[];
  CFG_GPLAN: CfgGplan[];
  CFG_RCLASS: CfgRclass[];
  CFG_RTYPE: CfgRtype[];
  CFG_SFCALL: CfgSfcall[];
  CFG_SFUNC: CfgSfunc[];
  CONFIG_BASE_VERSION: ConfigBaseVersion;
  SETTINGS: G2configSettings;
  SYS_OOM: SysOom[];
  XXX_CFG_ECLASS: CfgEclass[];
  XXX_CFG_ETYPE: CfgEtype[];
  XXX_CFG_LENS: CfgLens[];
  XXX_CFG_LENSRL: CfgLensrl[];
}

export interface HowResults {
  FINAL_STATE: FinalState;
  RESOLUTION_STEPS: ResolutionStep[];
}

export interface InterestingEntities {
  ENTITIES: InterestingEntity[];
  NOTICES: Notice[];
}

export interface InterestingEntity {
  DEGREES: number;

  /**
   * The ENTITY_ID is the Senzing-generated identifier for the discovered
   * entity. It may change when new information is added.
   */
  ENTITY_ID: number;
  FLAGS: string[];
  SAMPLE_RECORDS: SampleRecord[];
}

export interface MatchInfo {
  CANDIDATE_KEYS: CandidateKeysForMatchInfo;

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;
  FEATURE_SCORES: FeatureScores;

  /**
   * Representation of matched source record features.
   */
  MATCH_KEY: string;
  MATCH_KEY_DETAILS: MatchKeyDetails;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;
  XXX_DISCLOSED_RELATIONS: DisclosedRelationsForMatchInfo;
  XXX_MATCH_LEVEL: number;
  XXX_WHY_ERRULE_CODE: string;
  XXX_WHY_KEY: string;
}

export interface MatchInfoForAttribute {
  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;
  FEAT_ID: number;
}

export interface MatchInfoForWhy {
  CANDIDATE_KEYS: { [key: string]: MatchInfoForAttribute[] };
  DISCLOSED_RELATIONS: DisclosedRelationsForMatchInfoForWhy;
  FEATURE_SCORES: FeatureScores;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;
  WHY_ERRULE_CODE: string;
  WHY_KEY: string;
  WHY_KEY_DETAILS: WhyKeyDetails;
}

export interface MatchKeyDetails {
  CONFIRMATIONS: Confirmation[];
  DENIALS: Confirmation[];
  DISCLOSED_RELATIONS: DisclosedRelationsForMatchInfo[];
  REL_LINKS: RelLink[];

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  XXX_ERRULE_CODE: string;
}

export interface MemberRecord {
  /**
   * Internal identifier for the record.
   */
  INTERNAL_ID: number;
  RECORDS: Record[];
}

export interface Notice {
  CODE: string;
  DESCRIPTION: string;
}

export type Object = string;

export interface Record {
  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;
  FEATURES: { [key: string]: FeatureForAttributes[] };
  FEATURE_IDS: FeatureId[];
  FIRST_SEEN_DT: string;

  /**
   * Internal identifier for the record.
   */
  INTERNAL_ID: number;
  JSON_DATA: { [key: string]: Object };
  LAST_SEEN_DT: string;

  /**
   * Representation of matched source record features.
   */
  MATCH_KEY: string;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
  UNMAPPED_DATA: { [key: string]: Object };
  XXX_ADDRESS_DATA: string[];
  XXX_ATTRIBUTE_DATA: string[];
  XXX_ENTITY_DATA: string[];
  XXX_ENTITY_DESC: string;
  XXX_ENTITY_KEY: string;
  XXX_ENTITY_TYPE: string;
  XXX_IDENTIFIER_DATA: string[];
  XXX_MATCH_LEVEL: number;
  XXX_NAME_DATA: string[];
  XXX_OTHER_DATA: string[];
  XXX_PHONE_DATA: string[];
  XXX_RELATIONSHIP_DATA: string[];
}

export interface RecordForGetEntity {
  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;
  FEATURES: { [key: string]: FeatureForAttributes[] };
  FEATURE_IDS: FeatureId[];
  FIRST_SEEN_DT: string;

  /**
   * Internal identifier for the record.
   */
  INTERNAL_ID: number;
  JSON_DATA: { [key: string]: Object };
  LAST_SEEN_DT: string;

  /**
   * Representation of matched source record features.
   */
  MATCH_KEY: string;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
  UNMAPPED_DATA: { [key: string]: Object };
  XXX_ADDRESS_DATA: string[];
  XXX_ATTRIBUTE_DATA: string[];
  XXX_ENTITY_DATA: string[];
  XXX_ENTITY_DESC: string;
  XXX_ENTITY_KEY: string;
  XXX_ENTITY_TYPE: string;
  XXX_IDENTIFIER_DATA: string[];
  XXX_MATCH_LEVEL: number;
  XXX_NAME_DATA: string[];
  XXX_OTHER_DATA: string[];
  XXX_PHONE_DATA: string[];
  XXX_RELATIONSHIP_DATA: string[];
}

export interface RecordKey {
  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
}

export interface RecordKeys {
  /**
   * A list of (data source code, record id) pairs.
   */
  RECORDS: RecordKey[];
}

export interface RecordSummary {
  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * The number of records for the entity with the same data source code.
   */
  RECORD_COUNT: number;
  XXX_FIRST_SEEN_DT: string;
  XXX_LAST_SEEN_DT: string;
}

export interface RelAnchor {
  DOMAIN: string;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;
  FEAT_ID: number;
  LINKED_FEAT_DESC: string;
  LINKED_FEAT_ID: number;
  LINKED_FEAT_TYPE: string;
  LINKED_FEAT_USAGE_TYPE: string;
  XXX_REL_POINTER: RelPointer[];
}

export interface RelLink {
  DOMAIN: string;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;
  FEAT_ID: number;
  FEAT_USAGE_TYPE: string;
  FTYPE_CODE: string;
  LINKED_FEAT_DESC: string;
  LINKED_FEAT_ID: number;
  LINKED_FEAT_TYPE: string;
  LINKED_FEAT_USAGE_TYPE: string;
  REL_TYPE: string;
}

export interface RelPointer {
  DOMAIN: string;

  /**
   * Describes the attributes that make up the feature.
   */
  FEAT_DESC: string;
  FEAT_ID: number;
  FEAT_USAGE_TYPE: string;
  LINKED_FEAT_DESC: string;
  LINKED_FEAT_ID: number;
  LINKED_FEAT_TYPE: string;
}

export interface RelatedEntity {
  /**
   * The ENTITY_ID is the Senzing-generated identifier for the discovered
   * entity. It may change when new information is added.
   */
  ENTITY_ID: number;

  /**
   * A name this entity goes by. An entity could have multiple names.
   */
  ENTITY_NAME: string;

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  ERRULE_CODE: string;

  /**
   * Indicates if this is an ambiguous relationship.
   */
  IS_AMBIGUOUS: number;

  /**
   * Indicates if this is a disclosed relationship.
   */
  IS_DISCLOSED: number;

  /**
   * Representation of matched source record features.
   */
  MATCH_KEY: string;
  MATCH_KEY_DETAILS: MatchKeyDetails;
  MATCH_LEVEL: number;

  /**
   * The type of match that occurred for the record.
   */
  MATCH_LEVEL_CODE: string;
  RECORDS: Record[];

  /**
   * Overview of the source systems the records came from comprising this
   * related entity.
   */
  RECORD_SUMMARY: RecordSummary[];
  RECORD_TYPES: string[];
  XXX_LAST_SEEN_DT: string;
}

export interface RelatedRoles {
  FEAT_DESC: string;
  ROLE: string;
}

export interface Repository {
  /**
   * Label for database repository.
   */
  id: string;

  /**
   * Database connection information.
   */
  location: string;

  /**
   * Type of database.
   */
  type: string;
}

export interface ResolutionStep {
  INBOUND_VIRTUAL_ENTITY_ID: string;
  MATCH_INFO: MatchInfo;
  RESULT_VIRTUAL_ENTITY_ID: string;
  STEP: number;
  VIRTUAL_ENTITY_1: VirtualEntitySynopsis;
  VIRTUAL_ENTITY_2: VirtualEntitySynopsis;
}

export interface ResolvedEntity {
  /**
   * The ENTITY_ID is the Senzing-generated identifier for the discovered
   * entity. It may change when new information is added.
   */
  ENTITY_ID: number;

  /**
   * A name this entity goes by. An entity could have multiple names.
   */
  ENTITY_NAME: string;
  FEATURES: { [key: string]: FeatureForAttributes[] };
  RECORDS: Record[];

  /**
   * Overview of the source systems the records came from comprising this
   * related entity.
   */
  RECORD_SUMMARY: RecordSummary[];
  RECORD_TYPES: string[];

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  XXX_ERRULE_CODE: string;
  XXX_FEATURE_IDS: FeatureId[];

  /**
   * Indicates if this is an ambiguous relationship.
   */
  XXX_IS_AMBIGUOUS: number;

  /**
   * Indicates if this is a disclosed relationship.
   */
  XXX_IS_DISCLOSED: number;
  XXX_LAST_SEEN_DT: string;

  /**
   * Representation of matched source record features.
   */
  XXX_MATCH_KEY: string;
  XXX_MATCH_LEVEL: number;

  /**
   * The type of match that occurred for the record.
   */
  XXX_MATCH_LEVEL_CODE: string;
}

export interface ResolvedEntityAndMatchInfo {
  ENTITY: EntityForResolvedEntity;
  FEATURES_MJD: EntityForResolvedEntity;
  MATCH_INFO: MatchInfo;
}

export interface ResolvedEntityForGetEntity {
  /**
   * The ENTITY_ID is the Senzing-generated identifier for the discovered
   * entity. It may change when new information is added.
   */
  ENTITY_ID: number;

  /**
   * A name this entity goes by. An entity could have multiple names.
   */
  ENTITY_NAME: string;
  FEATURES: { [key: string]: FeatureForGetEntity[] };
  RECORDS: RecordForGetEntity[];

  /**
   * Overview of the source systems the records came from comprising this
   * related entity.
   */
  RECORD_SUMMARY: RecordSummary[];
  RECORD_TYPES: string[];

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  XXX_ERRULE_CODE: string;
  XXX_FEATURE_IDS: FeatureId[];

  /**
   * Indicates if this is an ambiguous relationship.
   */
  XXX_IS_AMBIGUOUS: number;

  /**
   * Indicates if this is a disclosed relationship.
   */
  XXX_IS_DISCLOSED: number;
  XXX_LAST_SEEN_DT: string;

  /**
   * Representation of matched source record features.
   */
  XXX_MATCH_KEY: string;
  XXX_MATCH_LEVEL: number;

  /**
   * The type of match that occurred for the record.
   */
  XXX_MATCH_LEVEL_CODE: string;
}

export interface SysOom {
  FTYPE_ID: number;
  NEXT_THRESH: number;
  OOM_LEVEL: string;
  OOM_TYPE: string;
  THRESH1_CNT: number;
  THRESH1_OOM: number;
  XXX_FELEM_ID: number;
  XXX_LENS_ID: number;
  XXX_LIB_FEAT_ID: number;
  XXX_LIB_FELEM_ID: number;
}

export interface SampleRecord {
  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;
  FLAGS: string[];

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
}

export interface SchemaVersion {
  ENGINE_SCHEMA_VERSION: string;
  MAXIMUM_REQUIRED_SCHEMA_VERSION: string;
  MINIMUM_REQUIRED_SCHEMA_VERSION: string;
}

export interface SearchEntity {
  FEATURES: { [key: string]: FeatureDescriptionValue[] };
  SUMMARY: SearchEntitySummary;
}

export interface SearchEntitySummary {
  FEATURES_ADDED: number;
  FEATURES_IGNORED: number;
  FEATURES_SEARCHED: number;
  FEATURES_SUBMITTED: number;
}

export interface SearchRequest {
  FEATURES: { [key: string]: FeatureDescriptionValue[] };
  JSON_DATA: string;
  SEARCH_PROFILE: string;
}

export interface SearchStatistic {
  CANDIDATE_KEYS: CandidateKeysForSearchStatistic;
}

export interface SenzingEntitySpecification {
  /**
   * Domain/system for the account number. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ACCOUNT_DOMAIN: string;

  /**
   * Account number (e.g., bank, card). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ACCOUNT_NUMBER: string;

  /**
   * City/locality. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  ADDR_CITY: string;

  /**
   * Country code. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  ADDR_COUNTRY: string;

  /**
   * Single-field address when parsed components are unavailable.
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  ADDR_FULL: string;

  /**
   * First address line (street, number). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_LINE1: string;

  /**
   * Second address line (apt/suite). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_LINE2: string;

  /**
   * Third address line (optional). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_LINE3: string;

  /**
   * Fourth address line (optional). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_LINE4: string;

  /**
   * Fifth address line (optional). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_LINE5: string;

  /**
   * Sixth address line (optional). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_LINE6: string;

  /**
   * Postal/ZIP code. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  ADDR_POSTAL_CODE: string;

  /**
   * State/province/region code. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_STATE: string;

  /**
   * Optional; include when provided by the source. Common values: HOME, MAILING
   * (persons); BUSINESS (organizations). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  ADDR_TYPE: string;

  /**
   * Country of citizenship (code or label) as provided by the
   * source. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  CITIZENSHIP: string;

  /**
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  DATE_OF_BIRTH: string;

  /**
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  DATE_OF_DEATH: string;

  /**
   * Driver's license number. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  DRIVERS_LICENSE_NUMBER: string;

  /**
   * Issuing state/province/country. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  DRIVERS_LICENSE_STATE: string;

  /**
   * Dun and Bradstreet company identifier. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  DUNS_NUMBER: string;

  /**
   * Email address. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  EMAIL_ADDRESS: string;

  /**
   * This is the name of the organization the person is employed
   * by. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  EMPLOYER: string;
  EMPLOYER_NAME: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  FACEBOOK: string;

  /**
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  GENDER: string;

  /**
   * The identifier the entity is associated with. An attribute in the Senzing
   * Entity Specification. See https://www.senzing.com/docs/entity_specification
   */
  GROUP_ASSN_ID_NUMBER: string;

  /**
   * The type of group identifier an entity is associated with.
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  GROUP_ASSN_ID_TYPE: string;

  /**
   * Name of the associated organization; use the official or standardized
   * name. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  GROUP_ASSOCIATION_ORG_NAME: string;

  /**
   * Specific group/role within the organization; use precise
   * categories (e.g., OWNER_EXEC, BOARD_MEMBER) to improve
   * resolution. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  GROUP_ASSOCIATION_TYPE: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  INSTAGRAM: string;

  /**
   * Legal Entity Identifier. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  LEI_NUMBER: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  LINKEDIN: string;

  /**
   * Person given name. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NAME_FIRST: string;

  /**
   * Single-field name when type (person vs org) is unknown or only a full
   * name is provided. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NAME_FULL: string;

  /**
   * Person surname. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NAME_LAST: string;

  /**
   * Person middle name/initial. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  NAME_MIDDLE: string;

  /**
   * Organization name. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NAME_ORG: string;

  /**
   * Person title. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NAME_PREFIX: string;

  /**
   * Person suffix. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NAME_SUFFIX: string;

  /**
   * Optional include when the source provides it. Common values: PRIMARY,
   * AKA (persons), DBA (organizations). An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  NAME_TYPE: string;

  /**
   * Country of nationality (code or label) as provided by the
   * source. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NATIONALITY: string;

  /**
   * Issuing country. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NATIONAL_ID_COUNTRY: string;

  /**
   * National identifier value. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  NATIONAL_ID_NUMBER: string;

  /**
   * Use the type label from the source; standardize across
   * sources. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  NATIONAL_ID_TYPE: string;
  NATIVE_NAME_FULL: string;

  /**
   * US healthcare provider identifier. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  NPI_NUMBER: string;

  /**
   * Optional as country often not known or issued by an organization.
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  OTHER_ID_COUNTRY: string;

  /**
   * Identification number. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  OTHER_ID_NUMBER: string;

  /**
   * Standardized source type. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  OTHER_ID_TYPE: string;

  /**
   * Issuing country. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  PASSPORT_COUNTRY: string;

  /**
   * Passport number. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  PASSPORT_NUMBER: string;

  /**
   * Telephone number. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  PHONE_NUMBER: string;

  /**
   * Optional; include when provided by the source. Common values: MOBILE, HOME,
   * WORK, FAX. MOBILE carries extra weight. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  PHONE_TYPE: string;

  /**
   * Place of birth; may be a city/region or a country code/label as provided
   * by the source. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  PLACE_OF_BIRTH: string;
  PRIMARY_NAME_FIRST: string;
  PRIMARY_NAME_FULL: string;
  PRIMARY_NAME_LAST: string;
  PRIMARY_NAME_MIDDLE: string;
  PRIMARY_NAME_ORG: string;

  /**
   * Include when known to prevent cross-type resolution; omit if unknown.
   * Use standardized kinds (PERSON, ORGANIZATION). Often used to determine
   * icon/shape in graphs. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  RECORD_TYPE: string;

  /**
   * Country of registration (code or label) as provided by the
   * source. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  REGISTRATION_COUNTRY: string;

  /**
   * Organization registration/incorporation date. An attribute in the Senzing
   * Entity Specification. See https://www.senzing.com/docs/entity_specification
   */
  REGISTRATION_DATE: string;
  RELATIONSHIP_KEY: string;
  RELATIONSHIP_TYPE: string;

  /**
   * This code helps keep the REL_ANCHOR_KEY unique. This is a code (without
   * dashes) for the data source or source field that is contributing the
   * relationship. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  REL_ANCHOR_DOMAIN: string;

  /**
   * This key should be a unique value for the record within the
   * REL_ANCHOR_DOMAIN. You can just use the current record's RECORD_ID
   * here. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  REL_ANCHOR_KEY: string;

  /**
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  REL_POINTER_DOMAIN: string;

  /**
   * An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  REL_POINTER_KEY: string;

  /**
   * This is the role the pointer record has to the anchor record. Such
   * as SPOUSE_OF, SON_OF, FATHER_OF, EMPLOYED_BY, PRINCIPAL_OF, OWNER_OF,
   * BRANCH_OF, DIRECT_PARENT, ULTIMATE_PARENT. Standardize these role codes for
   * display and filtering. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  REL_POINTER_ROLE: string;
  SECONDARY_NAME_ORG: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  SIGNAL: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  SKYPE: string;

  /**
   * US Social Security Number; partial accepted. An attribute in the Senzing
   * Entity Specification. See https://www.senzing.com/docs/entity_specification
   */
  SSN_NUMBER: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  TANGO: string;

  /**
   * Issuing country. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  TAX_ID_COUNTRY: string;

  /**
   * Tax identification number. An attribute in the Senzing Entity
   * Specification. See https://www.senzing.com/docs/entity_specification
   */
  TAX_ID_NUMBER: string;

  /**
   * Use the type label from the source; standardize across
   * sources. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  TAX_ID_TYPE: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  TELEGRAM: string;

  /**
   * The identifier value shared by records that must resolve
   * together. An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  TRUSTED_ID_NUMBER: string;

  /**
   * Short code for the identifier domain/system (e.g., STEWARD,
   * MASTER_ID). An attribute in the Senzing Entity Specification. See
   * https://www.senzing.com/docs/entity_specification
   */
  TRUSTED_ID_TYPE: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  TWITTER: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  VIBER: string;

  /**
   * Website or domain; typically for organizations. An attribute in the Senzing
   * Entity Specification. See https://www.senzing.com/docs/entity_specification
   */
  WEBSITE_ADDRESS: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  WECHAT: string;

  /**
   * Social medial user name. An attribute in the Senzing Entity Specification.
   * See https://www.senzing.com/docs/entity_specification
   */
  WHATSAPP: string;
  XXX_ADDR_FROM_DATE: string;
  XXX_ADDR_THRU_DATE: string;
  XXX_PHONE_FROM_DATE: string;
  XXX_PHONE_THRU_DATE: string;
  ZOOMROOM: string;
}

export interface SzConfigExportResponse {
  G2_CONFIG: G2config;
}

export interface SzConfigGetDataSourceRegistryResponse {
  /**
   * The list of registered data sources.
   */
  DATA_SOURCES: DataSource[];
}

export interface SzConfigManagerGetConfigRegistryResponse {
  /**
   * The list of registered configurations.
   */
  CONFIGS: Config[];
}

export interface SzConfigRegisterDataSourceResponse {
  /**
   * The unique internal integer identifier of the datasource.
   */
  DSRC_ID: number;
}

export interface SzDiagnosticCheckRepositoryPerformanceResponse {
  /**
   * The duration of the test in milliseconds.
   */
  insertTime: number;

  /**
   * The total number of records inserted within the insertTime.
   */
  numRecordsInserted: number;
}

export interface SzDiagnosticGetFeatureResponse {
  /**
   * Internal use.
   */
  ELEMENTS: Feature[];

  /**
   * Internal use.
   */
  FTYPE_CODE: string;

  /**
   * Internal use.
   */
  LIB_FEAT_ID: number;
}

export interface SzDiagnosticGetRepositoryInfoResponse {
  /**
   * A list of database node connection metadata.
   */
  dataStores: Repository[];
}

export interface SzEngineAddRecordResponse {
  AFFECTED_ENTITIES: AffectedEntity[];

  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;
  INTERESTING_ENTITIES: InterestingEntities;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
}

export interface SzEngineDeleteRecordResponse {
  AFFECTED_ENTITIES: AffectedEntity[];

  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
  XXX_INTERESTING_ENTITIES: InterestingEntities;
}

export interface SzEngineExportCsvEntityReportCsvColumnList {
  XXX_FIXME: Fixme;
}

export interface SzEngineFetchNextResponse {
  XXX_FIXME: Fixme;
}

export interface SzEngineFindInterestingEntitiesByEntityIdResponse {
  INTERESTING_ENTITIES: InterestingEntities;
}

export interface SzEngineFindInterestingEntitiesByRecordIdResponse {
  INTERESTING_ENTITIES: InterestingEntities;
}

export interface SzEngineFindNetworkByEntityIdEntityIds {
  XXX_FIXME: Fixme;
}

export interface SzEngineFindNetworkByEntityIdResponse {
  ENTITIES: Entity[];
  ENTITY_NETWORK_LINKS: EntityNetworkLink[];
  ENTITY_PATHS: EntityPath[];
  ENTITY_PATH_LINKS: EntityPathLink[];
  MAX_ENTITY_LIMIT_REACHED: string;
  WHY_RESULTS: WhyResult[];
}

export interface SzEngineFindNetworkByRecordIdRecordKeys {
  /**
   * A list of (data source code, record id) pairs.
   */
  RECORDS: RecordKey[];
}

export interface SzEngineFindNetworkByRecordIdResponse {
  ENTITIES: Entity[];
  ENTITY_NETWORK_LINKS: EntityNetworkLink[];
  ENTITY_PATHS: EntityPath[];
  ENTITY_PATH_LINKS: EntityPathLink[];
  MAX_ENTITY_LIMIT_REACHED: string;
  WHY_RESULTS: WhyResult[];
}

export interface SzEngineFindPathByEntityIdAvoidEntityIds {
  XXX_FIXME: Fixme;
}

export interface SzEngineFindPathByEntityIdRequiredDataSources {
  XXX_FIXME: Fixme;
}

export interface SzEngineFindPathByEntityIdResponse {
  ENTITIES: Entity[];
  ENTITY_PATHS: EntityPath[];
  ENTITY_PATH_LINKS: EntityPathLink[];
}

export interface SzEngineFindPathByRecordIdAvoidRecordKeys {
  /**
   * A list of (data source code, record id) pairs.
   */
  RECORDS: RecordKey[];
}

export interface SzEngineFindPathByRecordIdRequiredDataSources {
  XXX_FIXME: Fixme;
}

export interface SzEngineFindPathByRecordIdResponse {
  ENTITIES: Entity[];
  ENTITY_PATHS: EntityPath[];
  ENTITY_PATH_LINKS: EntityPathLink[];
}

export interface SzEngineGetEntityByEntityIdResponse {
  RELATED_ENTITIES: RelatedEntity[];
  RESOLVED_ENTITY: ResolvedEntityForGetEntity;
}

export interface SzEngineGetEntityByRecordIdResponse {
  RELATED_ENTITIES: RelatedEntity[];
  RESOLVED_ENTITY: ResolvedEntityForGetEntity;
}

export interface SzEngineGetRecordPreviewResponse {
  FEATURES: { [key: string]: FeatureForAttributes[] };
  FEATURE_IDS: FeatureId[];
  JSON_DATA: { [key: string]: Object };
  UNMAPPED_DATA: { [key: string]: Object };
}

export interface SzEngineGetRecordResponse {
  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;
  FEATURES: { [key: string]: FeatureForAttributes[] };
  FEATURE_IDS: FeatureId[];
  FIRST_SEEN_DT: string;
  JSON_DATA: { [key: string]: Object };
  LAST_SEEN_DT: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
  UNMAPPED_DATA: { [key: string]: Object };
  XXX_ADDRESS_DATA: string[];
  XXX_ATTRIBUTE_DATA: string[];
  XXX_ENTITY_DATA: string[];
  XXX_ENTITY_DESC: string;
  XXX_ENTITY_KEY: string;
  XXX_ENTITY_TYPE: string;

  /**
   * Identifier of the entity resolution rule that was triggered.
   */
  XXX_ERRULE_CODE: string;
  XXX_IDENTIFIER_DATA: string[];

  /**
   * Internal identifier for the record.
   */
  XXX_INTERNAL_ID: number;

  /**
   * Representation of matched source record features.
   */
  XXX_MATCH_KEY: string;
  XXX_MATCH_LEVEL: number;

  /**
   * The type of match that occurred for the record.
   */
  XXX_MATCH_LEVEL_CODE: string;
  XXX_NAME_DATA: string[];
  XXX_OTHER_DATA: string[];
  XXX_PHONE_DATA: string[];
  XXX_RELATIONSHIP_DATA: string[];
}

export interface SzEngineGetRedoRecordResponse {
  UMF_PROC: UmfProc;
}

export interface SzEngineGetStatsResponse {
  workload: Workload;
}

export interface SzEngineGetVirtualEntityByRecordIdRecordKeys {
  /**
   * A list of (data source code, record id) pairs.
   */
  RECORDS: RecordKey[];
}

export interface SzEngineGetVirtualEntityByRecordIdResponse {
  RESOLVED_ENTITY: ResolvedEntity;
}

export interface SzEngineHowEntityByEntityIdResponse {
  HOW_RESULTS: HowResults;
}

export interface SzEngineProcessRedoRecordResponse {
  AFFECTED_ENTITIES: AffectedEntity[];

  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
  UMF_PROC: UmfProc;
  XXX_INTERESTING_ENTITIES: InterestingEntities;
}

export interface SzEngineReevaluateEntityResponse {
  AFFECTED_ENTITIES: AffectedEntity[];
  INTERESTING_ENTITIES: InterestingEntities;

  /**
   * A label identifying the provenance of the record.
   */
  XXX_DATA_SOURCE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  XXX_RECORD_ID: string;
}

export interface SzEngineReevaluateRecordResponse {
  AFFECTED_ENTITIES: AffectedEntity[];

  /**
   * A label identifying the provenance of the record.
   */
  DATA_SOURCE: string;

  /**
   * The unique identifier within the set of records in the DATA_SOURCE.
   */
  RECORD_ID: string;
  XXX_INTERESTING_ENTITIES: InterestingEntities;
}

export interface SzEngineSearchByAttributesAttributes {
  XXX_FIXME: Fixme;
}

export interface SzEngineSearchByAttributesResponse {
  RELATED_ENTITIES_MJD: RelatedEntity[];
  RESOLVED_ENTITIES: ResolvedEntityAndMatchInfo[];
  SEARCH_ENTITY: SearchEntity;
  SEARCH_REQUEST: SearchRequest;
  SEARCH_STATISTICS: SearchStatistic[];
}

export interface SzEngineSearchByAttributesSearchProfile {
  XXX_FIXME: Fixme;
}

export interface SzEngineStreamExportJsonEntityReportResponse {
  XXX_FIXME: Fixme;
}

export interface SzEngineWhyEntitiesResponse {
  ENTITIES: Entity[];
  WHY_RESULTS: WhyResult[];
}

export interface SzEngineWhyRecordInEntityResponse {
  ENTITIES: Entity[];
  WHY_RESULTS: WhyResult[];
}

export interface SzEngineWhyRecordsResponse {
  ENTITIES: Entity[];
  WHY_RESULTS: WhyResult[];
}

export interface SzEngineWhySearchAttributes {
  XXX_FIXME: Fixme;
}

export interface SzEngineWhySearchResponse {
  ENTITIES: EntityForWhySearch[];
  SEARCH_ENTITY: SearchEntity;
  SEARCH_REQUEST: SearchRequest;
  SEARCH_STATISTICS: SearchStatistic[];
  WHY_RESULTS: WhyResult[];
}

export interface SzEngineWhySearchSearchProfile {
  XXX_FIXME: Fixme;
}

export interface SzProductGetLicenseResponse {
  advSearch: number;
  billing: string;
  contract: string;
  customer: string;
  expireDate: string;
  issueDate: string;
  licenseLevel: string;
  licenseType: string;
  recordLimit: number;
}

export interface SzProductGetVersionResponse {
  BUILD_DATE: string;
  BUILD_NUMBER: string;
  BUILD_VERSION: string;
  COMPATIBILITY_VERSION: CompatibilityVersion;
  PRODUCT_NAME: string;
  SCHEMA_VERSION: SchemaVersion;
  VERSION: string;
}

export interface UmfProc {
  NAME: string;
  PARAMS: UmfProcParams[];
}

export interface UmfProcParamDetails {
  NAME: string;
  VALUE: Object;
}

export interface UmfProcParams {
  PARAM: UmfProcParamDetails;
}

export interface VirtualEntitySynopsis {
  MEMBER_RECORDS: MemberRecord[];
  VIRTUAL_ENTITY_ID: string;
}

export interface WhyKeyDetails {
  CONFIRMATIONS: Confirmation[];
  DENIALS: Confirmation[];
  DISCLOSED_RELATIONS: DisclosedRelationsForWhyKeyDetails[];
}

export interface WhyResult {
  /**
   * The ENTITY_ID is the Senzing-generated identifier for the discovered
   * entity. It may change when new information is added.
   */
  ENTITY_ID: number;
  ENTITY_ID_2: number;
  FOCUS_RECORDS: FocusRecord[];
  FOCUS_RECORDS_2: FocusRecord[];

  /**
   * Internal identifier for the record.
   */
  INTERNAL_ID: number;

  /**
   * Internal identifier for the record.
   */
  INTERNAL_ID_2: number;
  MATCH_INFO: MatchInfoForWhy;
}

export interface Workload {
  apiVersion: string;
  caches: WorkloadCaches;
  candidates: WorkloadCandidates;
  contention: WorkloadContention;
  datetimestamp: string;
  expressedFeatures: WorkloadExpressedFeatures;
  genericDetect: Fixme;
  license: WorkloadLicense;
  loadedRecords: number;
  lockWaits: WorkloadLockWaits;
  processing: WorkloadProcessing;
  redoTriggers: { [key: string]: number };
  repairDiagnosis: WorkloadRepairDiagnosis;
  reresolve: WorkloadReresolve;
  scoring: WorkloadScoring;
  systemResources: WorkloadSystemResources;
  threadState: WorkloadThreadState;
  unresolve: WorkloadUnresolve;
}

export interface WorkloadCaches {
  libFeatCacheHit: number;
  libFeatCacheMiss: number;
  libFeatInsert: number;
  resFeatStatCacheHit: number;
  resFeatStatCacheMiss: number;
  resFeatStatInsert: number;
  resFeatStatUpdateAttempt: number;
  resFeatStatUpdateFail: number;
}

export interface WorkloadCandidates {
  candidateBuilders: { [key: string]: number };
  suppressedCandidateBuilders: { [key: string]: number };
}

export interface WorkloadContention {
  feature: Fixme;
  resEnt: Fixme;
  valuelatch: Fixme;
}

export interface WorkloadCurrResources {
  activeThreads: number;
  availableMemory: string;
  processMemory: string;
  workerThreads: number;
}

export interface WorkloadExpressedFeatures {
  calls: WorkloadExpressedFeaturesCall[];
  created: { [key: string]: number };
}

export interface WorkloadExpressedFeaturesCall {
  EFCALL_ID: number;
  EFUNC_CODE: string;
  numCalls: number;
}

export interface WorkloadInitResources {
  XXX_physicalCores: number;
  availableMemory: string;
  logicalCores: number;
  totalMemory: string;
}

export interface WorkloadLicense {
  dsrLimit: string;
  status: string;
  type: string;
}

export interface WorkloadLockWaits {
  refreshLocks: WorkloadRefreshLocks;
}

export interface WorkloadProcessing {
  addedRecords: number;
  ambiguous: WorkloadProcessingAmbiguous;
  batchAddedRecords: number;
  deletedRecords: number;
  details: WorkloadProcessingDetails;
  reevaluations: number;
  repairedEntities: number;
}

export interface WorkloadProcessingAmbiguous {
  actualTest: number;
  cachedTest: number;
}

export interface WorkloadProcessingDetails {
  addedRecords: number;
  candidates: number;
  changeDeletes: number;
  duration: number;
  filteredObsFeat: number;
  newObsEnt: number;
  obsEntHashDiff: number;
  obsEntHashSame: number;
  optimizedOut: number;
  optimizedOutSkipped: number;
  partiallyResolved: number;
  retries: number;
}

export interface WorkloadRefreshLocks {
  count: number;
  maxMS: number;
  totalMS: number;
}

export interface WorkloadRepairDiagnosis {
  types: number;
}

export interface WorkloadReresolve {
  newFeatureFTypes: { [key: string]: number };
  suppressedCandidateBuildersForReresolve: Fixme;
  suppressedScoredFeatureTypeForReresolve: Fixme;
  triggers: WorkloadReresolveTriggers;
}

export interface WorkloadReresolveTriggers {
  abortRetry: number;
  multipleResolvableCandidates: number;
  resolveNewFeatures: number;
  skipped: number;
  unresolveMovement: number;
}

export interface WorkloadScoring {
  cacheHit: { [key: string]: number };
  cacheMiss: { [key: string]: number };
  scoredPairs: { [key: string]: number };
  suppressedDisclosedRelationshipDomainCount: number;
  suppressedScoredFeatureType: Fixme;
}

export interface WorkloadSystemLoad {
  cpuIdle: string;
  cpuSystem: string;
  cpuUser: string;
  cpuWait: string;
}

export interface WorkloadSystemResources {
  currResources: WorkloadCurrResources;
  initResources: WorkloadInitResources;
  systemLoad: WorkloadSystemLoad;
}

export interface WorkloadThreadState {
  active: number;
  dataLatchContention: number;
  governorContention: number;
  idle: number;
  loader: number;
  obsEntContention: number;
  resEntContention: number;
  resolver: number;
  scoring: number;
  sqlExecuting: number;
}

export interface WorkloadUnresolve {
  abortedUnresolve: number;
  triggers: WorkloadUnresolveTriggers;
  unresolveTest: number;
}

export interface WorkloadUnresolveTriggers {
  ambiguousMultiResolve: number;
  ambiguousNoResolve: number;
  extensiveResolve: number;
  normalResolve: number;
  relLink: number;
  update: number;
}
