import { SimilarCarSearch } from './similar-car-search';
import { SimilarSearchSummary } from './similar-search-summary';
import { SimilarCar } from './similar-car';
import { ExtendedModel } from './extended-model';
import { DictionaryValueMeta } from './dictionary-value-meta';

/**
 * Объект `SimilarSearchSummary` и список `SimilarCar`
 */
export interface PostSimilarCarsResponse {
  /**
   * ## SimilarCarSearch
   * Модель, описывающая набор свойств автомобиля, по которым может быть произведен
   * поиск `SimilarCar` Сущность этой модели может быть отредактирована, например,
   * вручную пользователем, и набор параметров может кардинально отличаться от
   * исходной сущности `Car`, из которой изначально генерируется `SimilarCarSearch`.
   */
  similarCarSearch?: SimilarCarSearch;

  /**
   * ## SimilarSearchSummary
   * Модель, которая хранит в себе сумарную статистику по автомобилям, возвращающимся
   * в поиске.
   */
  similarSearchSummary?: SimilarSearchSummary;

  similarCars?: Array<SimilarCar>;

  extendedModels?: Array<ExtendedModel>;

  dictionaryValueMeta?: {
    stockCar?: {
      [key: string]: Array<DictionaryValueMeta>;
    };

    similarCarSearch?: {
      [key: string]: Array<DictionaryValueMeta>;
    };

    similarCar?: {
      [key: string]: Array<DictionaryValueMeta>;
    };

    extendedModel?: {
      [key: string]: Array<DictionaryValueMeta>;
    };
  };

  removedFields?: Array<string>;

  /**
   * ## Индикация процесса автогенерации `SimilarSearchCar`
   */
  runAutoSearch?: boolean;
}
