text: "use strict";
  /**
   * @module adaptive-expressions
   */
  /**
   * Copyright (c) Microsoft Corporation. All rights reserved.
   * Licensed under the MIT License.
   */
  Object.defineProperty(exports, "__esModule", { value: true });
  /**
   * Some util and extension functions
   */
  class Extensions {
      /**
       * Patch method
       * TODO: is there any better solution?
       * To judge if an object is implements MemoryInterface. Same with 'is MemoryInterface' in C#
       */
      static isMemoryInterface(obj) {
          if (obj === undefined) {
              return false;
          }
          if (typeof obj !== 'object') {
              return false;
          }
          return ('getValue' in obj &&
              'setValue' in obj &&
              'version' in obj &&
              typeof obj.getValue === 'function' &&
              typeof obj.setValue === 'function' &&
              typeof obj.version === 'function');
      }
      /**
       * Generator random seed and value from properties.
       * If value is not null, the mock random value result would be: min + (value % (max - min)).
       * @param memory memory state.
       * @param min The inclusive lower bound of the random number returned.
       * @param max The exclusive upper bound of the random number returned. max must be greater than or equal to min.
       * @returns Random value.
       */
      static randomNext(memory, min, max) {
          const randomValue = memory.getValue('Conversation.TestOptions.randomValue');
          if (randomValue !== undefined) {
              return min + (randomValue % (max - min));
          }
          return Math.floor(min + Math.random() * (max - min));
      }
  }
  exports.Extensions = Extensions;
  //# sourceMappingURL=extensions.js.map