@hiero-ledger/sdk
Version:
1,621 lines (1,473 loc) • 53.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ContractFunctionSelector = _interopRequireWildcard(require("./ContractFunctionSelector.cjs"));
var utf8 = _interopRequireWildcard(require("../encoding/utf8.cjs"));
var hex = _interopRequireWildcard(require("../encoding/hex.cjs"));
var _bignumber = _interopRequireDefault(require("bignumber.js"));
var util = _interopRequireWildcard(require("../util.cjs"));
var _abi = require("@ethersproject/abi");
var _bytes = require("@ethersproject/bytes");
var _EvmAddress = _interopRequireDefault(require("../EvmAddress.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
// SPDX-License-Identifier: Apache-2.0
// eslint-disable-next-line @typescript-eslint/no-unused-vars
// eslint-disable-next-line @typescript-eslint/no-unused-vars
/**
* Class to help construct parameters for a Hedera smart contract function call.
*
* This class provides methods to add different types of parameters that will be passed to a smart contract function.
* It supports all Solidity parameter types including basic types (uint/int of various sizes, bool, address),
* arrays, strings, and bytes.
*
*/
class ContractFunctionParameters {
constructor() {
/**
* @type {ContractFunctionSelector}
*/
this._selector = new _ContractFunctionSelector.default();
/**
* @type {import("./ContractFunctionSelector.js").Argument[]}
*/
this._arguments = [];
}
/**
* @param {string} value
* @returns {ContractFunctionParameters}
*/
addString(value) {
this._selector.addString();
return this._addParam(value, true);
}
/**
* @param {string[]} value
* @returns {ContractFunctionParameters}
*/
addStringArray(value) {
this._selector.addStringArray();
return this._addParam(value, true);
}
/**
* @param {Uint8Array} value
* @returns {ContractFunctionParameters}
*/
addBytes(value) {
this._selector.addBytes();
return this._addParam(value, true);
}
/**
* @param {Uint8Array} value
* @returns {ContractFunctionParameters}
*/
addBytes32(value) {
if (value.length !== 32) {
throw new Error(`addBytes32 expected array to be of length 32, but received ${value.length}`);
}
this._selector.addBytes32();
return this._addParam(value, false);
}
/**
* @param {Uint8Array[]} value
* @returns {ContractFunctionParameters}
*/
addBytesArray(value) {
this._selector.addBytesArray();
return this._addParam(value, true);
}
/**
* @param {Uint8Array[]} value
* @returns {ContractFunctionParameters}
*/
addBytes32Array(value) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
for (const [_, entry] of value.entries()) {
if (entry.length !== 32) {
throw new Error(`addBytes32 expected array to be of length 32, but received ${entry.length}`);
}
}
this._selector.addBytes32Array();
return this._addParam(value, true);
}
/**
* @param {boolean} value
* @returns {ContractFunctionParameters}
*/
addBool(value) {
this._selector.addBool();
return this._addParam(value, false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt8(value) {
this._selector.addInt8();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint8(value) {
this._selector.addUint8();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt16(value) {
this._selector.addInt16();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint16(value) {
this._selector.addUint16();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt24(value) {
this._selector.addInt24();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint24(value) {
this._selector.addUint24();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt32(value) {
this._selector.addInt32();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint32(value) {
this._selector.addUint32();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt40(value) {
this._selector.addInt40();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint40(value) {
this._selector.addUint40();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt48(value) {
this._selector.addInt48();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint48(value) {
this._selector.addUint48();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt56(value) {
this._selector.addInt56();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint56(value) {
this._selector.addUint56();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt64(value) {
this._selector.addInt64();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint64(value) {
this._selector.addUint64();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt72(value) {
this._selector.addInt72();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint72(value) {
this._selector.addUint72();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt80(value) {
this._selector.addInt80();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint80(value) {
this._selector.addUint80();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt88(value) {
this._selector.addInt88();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint88(value) {
this._selector.addUint88();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt96(value) {
this._selector.addInt96();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint96(value) {
this._selector.addUint96();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt104(value) {
this._selector.addInt104();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint104(value) {
this._selector.addUint104();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt112(value) {
this._selector.addInt112();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint112(value) {
this._selector.addUint112();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt120(value) {
this._selector.addInt120();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint120(value) {
this._selector.addUint120();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt128(value) {
this._selector.addInt128();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint128(value) {
this._selector.addUint128();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt136(value) {
this._selector.addInt136();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint136(value) {
this._selector.addUint136();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt144(value) {
this._selector.addInt144();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint144(value) {
this._selector.addUint144();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt152(value) {
this._selector.addInt152();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint152(value) {
this._selector.addUint152();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt160(value) {
this._selector.addInt160();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint160(value) {
this._selector.addUint160();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt168(value) {
this._selector.addInt168();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint168(value) {
this._selector.addUint168();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt176(value) {
this._selector.addInt176();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint176(value) {
this._selector.addUint176();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt184(value) {
this._selector.addInt184();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint184(value) {
this._selector.addUint184();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt192(value) {
this._selector.addInt192();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint192(value) {
this._selector.addUint192();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt200(value) {
this._selector.addInt200();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint200(value) {
this._selector.addUint200();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt208(value) {
this._selector.addInt208();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint208(value) {
this._selector.addUint208();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt216(value) {
this._selector.addInt216();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint216(value) {
this._selector.addUint216();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt224(value) {
this._selector.addInt224();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint224(value) {
this._selector.addUint224();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt232(value) {
this._selector.addInt232();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint232(value) {
this._selector.addUint232();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt240(value) {
this._selector.addInt240();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint240(value) {
this._selector.addUint240();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt248(value) {
this._selector.addInt248();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint248(value) {
this._selector.addUint248();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addInt256(value) {
this._selector.addInt256();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number | BigNumber | Long} value
* @returns {ContractFunctionParameters}
*/
addUint256(value) {
this._selector.addUint256();
return this._addParam(util.convertToBigNumber(value), false);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt8Array(value) {
this._selector.addInt8Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint8Array(value) {
this._selector.addUint8Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt16Array(value) {
this._selector.addInt16Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint16Array(value) {
this._selector.addUint16Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt24Array(value) {
this._selector.addInt24Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint24Array(value) {
this._selector.addUint24Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt32Array(value) {
this._selector.addInt32Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint32Array(value) {
this._selector.addUint32Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt40Array(value) {
this._selector.addInt40Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint40Array(value) {
this._selector.addUint40Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt48Array(value) {
this._selector.addInt48Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint48Array(value) {
this._selector.addUint48Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt56Array(value) {
this._selector.addInt56Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint56Array(value) {
this._selector.addUint56Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt64Array(value) {
this._selector.addInt64Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint64Array(value) {
this._selector.addUint64Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt72Array(value) {
this._selector.addInt72Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint72Array(value) {
this._selector.addUint72Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt80Array(value) {
this._selector.addInt80Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint80Array(value) {
this._selector.addUint80Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt88Array(value) {
this._selector.addInt88Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint88Array(value) {
this._selector.addUint88Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt96Array(value) {
this._selector.addInt96Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint96Array(value) {
this._selector.addUint96Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt104Array(value) {
this._selector.addInt104Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint104Array(value) {
this._selector.addUint104Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt112Array(value) {
this._selector.addInt112Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint112Array(value) {
this._selector.addUint112Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt120Array(value) {
this._selector.addInt120Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint120Array(value) {
this._selector.addUint120Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt128Array(value) {
this._selector.addInt128Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint128Array(value) {
this._selector.addUint128Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt136Array(value) {
this._selector.addInt136Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint136Array(value) {
this._selector.addUint136Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt144Array(value) {
this._selector.addInt144Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint144Array(value) {
this._selector.addUint144Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt152Array(value) {
this._selector.addInt152Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint152Array(value) {
this._selector.addUint152Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt160Array(value) {
this._selector.addInt160Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint160Array(value) {
this._selector.addUint160Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt168Array(value) {
this._selector.addInt168Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint168Array(value) {
this._selector.addUint168Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt176Array(value) {
this._selector.addInt176Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint176Array(value) {
this._selector.addUint176Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt184Array(value) {
this._selector.addInt184Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint184Array(value) {
this._selector.addUint184Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt192Array(value) {
this._selector.addInt192Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint192Array(value) {
this._selector.addUint192Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt200Array(value) {
this._selector.addInt200Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint200Array(value) {
this._selector.addUint200Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt208Array(value) {
this._selector.addInt208Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint208Array(value) {
this._selector.addUint208Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt216Array(value) {
this._selector.addInt216Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint216Array(value) {
this._selector.addUint216Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt224Array(value) {
this._selector.addInt224Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint224Array(value) {
this._selector.addUint224Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt232Array(value) {
this._selector.addInt232Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint232Array(value) {
this._selector.addUint232Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt240Array(value) {
this._selector.addInt240Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint240Array(value) {
this._selector.addUint240Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt248Array(value) {
this._selector.addInt248Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint248Array(value) {
this._selector.addUint248Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addInt256Array(value) {
this._selector.addInt256Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {number[] | BigNumber[] | Long[]} value
* @returns {ContractFunctionParameters}
*/
addUint256Array(value) {
this._selector.addUint256Array();
return this._addParam(util.convertToBigNumberArray(value), true);
}
/**
* @param {string | EvmAddress} value
* @returns {ContractFunctionParameters}
*/
addAddress(value) {
let address;
if (typeof value === "string") {
// Allow `0x` prefix
if (value.length !== 40 && value.length !== 42) {
throw new Error("`address` type requires parameter to be 40 or 42 characters");
}
address = value;
} else {
address = value.toString();
}
const par = address.length === 40 ? hex.decode(address) : hex.decode(address.substring(2));
this._selector.addAddress();
return this._addParam(par, false);
}
/**
* @param {string[] | EvmAddress[]} value
* @returns {ContractFunctionParameters}
*/
addAddressArray(value) {
/**
* @type {Uint8Array[]}
*/
const par = [];
// eslint-disable-next-line @typescript-eslint/no-unused-vars
for (const [_, entry] of value.entries()) {
let address;
if (typeof entry === "string") {
if (entry.length !== 40 && entry.length !== 42) {
throw new Error("`address` type requires parameter to be 40 or 42 characters");
}
address = entry;
} else {
address = entry.toString();
}
const buf = address.length === 40 ? hex.decode(address) : hex.decode(address.substring(2));
par.push(buf);
}
this._selector.addAddressArray();
return this._addParam(par, true);
}
/**
* @param {string} address
* @param {ContractFunctionSelector} selector
* @returns {ContractFunctionParameters}
*/
addFunction(address, selector) {
const addressParam = hex.decode(address);
const functionSelector = selector._build();
if (addressParam.length !== 20) {
throw new Error("`function` type requires parameter `address` to be exactly 20 bytes");
}
this._selector.addFunction();
const proto = new Uint8Array(24);
proto.set(addressParam, 0);
proto.set(functionSelector, 20);
return this._addParam(proto, false);
}
/**
* @internal
* @param {string | boolean | number | Uint8Array | BigNumber | string[] | boolean[] | number[] | Uint8Array[] | BigNumber[]} param
* @param {boolean} dynamic
* @returns {ContractFunctionParameters}
*/
_addParam(param, dynamic) {
const index = this._selector._paramTypes.length - 1;
const value = argumentToBytes(param, this._selector._paramTypes[index]);
this._arguments.push({
dynamic,
value
});
return this;
}
/**
* @internal
* @param {string=} name
* @returns {Uint8Array}
*/
_build(name) {
const includeId = name != null;
const nameOffset = includeId ? 4 : 0;
const length = this._arguments.length === 0 ? nameOffset : this._arguments.length * 32 + this._arguments.map(arg => arg.dynamic ? arg.value.length : 0).reduce((sum, value) => sum + value) + nameOffset;
const func = new Uint8Array(length);
if (includeId) {
func.set(this._selector._build(name), 0);
}
let offset = 32 * this._arguments.length;
for (const [i, {
dynamic,
value
}] of this._arguments.entries()) {
if (dynamic) {
const view = util.safeView(func, nameOffset + i * 32 + 28);
view.setUint32(0, offset);
func.set(value, view.getUint32(0) + nameOffset);
offset += value.length;
} else {
func.set(value, nameOffset + i * 32);
}
}
return func;
}
}
/**
* @param {string | boolean | number | Uint8Array | BigNumber | string[] | boolean[] | number[] | Uint8Array[] | BigNumber[]} param
* @param {import("./ContractFunctionSelector.js").SolidityType} ty
* @returns {Uint8Array}
*/
exports.default = ContractFunctionParameters;
function argumentToBytes(param, ty) {
let value = new Uint8Array(32);
let valueView = util.safeView(value);
/** @type {Uint8Array} */
let par;
if (ty.array) {
if (!Array.isArray(param)) {
throw new TypeError("SolidityType indicates type is array, but parameter is not an array");
}
/**
* @type {Uint8Array[]}
*/
const values = [];
// Generic over any type of array
// Destructuring required so the first variable must be assigned
// eslint-disable-next-line @typescript-eslint/no-unused-vars
for (const [_, p] of param.entries()) {
const arg = argumentToBytes(p, {
ty: ty.ty,
array: false
});
values.push(arg);
}
const totalLengthOfValues = values.map(a => a.length).reduce((total, current) => total + current, 0);
switch (ty.ty) {
case _ContractFunctionSelector.ArgumentType.uint8:
case _ContractFunctionSelector.ArgumentType.int8:
case _ContractFunctionSelector.ArgumentType.uint16:
case _ContractFunctionSelector.ArgumentType.int16:
case _ContractFunctionSelector.ArgumentType.uint24:
case _ContractFunctionSelector.ArgumentType.int24:
case _ContractFunctionSelector.ArgumentType.uint32:
case _ContractFunctionSelector.ArgumentType.int32:
case _ContractFunctionSelector.ArgumentType.uint40:
case _ContractFunctionSelector.ArgumentType.int40:
case _ContractFunctionSelector.ArgumentType.uint48:
case _ContractFunctionSelector.ArgumentType.int48:
case _ContractFunctionSelector.ArgumentType.uint56:
case _ContractFunctionSelector.ArgumentType.int56:
case _ContractFunctionSelector.ArgumentType.uint64:
case _ContractFunctionSelector.ArgumentType.int64:
case _ContractFunctionSelector.ArgumentType.uint72:
case _ContractFunctionSelector.ArgumentType.int72:
case _ContractFunctionSelector.ArgumentType.uint80:
case _ContractFunctionSelector.ArgumentType.int80:
case _ContractFunctionSelector.ArgumentType.uint88:
case _ContractFunctionSelector.ArgumentType.int88:
case _ContractFunctionSelector.ArgumentType.uint96:
case _ContractFunctionSelector.ArgumentType.int96:
case _ContractFunctionSelector.ArgumentType.uint104:
case _ContractFunctionSelector.ArgumentType.int104:
case _ContractFunctionSelector.ArgumentType.uint112:
case _ContractFunctionSelector.ArgumentType.int112:
case _ContractFunctionSelector.ArgumentType.uint120:
case _ContractFunctionSelector.ArgumentType.int120:
case _ContractFunctionSelector.ArgumentType.uint128:
case _ContractFunctionSelector.ArgumentType.int128:
case _ContractFunctionSelector.ArgumentType.uint136:
case _ContractFunctionSelector.ArgumentType.int136:
case _ContractFunctionSelector.ArgumentType.uint144:
case _ContractFunctionSelector.ArgumentType.int144:
case _ContractFunctionSelector.ArgumentType.uint152:
case _ContractFunctionSelector.ArgumentType.int152:
case _ContractFunctionSelector.ArgumentType.uint160:
case _ContractFunctionSelector.ArgumentType.int160:
case _ContractFunctionSelector.ArgumentType.uint168:
case _ContractFunctionSelector.ArgumentType.int168:
case _ContractFunctionSelector.ArgumentType.uint176:
case _ContractFunctionSelector.ArgumentType.int176:
case _ContractFunctionSelector.ArgumentType.uint184:
case _ContractFunctionSelector.ArgumentType.int184:
case _ContractFunctionSelector.ArgumentType.uint192:
case _ContractFunctionSelector.ArgumentType.int192:
case _ContractFunctionSelector.ArgumentType.uint200:
case _ContractFunctionSelector.ArgumentType.int200:
case _ContractFunctionSelector.ArgumentType.uint208:
case _ContractFunctionSelector.ArgumentType.int208:
case _ContractFunctionSelector.ArgumentType.uint216:
case _ContractFunctionSelector.ArgumentType.int216:
case _ContractFunctionSelector.ArgumentType.uint224:
case _ContractFunctionSelector.ArgumentType.int224:
case _ContractFunctionSelector.ArgumentType.uint232:
case _ContractFunctionSelector.ArgumentType.int232:
case _ContractFunctionSelector.ArgumentType.uint240:
case _ContractFunctionSelector.ArgumentType.int240:
case _ContractFunctionSelector.ArgumentType.uint248:
case _ContractFunctionSelector.ArgumentType.int248:
case _ContractFunctionSelector.ArgumentType.uint256:
case _ContractFunctionSelector.ArgumentType.int256:
case _ContractFunctionSelector.ArgumentType.bool:
case _ContractFunctionSelector.ArgumentType.bytes32:
case _ContractFunctionSelector.ArgumentType.address:
case _ContractFunctionSelector.ArgumentType.func:
value = new Uint8Array(totalLengthOfValues + 32);
break;
case _ContractFunctionSelector.ArgumentType.bytes:
case _ContractFunctionSelector.ArgumentType.string:
value = new Uint8Array(values.length * 32 + totalLengthOfValues + 32);
break;
default:
throw new TypeError(`Expected param type to be ArgumentType, but received ${ty.ty}`);
}
valueView = util.safeView(value, 28);
valueView.setUint32(0, values.length);
let offset = 32 * values.length;
for (const [i, e] of values.entries()) {
switch (ty.ty) {
case _ContractFunctionSelector.ArgumentType.uint8:
case _ContractFunctionSelector.ArgumentType.int8:
case _ContractFunctionSelector.ArgumentType.uint16:
case _ContractFunctionSelector.ArgumentType.int16:
case _ContractFunctionSelector.ArgumentType.uint24:
case _ContractFunctionSelector.ArgumentType.int24:
case _ContractFunctionSelector.ArgumentType.uint32:
case _ContractFunctionSelector.ArgumentType.int32:
case _ContractFunctionSelector.ArgumentType.uint40:
case _ContractFunctionSelector.ArgumentType.int40:
case _ContractFunctionSelector.ArgumentType.uint48:
case _ContractFunctionSelector.ArgumentType.int48:
case _ContractFunctionSelector.ArgumentType.uint56:
case _ContractFunctionSelector.ArgumentType.int56:
case _ContractFunctionSelector.ArgumentType.uint64:
case _ContractFunctionSelector.ArgumentType.int64:
case _ContractFunctionSelector.ArgumentType.uint72:
case _ContractFunctionSelector.ArgumentType.int72:
case _ContractFunctionSelector.ArgumentType.uint80:
case _ContractFunctionSelector.ArgumentType.int80:
case _ContractFunctionSelector.ArgumentType.uint88:
case _ContractFunctionSelector.ArgumentType.int88:
case _ContractFunctionSelector.ArgumentType.uint96:
case _ContractFunctionSelector.ArgumentType.int96:
case _ContractFunctionSelector.ArgumentType.uint104:
case _ContractFunctionSelector.ArgumentType.int104:
case _ContractFunctionSelector.ArgumentType.uint112:
case _ContractFunctionSelector.ArgumentType.int112:
case _ContractFunctionSelector.ArgumentType.uint120:
case _ContractFunctionSelector.ArgumentType.int120:
case _ContractFunctionSelector.ArgumentType.uint128:
case _ContractFunctionSelector.ArgumentType.int128:
case _ContractFunctionSelector.ArgumentType.uint136:
case _ContractFunctionSelector.ArgumentType.int136:
case _ContractFunctionSelector.ArgumentType.uint144:
case _ContractFunctionSelector.ArgumentType.int144:
case _ContractFunctionSelector.ArgumentType.uint152:
case _ContractFunctionSelector.ArgumentType.int152:
case _ContractFunctionSelector.ArgumentType.uint160:
case _ContractFunctionSelector.ArgumentType.int160:
case _ContractFunctionSelector.ArgumentType.uint168:
case _ContractFunctionSelector.ArgumentType.int168:
case _ContractFunctionSelector.ArgumentType.uint176:
case _ContractFunctionSelector.ArgumentType.int176:
case _ContractFunctionSelector.ArgumentType.uint184:
case _ContractFunctionSelector.ArgumentType.int184:
case _ContractFunctionSelector.ArgumentType.uint192:
case _ContractFunctionSelector.ArgumentType.int192:
case _ContractFunctionSelector.ArgumentType.uint200:
case _ContractFunctionSelector.ArgumentType.int200:
case _ContractFunctionSelector.ArgumentType.uint208:
case _ContractFunctionSelector.ArgumentType.int208:
case _ContractFunctionSelector.ArgumentType.uint216:
case _ContractFunctionSelector.ArgumentType.int216:
case _ContractFunctionSelector.ArgumentType.uint224:
case _ContractFunctionSelector.ArgumentType.int224:
case _ContractFunctionSelector.ArgumentType.uint232:
case _ContractFunctionSelector.ArgumentType.int232:
case _ContractFunctionSelector.ArgumentType.uint240:
case _ContractFunctionSelector.ArgumentType.int240:
case _ContractFunctionSelector.ArgumentType.uint248:
case _ContractFunctionSelector.ArgumentType.int248:
case _ContractFunctionSelector.ArgumentType.uint256:
case _ContractFunctionSelector.ArgumentType.int256:
case _ContractFunctionSelector.ArgumentType.bool:
case _ContractFunctionSelector.ArgumentType.bytes32:
case _ContractFunctionSelector.ArgumentType.address:
case _ContractFunctionSelector.ArgumentType.func:
value.set(e, i * 32 + 32);
break;
case _ContractFunctionSelector.ArgumentType.bytes:
case _ContractFunctionSelector.ArgumentType.string:
// eslint-disable-next-line no-case-declarations
const view = util.safeView(value, (i + 1) * 32 + 28);
view.setUint32(0, offset);
value.set(e, view.getUint32(0) + 32);
offset += e.length;
break;
default:
throw new TypeError(`Expected param type to be ArgumentType, but received ${ty.ty}`);
}
}
return value;
}
switch (ty.ty) {
case _ContractFunctionSelector.ArgumentType.uint8:
case _ContractFunctionSelector.ArgumentType.int8:
case _ContractFunctionSelector.ArgumentType.uint16:
case _ContractFunctionSelector.ArgumentType.int16:
case _ContractFunctionSelector.ArgumentType.uint24:
case _ContractFunctionSelector.ArgumentType.int24:
case _ContractFunctionSelector.ArgumentType.uint32:
case _ContractFunctionSelector.ArgumentType.int32:
case _ContractFunctionSelector.ArgumentType.uint40:
case _ContractFunctionSelector.ArgumentType.int40:
case _ContractFunctionSelector.ArgumentType.uint48:
case _ContractFunctionSelector.ArgumentType.int48:
case _ContractFunctionSelector.ArgumentType.uint56:
case _ContractFunctionSelector.ArgumentType.int56:
case _ContractFunctionSelector.ArgumentType.uint64:
case _ContractFunctionSelector.ArgumentType.int64:
case _ContractFunctionSelector.ArgumentType.uint72:
case _ContractFunctionSelector.ArgumentType.int72:
case _ContractFunctionSelector.ArgumentType.uint80:
case _ContractFunctionSelector.ArgumentType.int80:
case _ContractFunctionSelector.ArgumentType.uint88:
case _ContractFunctionSelector.ArgumentType.int88:
case _ContractFunctionSelector.ArgumentType.uint96:
case _ContractFunctionSelector.ArgumentType.int96:
case _ContractFunctionSelector.ArgumentType.uint104:
case _ContractFunctionSelector.ArgumentType.int104:
case _ContractFunctionSelector.ArgumentType.uint112:
case _ContractFunctionSelector.ArgumentType.int112:
case _ContractFunctionSelector.ArgumentType.uint120:
case _ContractFunctionSelector.ArgumentType.int120:
case _ContractFunctionSelector.ArgumentType.uint128:
case _ContractFunctionSelector.ArgumentType.int128:
case _ContractFunctionSelector.ArgumentType.uint136:
case _ContractFunctionSelector.ArgumentType.int136:
case _ContractFunctionSelector.ArgumentType.uint144:
case _ContractFunctionSelector.ArgumentType.int144:
case _ContractFunctionSelector.ArgumentType.uint152:
case _ContractFunctionSelector.ArgumentType.int152:
case _ContractFunctionSelector.ArgumentType.uint160:
case _ContractFunctionSelector.ArgumentType.int160:
case _ContractFunctionSelector.ArgumentType.uint168:
ca