Object.defineProperty(exports, "__esModule", { value: true });
exports.IntegrationAPI = void 0;
var Logger_1 = require("../Logger");
var ActionAPI_1 = require("./ActionAPI");
var IntegrationAPI = /** @class */ (function () {
    function IntegrationAPI(settings) {
        this._integrationID = settings.integrationID;
        this._integration = settings.integration;
        this._actions = {};
        this._connectionvalidators = {};
    }
    IntegrationAPI.prototype.registerAction = function (actionID, name, callback) {
        //Backwards compatibility
        if (typeof name == 'function') {
            callback = name;
            name = actionID;
            if (this._integration.integration.actions != undefined)
                for (var i = 0; i < this._integration.integration.actions.length; i++)
                    if (this._integration.integration.actions[i].id == actionID) {
                        name = this._integration.integration.actions[i].name;
                        break;
                    }
        }
        if (this._actions[actionID] == undefined) {
            this._actions[actionID] = { api: new ActionAPI_1.ActionAPI({ integrationID: this._integrationID }), name: name };
            callback(this._actions[actionID].api);
        }
        else
            (0, Logger_1.Log)('error', "Integration '".concat(this._integrationID, "' tried to register duplicate action '").concat(actionID, "'"));
    };
    IntegrationAPI.prototype.registerConnectionValidator = function (connectionType, callback) {
        if (this._integration.connectionslist.includes(connectionType)) {
            if (this._connectionvalidators[connectionType] == undefined) {
                this._connectionvalidators[connectionType] = callback;
            }
            else
                (0, Logger_1.Log)('error', "Integration '".concat(this
                    ._integrationID, "' tried to register duplicate connection validator '").concat(connectionType, "'"));
        }
        else
            (0, Logger_1.Log)('error', "Integration '".concat(this
                ._integrationID, "' tried to register non-existing connection validator '").concat(connectionType, "'"));
    };
    IntegrationAPI.prototype.hasAction = function (actionID) {
        return this._actions[actionID] != undefined;
    };
    IntegrationAPI.prototype.getAction = function (actionID) {
        if (this.hasAction(actionID))
            return this._actions[actionID].api;
        return null;
    };
    IntegrationAPI.prototype.getActionList = function () {
        var list = [];
        for (var actionID in this._actions)
            list.push({ id: actionID, name: this._actions[actionID].name });
        return list;
    };
    IntegrationAPI.prototype.hasValidator = function (connectionType) {
        return this._connectionvalidators[connectionType] != undefined;
    };
    IntegrationAPI.prototype.getValidator = function (connectionType) {
        if (this.hasValidator(connectionType))
            return this._connectionvalidators[connectionType];
        return null;
    };
    return IntegrationAPI;
}());
exports.IntegrationAPI = IntegrationAPI;
//# sourceMappingURL=IntegrationApi.js.map