/**
 *
 *  (c) 2010-2019 Daniel Studencki
 *
 *  License: www.highcharts.com/license
 *
 *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
 *
 * */
'use strict';
import H from '../parts/Globals.js';
import '../parts/Utilities.js';
var error = H.error;
/* eslint-disable no-invalid-this, valid-jsdoc */
var requiredIndicatorMixin = {
    /**
     * Check whether given indicator is loaded, else throw error.
     * @private
     * @param {Highcharts.Indicator} indicator
     *        Indicator constructor function.
     * @param {string} requiredIndicator
     *        Required indicator type.
     * @param {string} type
     *        Type of indicator where function was called (parent).
     * @param {Highcharts.IndicatorConstructorFunction} callback
     *        Callback which is triggered if the given indicator is loaded.
     *        Takes indicator as an argument.
     * @param {string} errMessage
     *        Error message that will be logged in console.
     * @return {boolean}
     *         Returns false when there is no required indicator loaded.
     */
    isParentLoaded: function (indicator, requiredIndicator, type, callback, errMessage) {
        if (indicator) {
            return callback ? callback(indicator) : true;
        }
        error(errMessage || this.generateMessage(type, requiredIndicator));
        return false;
    },
    /**
     * @private
     * @param {string} indicatorType
     *        Indicator type
     * @param {string} required
     *        Required indicator
     * @return {string}
     *         Error message
     */
    generateMessage: function (indicatorType, required) {
        return 'Error: "' + indicatorType +
            '" indicator type requires "' + required +
            '" indicator loaded before. Please read docs: ' +
            'https://api.highcharts.com/highstock/plotOptions.' +
            indicatorType;
    }
};
export default requiredIndicatorMixin;
