/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { IFilterOption, IFilterSetting, IScopeSearchSortSettings, ISearchOption } from "../../utils/interfaces.js";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class SolutionsFilterPanel extends LitElement {
  /** @internal */
  protected _translations: {
      close: string;
      resetFilters: string;
      filters: string;
      filterSolutionsBy: string;
      industriesHeader: string;
      industries: {
          aec: string;
          airportPortRail: string;
          business: string;
          conservation: string;
          defense: string;
          facilities: string;
          healthAndHumanServices: string;
          pipeline: string;
          publicSafety: string;
          renewables: string;
          stateAndLocalGovernment: string;
          telecommunications: string;
          utilities: string;
      };
      industriesDomain: {
          airport: string;
          agriculture: string;
          assessmentAndTaxation: string;
          districtEnergy: string;
          elections: string;
          electric: string;
          emergencyManagement: string;
          environmentAndNaturalResources: string;
          fireService: string;
          fishAndWildlife: string;
          gas: string;
          healthAndHumanServices: string;
          lawEnforcement: string;
          naturalResources: string;
          parks: string;
          planningAndDevelopment: string;
          protectedAreas: string;
          publicWorks: string;
          sewer: string;
          stormwater: string;
          telecommunications: string;
          transportation: string;
          water: string;
      };
      search: { solutions: string; };
      assistant: { welcomeTip: string; };
  } & T9nMeta<{
      close: string;
      resetFilters: string;
      filters: string;
      filterSolutionsBy: string;
      industriesHeader: string;
      industries: {
          aec: string;
          airportPortRail: string;
          business: string;
          conservation: string;
          defense: string;
          facilities: string;
          healthAndHumanServices: string;
          pipeline: string;
          publicSafety: string;
          renewables: string;
          stateAndLocalGovernment: string;
          telecommunications: string;
          utilities: string;
      };
      industriesDomain: {
          airport: string;
          agriculture: string;
          assessmentAndTaxation: string;
          districtEnergy: string;
          elections: string;
          electric: string;
          emergencyManagement: string;
          environmentAndNaturalResources: string;
          fireService: string;
          fishAndWildlife: string;
          gas: string;
          healthAndHumanServices: string;
          lawEnforcement: string;
          naturalResources: string;
          parks: string;
          planningAndDevelopment: string;
          protectedAreas: string;
          publicWorks: string;
          sewer: string;
          stormwater: string;
          telecommunications: string;
          transportation: string;
          water: string;
      };
      search: { solutions: string; };
      assistant: { welcomeTip: string; };
  }>;
  /**
   * Determines if the Industry section should be shown.
   *
   * @default false
   */
  accessor hideIndustryFilter: boolean;
  /**
   * Flag to display reset in the panel
   *
   * @default false
   */
  accessor showReset: boolean;
  /**
   * Sets the filter on the specific industry or domain that the user chooses in the list.
   *
   * @param industry - The industry.
   * @param domain - The domain with the industry.
   * @param displayValue - The user friendly value that will be displayed.
   * @param emit - (Optional) Flag whether to emit. useful when you don't want to emit multiple times for example in clear filter.
   */
  changeIndustryFilter(industry: string, domain: string, displayValue: string, emit?: boolean): void;
  /** Clears all the filters include search, industry and owner. */
  clearFilters(): void;
  /** The event that gets emitted after any filter option has changed. */
  readonly applyFilter: import("@arcgis/lumina").TargetedEvent<this, IFilterOption[] | IFilterOption | ISearchOption | null>;
  /** Emitted on demand when the close filter button is clicked in mobile */
  readonly toggleFilter: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when navigating between tabs in the app */
  readonly updateUrlParams: import("@arcgis/lumina").TargetedEvent<this, IScopeSearchSortSettings | IFilterSetting | null>;
  readonly "@eventTypes": {
    applyFilter: SolutionsFilterPanel["applyFilter"]["detail"];
    toggleFilter: SolutionsFilterPanel["toggleFilter"]["detail"];
    updateUrlParams: SolutionsFilterPanel["updateUrlParams"]["detail"];
  };
}