text: "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  var tslib_1 = require("tslib");
  var utils_1 = require("../../utils");
  var FactoryStructurePrinter_1 = require("../FactoryStructurePrinter");
  var formatting_1 = require("../formatting");
  var InterfaceDeclarationStructurePrinter = /** @class */ (function (_super) {
      tslib_1.__extends(InterfaceDeclarationStructurePrinter, _super);
      function InterfaceDeclarationStructurePrinter() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          _this.multipleWriter = new formatting_1.BlankLineFormattingStructuresPrinter(_this);
          return _this;
      }
      InterfaceDeclarationStructurePrinter.prototype.printTexts = function (writer, structures) {
          this.multipleWriter.printText(writer, structures);
      };
      InterfaceDeclarationStructurePrinter.prototype.printText = function (writer, structure) {
          var _this = this;
          this.factory.forJSDoc().printDocs(writer, structure.docs);
          this.factory.forModifierableNode().printText(writer, structure);
          writer.write("interface " + structure.name);
          this.factory.forTypeParameterDeclaration().printTextsWithBrackets(writer, structure.typeParameters);
          writer.space();
          if (structure.extends != null) {
              var extendsText = structure.extends instanceof Array
                  ? structure.extends.map(function (i) { return _this.getTextWithQueuedChildIndentation(writer, i); }).join(", ")
                  : this.getTextWithQueuedChildIndentation(writer, structure.extends);
              if (!utils_1.StringUtils.isNullOrWhitespace(extendsText))
                  writer.write("extends " + extendsText + " ");
          }
          writer.inlineBlock(function () {
              _this.factory.forTypeElementMemberedNode().printText(writer, structure);
          });
      };
      return InterfaceDeclarationStructurePrinter;
  }(FactoryStructurePrinter_1.FactoryStructurePrinter));
  exports.InterfaceDeclarationStructurePrinter = InterfaceDeclarationStructurePrinter;
  