PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@hashgraph/sdk/lib/contract

Просмотр файла: ContractFunctionSelector.cjs

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = exports.ArgumentType = void 0;
exports.solidityTypeToString = solidityTypeToString;
var _keccak = require("../cryptography/keccak.cjs");
var hex = _interopRequireWildcard(require("../encoding/hex.cjs"));
var utf8 = _interopRequireWildcard(require("../encoding/utf8.cjs"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/*-
 * ‌
 * Hedera JavaScript SDK
 * ​
 * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
 * ​
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ‍
 */

/**
 * @enum {number}
 */
const ArgumentType = {
  uint8: 0,
  int8: 1,
  uint16: 2,
  int16: 3,
  uint24: 4,
  int24: 5,
  uint32: 6,
  int32: 7,
  uint40: 8,
  int40: 9,
  uint48: 10,
  int48: 11,
  uint56: 12,
  int56: 13,
  uint64: 14,
  int64: 15,
  uint72: 16,
  int72: 17,
  uint80: 18,
  int80: 19,
  uint88: 20,
  int88: 21,
  uint96: 22,
  int96: 23,
  uint104: 24,
  int104: 25,
  uint112: 26,
  int112: 27,
  uint120: 28,
  int120: 29,
  uint128: 30,
  int128: 31,
  uint136: 32,
  int136: 33,
  uint144: 34,
  int144: 35,
  uint152: 36,
  int152: 37,
  uint160: 38,
  int160: 39,
  uint168: 40,
  int168: 41,
  uint176: 42,
  int176: 43,
  uint184: 44,
  int184: 45,
  uint192: 46,
  int192: 47,
  uint200: 48,
  int200: 49,
  uint208: 50,
  int208: 51,
  uint216: 52,
  int216: 53,
  uint224: 54,
  int224: 55,
  uint232: 56,
  int232: 57,
  uint240: 58,
  int240: 59,
  uint248: 60,
  int248: 61,
  uint256: 62,
  int256: 63,
  string: 64,
  bool: 65,
  bytes: 66,
  bytes32: 67,
  address: 68,
  func: 69
};

/**
 * @typedef {object} Argument
 * @property {boolean} dynamic
 * @property {Uint8Array} value
 */

/**
 * @typedef {object} SolidityType
 * @property {ArgumentType} ty
 * @property {boolean} array
 */
exports.ArgumentType = ArgumentType;
class ContractFunctionSelector {
  /**
   * @param {string} [name]
   */
  constructor(name) {
    /**
     * @type {?string}
     */
    this.name = null;

    /**
     * @type {string}
     */
    this._params = "";

    /**
     * @type {SolidityType[]}
     */
    this._paramTypes = [];
    if (name != null) {
      this._name = name;
    }
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addString() {
    return this._addParam({
      ty: ArgumentType.string,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addStringArray() {
    return this._addParam({
      ty: ArgumentType.string,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addBytes() {
    return this._addParam({
      ty: ArgumentType.bytes,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addBytes32() {
    return this._addParam({
      ty: ArgumentType.bytes32,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addBytesArray() {
    return this._addParam({
      ty: ArgumentType.bytes,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addBytes32Array() {
    return this._addParam({
      ty: ArgumentType.bytes32,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt8() {
    return this._addParam({
      ty: ArgumentType.int8,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint8() {
    return this._addParam({
      ty: ArgumentType.uint8,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt16() {
    return this._addParam({
      ty: ArgumentType.int16,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint16() {
    return this._addParam({
      ty: ArgumentType.uint16,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt24() {
    return this._addParam({
      ty: ArgumentType.int24,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint24() {
    return this._addParam({
      ty: ArgumentType.uint24,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt32() {
    return this._addParam({
      ty: ArgumentType.int32,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint32() {
    return this._addParam({
      ty: ArgumentType.uint32,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt40() {
    return this._addParam({
      ty: ArgumentType.int40,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint40() {
    return this._addParam({
      ty: ArgumentType.uint40,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt48() {
    return this._addParam({
      ty: ArgumentType.int48,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint48() {
    return this._addParam({
      ty: ArgumentType.uint48,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt56() {
    return this._addParam({
      ty: ArgumentType.int56,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint56() {
    return this._addParam({
      ty: ArgumentType.uint56,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt64() {
    return this._addParam({
      ty: ArgumentType.int64,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint64() {
    return this._addParam({
      ty: ArgumentType.uint64,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt72() {
    return this._addParam({
      ty: ArgumentType.int72,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint72() {
    return this._addParam({
      ty: ArgumentType.uint72,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt80() {
    return this._addParam({
      ty: ArgumentType.int80,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint80() {
    return this._addParam({
      ty: ArgumentType.uint80,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt88() {
    return this._addParam({
      ty: ArgumentType.int88,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint88() {
    return this._addParam({
      ty: ArgumentType.uint88,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt96() {
    return this._addParam({
      ty: ArgumentType.int96,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint96() {
    return this._addParam({
      ty: ArgumentType.uint96,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt104() {
    return this._addParam({
      ty: ArgumentType.int104,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint104() {
    return this._addParam({
      ty: ArgumentType.uint104,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt112() {
    return this._addParam({
      ty: ArgumentType.int112,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint112() {
    return this._addParam({
      ty: ArgumentType.uint112,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt120() {
    return this._addParam({
      ty: ArgumentType.int120,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint120() {
    return this._addParam({
      ty: ArgumentType.uint120,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt128() {
    return this._addParam({
      ty: ArgumentType.int128,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint128() {
    return this._addParam({
      ty: ArgumentType.uint128,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt136() {
    return this._addParam({
      ty: ArgumentType.int136,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint136() {
    return this._addParam({
      ty: ArgumentType.uint136,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt144() {
    return this._addParam({
      ty: ArgumentType.int144,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint144() {
    return this._addParam({
      ty: ArgumentType.uint144,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt152() {
    return this._addParam({
      ty: ArgumentType.int152,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint152() {
    return this._addParam({
      ty: ArgumentType.uint152,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt160() {
    return this._addParam({
      ty: ArgumentType.int160,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint160() {
    return this._addParam({
      ty: ArgumentType.uint160,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt168() {
    return this._addParam({
      ty: ArgumentType.int168,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint168() {
    return this._addParam({
      ty: ArgumentType.uint168,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt176() {
    return this._addParam({
      ty: ArgumentType.int176,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint176() {
    return this._addParam({
      ty: ArgumentType.uint176,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt184() {
    return this._addParam({
      ty: ArgumentType.int184,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint184() {
    return this._addParam({
      ty: ArgumentType.uint184,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt192() {
    return this._addParam({
      ty: ArgumentType.int192,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint192() {
    return this._addParam({
      ty: ArgumentType.uint192,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt200() {
    return this._addParam({
      ty: ArgumentType.int200,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint200() {
    return this._addParam({
      ty: ArgumentType.uint200,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt208() {
    return this._addParam({
      ty: ArgumentType.int208,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint208() {
    return this._addParam({
      ty: ArgumentType.uint208,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt216() {
    return this._addParam({
      ty: ArgumentType.int216,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint216() {
    return this._addParam({
      ty: ArgumentType.uint216,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt224() {
    return this._addParam({
      ty: ArgumentType.int224,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint224() {
    return this._addParam({
      ty: ArgumentType.uint224,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt232() {
    return this._addParam({
      ty: ArgumentType.int232,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint232() {
    return this._addParam({
      ty: ArgumentType.uint232,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt240() {
    return this._addParam({
      ty: ArgumentType.int240,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint240() {
    return this._addParam({
      ty: ArgumentType.uint240,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt248() {
    return this._addParam({
      ty: ArgumentType.int248,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint248() {
    return this._addParam({
      ty: ArgumentType.uint248,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt256() {
    return this._addParam({
      ty: ArgumentType.int256,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint256() {
    return this._addParam({
      ty: ArgumentType.uint256,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt8Array() {
    return this._addParam({
      ty: ArgumentType.int8,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint8Array() {
    return this._addParam({
      ty: ArgumentType.uint8,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt16Array() {
    return this._addParam({
      ty: ArgumentType.int16,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint16Array() {
    return this._addParam({
      ty: ArgumentType.uint16,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt24Array() {
    return this._addParam({
      ty: ArgumentType.int24,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint24Array() {
    return this._addParam({
      ty: ArgumentType.uint24,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt32Array() {
    return this._addParam({
      ty: ArgumentType.int32,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint32Array() {
    return this._addParam({
      ty: ArgumentType.uint32,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt40Array() {
    return this._addParam({
      ty: ArgumentType.int40,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint40Array() {
    return this._addParam({
      ty: ArgumentType.uint40,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt48Array() {
    return this._addParam({
      ty: ArgumentType.int48,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint48Array() {
    return this._addParam({
      ty: ArgumentType.uint48,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt56Array() {
    return this._addParam({
      ty: ArgumentType.int56,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint56Array() {
    return this._addParam({
      ty: ArgumentType.uint56,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt64Array() {
    return this._addParam({
      ty: ArgumentType.int64,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint64Array() {
    return this._addParam({
      ty: ArgumentType.uint64,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt72Array() {
    return this._addParam({
      ty: ArgumentType.int72,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint72Array() {
    return this._addParam({
      ty: ArgumentType.uint72,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt80Array() {
    return this._addParam({
      ty: ArgumentType.int80,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint80Array() {
    return this._addParam({
      ty: ArgumentType.uint80,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt88Array() {
    return this._addParam({
      ty: ArgumentType.int88,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint88Array() {
    return this._addParam({
      ty: ArgumentType.uint88,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt96Array() {
    return this._addParam({
      ty: ArgumentType.int96,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint96Array() {
    return this._addParam({
      ty: ArgumentType.uint96,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt104Array() {
    return this._addParam({
      ty: ArgumentType.int104,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint104Array() {
    return this._addParam({
      ty: ArgumentType.uint104,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt112Array() {
    return this._addParam({
      ty: ArgumentType.int112,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint112Array() {
    return this._addParam({
      ty: ArgumentType.uint112,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt120Array() {
    return this._addParam({
      ty: ArgumentType.int120,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint120Array() {
    return this._addParam({
      ty: ArgumentType.uint120,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt128Array() {
    return this._addParam({
      ty: ArgumentType.int128,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint128Array() {
    return this._addParam({
      ty: ArgumentType.uint128,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt136Array() {
    return this._addParam({
      ty: ArgumentType.int136,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint136Array() {
    return this._addParam({
      ty: ArgumentType.uint136,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt144Array() {
    return this._addParam({
      ty: ArgumentType.int144,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint144Array() {
    return this._addParam({
      ty: ArgumentType.uint144,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt152Array() {
    return this._addParam({
      ty: ArgumentType.int152,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint152Array() {
    return this._addParam({
      ty: ArgumentType.uint152,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt160Array() {
    return this._addParam({
      ty: ArgumentType.int160,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint160Array() {
    return this._addParam({
      ty: ArgumentType.uint160,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt168Array() {
    return this._addParam({
      ty: ArgumentType.int168,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint168Array() {
    return this._addParam({
      ty: ArgumentType.uint168,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt176Array() {
    return this._addParam({
      ty: ArgumentType.int176,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint176Array() {
    return this._addParam({
      ty: ArgumentType.uint176,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt184Array() {
    return this._addParam({
      ty: ArgumentType.int184,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint184Array() {
    return this._addParam({
      ty: ArgumentType.uint184,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt192Array() {
    return this._addParam({
      ty: ArgumentType.int192,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint192Array() {
    return this._addParam({
      ty: ArgumentType.uint192,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt200Array() {
    return this._addParam({
      ty: ArgumentType.int200,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint200Array() {
    return this._addParam({
      ty: ArgumentType.uint200,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt208Array() {
    return this._addParam({
      ty: ArgumentType.int208,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint208Array() {
    return this._addParam({
      ty: ArgumentType.uint208,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt216Array() {
    return this._addParam({
      ty: ArgumentType.int216,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint216Array() {
    return this._addParam({
      ty: ArgumentType.uint216,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt224Array() {
    return this._addParam({
      ty: ArgumentType.int224,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint224Array() {
    return this._addParam({
      ty: ArgumentType.uint224,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt232Array() {
    return this._addParam({
      ty: ArgumentType.int232,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint232Array() {
    return this._addParam({
      ty: ArgumentType.uint232,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt240Array() {
    return this._addParam({
      ty: ArgumentType.int240,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint240Array() {
    return this._addParam({
      ty: ArgumentType.uint240,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt248Array() {
    return this._addParam({
      ty: ArgumentType.int248,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint248Array() {
    return this._addParam({
      ty: ArgumentType.uint248,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addInt256Array() {
    return this._addParam({
      ty: ArgumentType.int256,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addUint256Array() {
    return this._addParam({
      ty: ArgumentType.uint256,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addBool() {
    return this._addParam({
      ty: ArgumentType.bool,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addAddress() {
    return this._addParam({
      ty: ArgumentType.address,
      array: false
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addAddressArray() {
    return this._addParam({
      ty: ArgumentType.address,
      array: true
    });
  }

  /**
   * @returns {ContractFunctionSelector}
   */
  addFunction() {
    return this._addParam({
      ty: ArgumentType.func,
      array: false
    });
  }

  /**
   * @param {SolidityType} ty
   * @returns {ContractFunctionSelector}
   */
  _addParam(ty) {
    if (this._paramTypes.length > 0) {
      this._params += ",";
    }
    this._params += solidityTypeToString(ty);
    this._paramTypes.push(ty);
    return this;
  }

  /**
   * @param {string} [name]
   * @returns {Uint8Array}
   */
  _build(name) {
    if (name != null) {
      this._name = name;
    } else if (this._name == null) {
      throw new Error("`name` required for ContractFunctionSelector");
    }
    const func = hex.encode(utf8.encode(this.toString()));
    return hex.decode((0, _keccak.keccak256)(`0x${func}`)).slice(0, 4);
  }

  /**
   * @returns {string}
   */
  toString() {
    return `${this._name != null ? this._name.toString() : ""}(${this._params})`;
  }
}

/**
 * @param {SolidityType} ty
 * @returns {string}
 */
exports.default = ContractFunctionSelector;
function solidityTypeToString(ty) {
  let s = "";
  switch (ty.ty) {
    case ArgumentType.uint8:
      s = "uint8";
      break;
    case ArgumentType.int8:
      s = "int8";
      break;
    case ArgumentType.uint16:
      s = "uint16";
      break;
    case ArgumentType.int16:
      s = "int16";
      break;
    case ArgumentType.uint24:
      s = "uint24";
      break;
    case ArgumentType.int24:
      s = "int24";
      break;
    case ArgumentType.uint32:
      s = "uint32";
      break;
    case ArgumentType.int32:
      s = "int32";
      break;
    case ArgumentType.uint40:
      s = "uint40";
      break;
    case ArgumentType.int40:
      s = "int40";
      break;
    case ArgumentType.uint48:
      s = "uint48";
      break;
    case ArgumentType.int48:
      s = "int48";
      break;
    case ArgumentType.uint56:
      s = "uint56";
      break;
    case ArgumentType.int56:
      s = "int56";
      break;
    case ArgumentType.uint64:
      s = "uint64";
      break;
    case ArgumentType.int64:
      s = "int64";
      break;
    case ArgumentType.uint72:
      s = "uint72";
      break;
    case ArgumentType.int72:
      s = "int72";
      break;
    case ArgumentType.uint80:
      s = "uint80";
      break;
    case ArgumentType.int80:
      s = "int80";
      break;
    case ArgumentType.uint88:
      s = "uint88";
      break;
    case ArgumentType.int88:
      s = "int88";
      break;
    case ArgumentType.uint96:
      s = "uint96";
      break;
    case ArgumentType.int96:
      s = "int96";
      break;
    case ArgumentType.uint104:
      s = "uint104";
      break;
    case ArgumentType.int104:
      s = "int104";
      break;
    case ArgumentType.uint112:
      s = "uint112";
      break;
    case ArgumentType.int112:
      s = "int112";
      break;
    case ArgumentType.uint120:
      s = "uint120";
      break;
    case ArgumentType.int120:
      s = "int120";
      break;
    case ArgumentType.uint128:
      s = "uint128";
      break;
    case ArgumentType.int128:
      s = "int128";
      break;
    case ArgumentType.uint136:
      s = "uint136";
      break;
    case ArgumentType.int136:
      s = "int136";
      break;
    case ArgumentType.uint144:
      s = "uint144";
      break;
    case ArgumentType.int144:
      s = "int144";
      break;
    case ArgumentType.uint152:
      s = "uint152";
      break;
    case ArgumentType.int152:
      s = "int152";
      break;
    case ArgumentType.uint160:
      s = "uint160";
      break;
    case ArgumentType.int160:
      s = "int160";
      break;
    case ArgumentType.uint168:
      s = "uint168";
      break;
    case ArgumentType.int168:
      s = "int168";
      break;
    case ArgumentType.uint176:
      s = "uint176";
      break;
    case ArgumentType.int176:
      s = "int176";
      break;
    case ArgumentType.uint184:
      s = "uint184";
      break;
    case ArgumentType.int184:
      s = "int184";
      break;
    case ArgumentType.uint192:
      s = "uint192";
      break;
    case ArgumentType.int192:
      s = "int192";
      break;
    case ArgumentType.uint200:
      s = "uint200";
      break;
    case ArgumentType.int200:
      s = "int200";
      break;
    case ArgumentType.uint208:
      s = "uint208";
      break;
    case ArgumentType.int208:
      s = "int208";
      break;
    case ArgumentType.uint216:
      s = "uint216";
      break;
    case ArgumentType.int216:
      s = "int216";
      break;
    case ArgumentType.uint224:
      s = "uint224";
      break;
    case ArgumentType.int224:
      s = "int224";
      break;
    case ArgumentType.uint232:
      s = "uint232";
      break;
    case ArgumentType.int232:
      s = "int232";
      break;
    case ArgumentType.uint240:
      s = "uint240";
      break;
    case ArgumentType.int240:
      s = "int240";
      break;
    case ArgumentType.uint248:
      s = "uint248";
      break;
    case ArgumentType.int248:
      s = "int248";
      break;
    case ArgumentType.uint256:
      s = "uint256";
      break;
    case ArgumentType.int256:
      s = "int256";
      break;
    case ArgumentType.string:
      s = "string";
      break;
    case ArgumentType.bool:
      s = "bool";
      break;
    case ArgumentType.bytes:
      s = "bytes";
      break;
    case ArgumentType.bytes32:
      s = "bytes32";
      break;
    case ArgumentType.address:
      s = "address";
      break;
    case ArgumentType.func:
      s = "function";
      break;
    default:
      s = "";
      break;
  }
  if (ty.array) {
    s += "[]";
  }
  return s;
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!