"use strict";

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

/**
 * Licensed Materials - Property of IBM
 * IBM Business Analytics (C) Copyright IBM Corp. 2019, 2020
 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */

/**
 * @class QueryDefinitionAPI
 * @hideconstructor
 * @classdesc API class which describes a query in a manner abstracted from a visualization and from the query protocol
 */
define([], function () {
	var QueryDefinitionAPI = function () {
		function QueryDefinitionAPI() {
			_classCallCheck(this, QueryDefinitionAPI);
		}

		/**
   * @return {String} the ID of this definition (e.g. `data`)
   */
		QueryDefinitionAPI.prototype.getId = function getId() {};

		/**
   * @return {String} the type of this definition (e.g. `main`)
   */


		QueryDefinitionAPI.prototype.getType = function getType() {};

		/**
   * @function QueryDefinitionAPI#setDataSource
   * @description Set the data source for this query
   * @public
   * @param {DataSourceAPI} sourceId
   */


		QueryDefinitionAPI.prototype.setDataSource = function setDataSource(source) {
			void source;
		};

		/**
   * @function QueryDefinitionAPI#getDataSource
   * @description Get data source
   * @public
   * @return {DataSourceAPI}
   */


		QueryDefinitionAPI.prototype.getDataSource = function getDataSource() {};

		/**
   * Set summaries to be shown or hidden.
   * @param {Boolean} flag - true to enable summaries.
   */


		QueryDefinitionAPI.prototype.setSummariesEnabled = function setSummariesEnabled() {};

		/**
   * @function QueryDefinitionAPI#getSummariesEnabled
   * @description return true if summaries are enabled (applies to crosstabs and tables)
   * @public
   * @return {Boolean}
   */


		QueryDefinitionAPI.prototype.getSummariesEnabled = function getSummariesEnabled() {};

		/**
   * Set suppression to be on or off.
   * @param {Boolean} flag - true to enable suppression.
   */


		QueryDefinitionAPI.prototype.setSuppressionEnabled = function setSuppressionEnabled() {};

		/**
   * @function QueryDefinitionAPI#getSuppressionEnabled
   * @description return true if suppression is enabled (applies to crosstabs and tables)
   * @public
   * @return {Boolean}
   */


		QueryDefinitionAPI.prototype.getSuppressionEnabled = function getSuppressionEnabled() {};

		/**
   * @function QueryDefinitionAPI#createDataItemSet
   * @description Creates and returns a QueryDataItemSetAPI object in user in QueryDefinitionAPIs
   * @public
   *
   * @param {DataItemAPI[]} dataItems An array of one or more data items to initialize the QueryDataItemSetAPI with
   * @return {QueryDataItemSetAPI}
   */


		QueryDefinitionAPI.prototype.createDataItemSet = function createDataItemSet() {};

		/**
   * Get all data item sets to query
   * @return {QueryDataItemSetAPI[]}
   */


		QueryDefinitionAPI.prototype.getDataItemSetList = function getDataItemSetList() {};

		/**
   * Get all data items in this set and its descendants
   * @return {QueryDataItemAPI[]}
   */


		QueryDefinitionAPI.prototype.getAllDataItemsList = function getAllDataItemsList() {};

		/**
   * Add filters
   * @param {object} array of filters
   */


		QueryDefinitionAPI.prototype.addFilters = function addFilters() {};

		/**
   * Remove filters
   * @param {object} array of filters to be removed
   */


		QueryDefinitionAPI.prototype.removeFilters = function removeFilters() {};

		/**
   * Get the list of filters stored in this query definition
   * @return {object} array of filters
   */


		QueryDefinitionAPI.prototype.getFilters = function getFilters() {};

		/**
   * @function QueryDefinitionAPI#addQueryHint
   * @description Add a query hint into definition
   * @public
   * @param {Object} query hint {key, spec}
   */


		QueryDefinitionAPI.prototype.addQueryHint = function addQueryHint() {};

		/**
   * @function QueryDefinitionAPI#getQueryHints
   * @description Get query hints
   * @public
   * @return {Array} query hints
   */

		QueryDefinitionAPI.prototype.getQueryHints = function getQueryHints() {};

		/**
   * Set expand to be shown or hidden (applies to crosstabs).
   * @param {Boolean} flag - true to enable expand
   */


		QueryDefinitionAPI.prototype.setExpandEnabled = function setExpandEnabled() {};

		/**
   * @function QueryDefinitionAPI#getExpandEnabled
   * @description return true if expand is enabled (applies to crosstabs)
   * @public
   * @return {Boolean}
   */


		QueryDefinitionAPI.prototype.getExpandEnabled = function getExpandEnabled() {};

		/**
   * @function QueryDefinitionAPI#setSupportsNonContextualTopBottom
   * @param {Boolean} - set to false if this visualization does not support NonContextualTop/Bottom
   */


		QueryDefinitionAPI.prototype.setSupportsNonContextualTopBottom = function setSupportsNonContextualTopBottom() {};

		/**
   * @function QueryDefinitionAPI#getExpandEnabled
   * @description return true if NonContextualTopBottom is enabled (usu: false for crosstab and list)
   * @public
   * @return {Boolean}
   */


		QueryDefinitionAPI.prototype.getSupportsNonContextualTopBottom = function getSupportsNonContextualTopBottom() {};

		/**
   * @public
   * @function QueryDefinitionAPI#getPropertyValue
   * @description Get a query definition property value
   * @param {String} name unique name of the property
   * @return {Object} property value
   */


		QueryDefinitionAPI.prototype.getPropertyValue = function getPropertyValue() {};

		/**
   * @public
   * @function QueryDefinitionAPI#setPropertyValue
   * @description Set a query definition property value of the given property name
   * @param {String} name unique name of the property
   * @param {Object} value new value of the property
   */


		QueryDefinitionAPI.prototype.setPropertyValue = function setPropertyValue() {};

		return QueryDefinitionAPI;
	}();

	return QueryDefinitionAPI;
});
//# sourceMappingURL=QueryDefinitionAPI.js.map