/// <reference types="@arcgis/core/interfaces.d.ts" />
/// <reference path="../../index.d.ts" />
import { PublicLitElement as LitElement, TargetedEvent, JsxNode } from '@arcgis/lumina';
import { SupportedLayer } from './utils/basic';

/**
 * Displays a list of unique values taking into account field type formatting and field domains.
 *
 * [Read more...](https://developers.arcgis.com/javascript/latest/references/common-components/arcgis-unique-values-list/)
 */
export declare class ArcgisUniqueValuesList extends LitElement {
    /** MapView instance, required if uniqueValues is not provided */
    view?: __esri.MapView | __esri.SceneView;
    /** Layer instance, required if uniqueValues is not provided, if component needs to format values, or needs to check for field domains. */
    layer?: SupportedLayer;
    /** Field name, required if uniqueValues is not provided, if component needs to format values, or needs to check for field domains. */
    fieldName?: string;
    /**
     * List of all unique values. If not provided component will get the unique values from the layer.
     * An empty list would mean that there are no unique values for this field on the layer. The component renders nothing then.
     */
    uniqueValues?: __esri.UniqueValuesResultUniqueValueInfos[];
    /**
     * Optional format options if values are numbers.
     *
     * e.g.
     *      {
     *        style: "decimal",
     *        useGrouping: true,
     *        minimumFractionDigits: 0,
     *        maximumFractionDigits: 2
     *      }
     *
     *      {
     *        style: "percent",
     *        useGrouping: true
     *      }
     *
     *      {
     *        style: "currency",
     *        currency: "EUR",
     *        currencyDisplay: "symbol"
     *      }
     */
    numberFormatOptions?: Intl.NumberFormatOptions;
    /** Lists of selected values */
    selectedValues?: (number | string)[];
    /** Sort by default setting */
    sortBy?: "count" | "name" | "selected";
    /**
     * Multiple selections allowed?
     *
     * @default false
     */
    multiple?: boolean | undefined;
    /**
     * Too many values? If true then it displays a message below the list. Only required if uniqueValues is provided.
     *
     * @default false
     */
    partialUniqueValues?: boolean | undefined;
    /**
     * If true, displays the filter option based on the number of fields.
     *
     * @default 10
     */
    showFilterLength: number;
    /** Optional, max height of list in pixel. */
    maxHeight?: number;
    /** Sets focus on component */
    setFocus(): Promise<void>;
    /**
     * Get all unique values.
     * E.g. to be used to limit how often these unique values need to be requested from the layer.
     */
    getUniqueValues(): Promise<{
        uniqueValues: __esri.UniqueValuesResultUniqueValueInfos[];
        partialUniqueValues: boolean;
    } | undefined>;
    /** Emitted if selection has changed */
    readonly arcgisChange: TargetedEvent<this, (string | number)[]>;
    /** Emitted if the sort order has changed */
    readonly arcgisSortByChange: TargetedEvent<this, string | undefined>;
    /** Emitted once the component is loaded. Useful when no uniqueValues were passed in. */
    readonly arcgisLoad: TargetedEvent<this, void>;
    "@eventTypes": {
        "arcgisChange": ArcgisUniqueValuesList["arcgisChange"]["detail"];
        "arcgisLoad": ArcgisUniqueValuesList["arcgisLoad"]["detail"];
        "arcgisSortByChange": ArcgisUniqueValuesList["arcgisSortByChange"]["detail"];
    };
}
