text: /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */
  import * as tslib_1 from "tslib";
  import { Subscriber } from '../Subscriber';
  import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';
  export function skipLast(count) {
      return function (source) { return source.lift(new SkipLastOperator(count)); };
  }
  var SkipLastOperator = /*@__PURE__*/ (function () {
      function SkipLastOperator(_skipCount) {
          this._skipCount = _skipCount;
          if (this._skipCount < 0) {
              throw new ArgumentOutOfRangeError;
          }
      }
      SkipLastOperator.prototype.call = function (subscriber, source) {
          if (this._skipCount === 0) {
              return source.subscribe(new Subscriber(subscriber));
          }
          else {
              return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));
          }
      };
      return SkipLastOperator;
  }());
  var SkipLastSubscriber = /*@__PURE__*/ (function (_super) {
      tslib_1.__extends(SkipLastSubscriber, _super);
      function SkipLastSubscriber(destination, _skipCount) {
          var _this = _super.call(this, destination) || this;
          _this._skipCount = _skipCount;
          _this._count = 0;
          _this._ring = new Array(_skipCount);
          return _this;
      }
      SkipLastSubscriber.prototype._next = function (value) {
          var skipCount = this._skipCount;
          var count = this._count++;
          if (count < skipCount) {
              this._ring[count] = value;
          }
          else {
              var currentIndex = count % skipCount;
              var ring = this._ring;
              var oldValue = ring[currentIndex];
              ring[currentIndex] = value;
              this.destination.next(oldValue);
          }
      };
      return SkipLastSubscriber;
  }(Subscriber));
  //# sourceMappingURL=skipLast.js.map
  