import { MapCultureTo, Nullable } from "../../../base-types";
import IResource from "../resource";
import { OptionListType } from "./option-list-type";
import { IOptionListValue } from "./option-list-value";
/**
 * A collection of predefined values for fields. Also known as 'option lists'.
 */
export interface IOptionList extends IResource {
    /**
     * Gets the name of the option list. Should be unique.
     */
    readonly name: string;
    /**
     * Gets or sets a value indicating whether the option list is editable.
     */
    isSystemOwned: boolean;
    /**
     * Gets optional translation(s) of the canonical name.
     */
    readonly labels: MapCultureTo<string>;
    /**
     * Gets the type of the option list.
     */
    type: OptionListType;
    /**
     * Gets a list of the data source values. Use the properties on {@link IFlatOptionList} or
     * {@link IHierarchicalOptionList} to make changes.
     */
    getOptionListValues(): Array<IOptionListValue>;
    /**
     * Sets a list of data source values.
     */
    setOptionListValues(values: Array<IOptionListValue>): void;
}
export interface ITypedOptionList<T extends IOptionListValue> extends IOptionList {
    /**
     * Gets the list of data source values.
     */
    readonly values: Array<Nullable<T>>;
}
