export default DataSource;
/**
 * The options required to create a `DataSource`.
 *
 * The synchronization is made in the `ngeo.datasource.syncDataSourcesMap`
 * service.
 */
export type DataSourceOptions = {
    /**
     * The attributes of the data
     * source.
     */
    attributes?: import("ngeo/format/Attribute").Attribute[];
    /**
     * The dimensions filters configuration, which determines dimensions supported by this data source using
     * filters and give the corresponding field and whether they should use a static value or the one defined
     * in the dimensions.
     */
    dimensionsFiltersConfig?: import("ngeo/datasource/OGC").DimensionsFiltersConfig;
    /**
     * The data source id.
     */
    id: number;
    /**
     * The name of an attribute among the attributes of the data source.
     * The value of that attribute, in records, can be used to identify each record individually.
     */
    identifierAttribute?: string;
    /**
     * A data source is considered 'in range' when it is synchronized to
     * a map view and the resolution of that view is within the range of the `maxResolution` and
     * `minResolution`. These 2 properties are required for the `inRange` property to be dynamic, otherwise its
     * value is always `true` by default.
     */
    inRange?: boolean;
    /**
     * Minimum resolution where the data source can be displayed or queried.
     */
    minResolution?: number;
    /**
     * Maximum resolution where the data source can be displayed or queried.
     */
    maxResolution?: number;
    /**
     * A human-readable name for the data source.
     */
    name: string;
    /**
     * Whether the data source is visible or not, i.e.
     * whether its is ON or OFF.
     */
    visible?: boolean;
};
export type DataSources = import("ol/Collection").default<DataSource>;
/**
 * The options required to create a `DataSource`.
 *
 * The synchronization is made in the `ngeo.datasource.syncDataSourcesMap`
 * service.
 *
 *
 * @typedef {Object} DataSourceOptions
 * @property {import('ngeo/format/Attribute').Attribute[]} [attributes] The attributes of the data
 *    source.
 * @property {import('ngeo/datasource/OGC').DimensionsFiltersConfig} [dimensionsFiltersConfig]
 *    The dimensions filters configuration, which determines dimensions supported by this data source using
 *    filters and give the corresponding field and whether they should use a static value or the one defined
 *    in the dimensions.
 * @property {number} id The data source id.
 * @property {string} [identifierAttribute] The name of an attribute among the attributes of the data source.
 *    The value of that attribute, in records, can be used to identify each record individually.
 * @property {boolean} [inRange] A data source is considered 'in range' when it is synchronized to
 *    a map view and the resolution of that view is within the range of the `maxResolution` and
 *    `minResolution`. These 2 properties are required for the `inRange` property to be dynamic, otherwise its
 *    value is always `true` by default.
 * @property {number} [minResolution] Minimum resolution where the data source can be displayed or queried.
 * @property {number} [maxResolution] Maximum resolution where the data source can be displayed or queried.
 * @property {string} name A human-readable name for the data source.
 * @property {boolean} [visible=false] Whether the data source is visible or not, i.e.
 *    whether its is ON or OFF.
 */
/**
 * @private
 * @hidden
 */
declare class DataSource {
    /**
     * A `ngeo.datasource.DataSource` represents a single source of data, which
     * can combine different type of servers to display or fetch the data. It can
     * serve as a point of entry to get all the information about a single data
     * source.
     *
     * You can use the information in a data source to do all sorts of things:
     *  - create `ol.layer.Layer` objects using the WMS, WMTS or even WFS
     *    information
     *  - issue WMS/WFS queries
     *  - know whether the data is visible or not
     *  - apply filter rules on it
     *
     * @param {DataSourceOptions} options Options.
     */
    constructor(options: DataSourceOptions);
    /**
     * A data source is considered 'in range' when it is synchronized to
     * a map view and the resolution of that view is within the range of
     * the `maxResolution` and `minResolution`. These 2 properties are
     * required for the `inRange` property to be dynamic, otherwise its
     * value is always `true` by default.
     *
     * The synchronization is made in the `import('ngeo/datasource/DataSource').DataSources`
     * service.
     *
     * @type {boolean}
     */
    inRange: boolean;
    /**
     * Whether the data source is visible or not, i.e. whether its is ON or OFF.
     * Defaults to `false`.
     *
     * @type {boolean}
     */
    visible: boolean;
    /**
     * The attributes of the data source.
     *
     * Note: `attributes` is not using the conventionnal getter/setter due
     * to:  See: https://github.com/google/closure-compiler/issues/1089
     *
     * @type {?import('ngeo/format/Attribute').Attribute[]}
     */
    attributes: import("ngeo/format/Attribute").Attribute[] | null;
    /**
     * (Required) The data source id.
     *
     * @type {number}
     * @private
     */
    private id_;
    /**
     * The name of an attribute among the attributes of the data source.
     * The value of that attribute, in records, can be used to identify
     * each record individually.
     *
     * @type {string|undefined}
     * @private
     */
    private identifierAttribute_;
    /**
     * Maximum resolution where the data source can be displayed or queried.
     *
     * @type {number|undefined}
     * @private
     */
    private maxResolution_;
    /**
     * Minimum resolution where the data source can be displayed or queried.
     *
     * @type {number|undefined}
     * @private
     */
    private minResolution_;
    /**
     * (Required) A human-readable name for the data source.
     *
     * @type {string}
     * @private
     */
    private name_;
    /**
     * @returns {?import('ngeo/format/Attribute').Attribute[]} Attributes
     */
    getAttributes(): import("ngeo/format/Attribute").Attribute[] | null;
    /**
     * @param {import('ngeo/format/Attribute').Attribute[]} attributes Attributes
     */
    setAttributes(attributes: import("ngeo/format/Attribute").Attribute[]): void;
    /**
     * @returns {number} Id
     */
    get id(): number;
    /**
     * @returns {string|undefined} Identifier attribute
     */
    get identifierAttribute(): string;
    /**
     * @returns {number|undefined} Maximum resolution
     */
    get maxResolution(): number;
    /**
     * @returns {number|undefined} Minimum resolution
     */
    get minResolution(): number;
    /**
     * @returns {string} Name
     */
    get name(): string;
    /**
     * Whether the data source is queryable or not.
     *
     * @returns {boolean} Whether the data source is queryable or not.
     */
    get queryable(): boolean;
    /**
     * @returns {boolean} Whether the data source supports a dynamic `inRange`
     *     property or not, i.e. whether it can be calculated.
     */
    get supportsDynamicInRange(): boolean;
}
