type SearchData = {
  "columns-names": string[];
  rows: SearchResult[];
};

type PropertyType = "Bungalow" | "House" | "Flat" | "Maisonette" | "Park Home";

type SearchResult = {
  "low-energy-fixed-light-count": string;
  address: string;
  "uprn-source": string;
  "floor-height": string;
  "heating-cost-potential": string;
  "unheated-corridor-length": string;
  "hot-water-cost-potential": string;
  "construction-age-band": string;
  "potential-energy-rating": string;
  "mainheat-energy-eff": string;
  "windows-env-eff": string;
  "lighting-energy-eff": string;
  "environment-impact-potential": string;
  "glazed-type": string;
  "heating-cost-current": string;
  address3: string;
  "mainheatcont-description": string;
  "sheating-energy-eff": string;
  "property-type": PropertyType;
  "local-authority-label": string;
  "fixed-lighting-outlets-count": string;
  "energy-tariff": string;
  "mechanical-ventilation": string;
  "hot-water-cost-current": string;
  county: string;
  postcode: string;
  "solar-water-heating-flag": string;
  constituency: string;
  "co2-emissions-potential": string;
  "number-heated-rooms": string;
  "floor-description": string;
  "energy-consumption-potential": string;
  "local-authority": string;
  "built-form": string;
  "number-open-fireplaces": string;
  "windows-description": string;
  "glazed-area": string;
  "inspection-date": string;
  "mains-gas-flag": string;
  "co2-emiss-curr-per-floor-area": string;
  address1: string;
  "heat-loss-corridor": string;
  "flat-storey-count": string;
  "constituency-label": string;
  "roof-energy-eff": string;
  "total-floor-area": string;
  "building-reference-number": string;
  "environment-impact-current": string;
  "co2-emissions-current": string;
  "roof-description": string;
  "floor-energy-eff": string;
  "number-habitable-rooms": string;
  address2: string;
  "hot-water-env-eff": string;
  posttown: string;
  "mainheatc-energy-eff": string;
  "main-fuel": string;
  "lighting-env-eff": string;
  "windows-energy-eff": string;
  "floor-env-eff": string;
  "sheating-env-eff": string;
  "lighting-description": string;
  "roof-env-eff": string;
  "walls-energy-eff": string;
  "photo-supply": string;
  "lighting-cost-potential": string;
  "mainheat-env-eff": string;
  "multi-glaze-proportion": string;
  "main-heating-controls": string;
  "lodgement-datetime": string;
  "flat-top-storey": string;
  "current-energy-rating": "A" | "B" | "C" | "D" | "E" | "F" | "G";
  "secondheat-description": string;
  "walls-env-eff": string;
  "transaction-type": string;
  uprn: string;
  "current-energy-efficiency": string;
  "energy-consumption-current": string;
  "mainheat-description": string;
  "lighting-cost-current": string;
  "lodgement-date": string;
  "extension-count": string;
  "mainheatc-env-eff": string;
  "lmk-key": string;
  "wind-turbine-count": string;
  tenure: string;
  "floor-level": string;
  "potential-energy-efficiency": string;
  "hot-water-energy-eff": string;
  "low-energy-lighting": string;
  "walls-description": string;
  "hotwater-description": string;
};

interface EpcDataProps {
  data: SearchData;
}

type EpcRating = SearchResult["current-energy-rating"];
type EpcKey = keyof SearchResult;

export type {
  SearchData,
  SearchResult,
  EpcDataProps,
  EpcRating,
  EpcKey,
  PropertyType,
};
