UNPKG

@hiero-ledger/sdk

Version:
3 lines (2 loc) 16.8 kB
import t,{ArgumentType as a,solidityTypeToString as r}from"./ContractFunctionSelector.js";import{encode as d}from"../encoding/utf8.js";import{decode as e}from"../encoding/hex.js";import"bignumber.js";import{convertToBigNumber as s,convertToBigNumberArray as n,safeView as i}from"../util.js";import{defaultAbiCoder as c}from"@ethersproject/abi";import{arrayify as h}from"@ethersproject/bytes";class _{constructor(){this._selector=new t,this._arguments=[]}addString(t){return this._selector.addString(),this._addParam(t,!0)}addStringArray(t){return this._selector.addStringArray(),this._addParam(t,!0)}addBytes(t){return this._selector.addBytes(),this._addParam(t,!0)}addBytes32(t){if(32!==t.length)throw new Error(`addBytes32 expected array to be of length 32, but received ${t.length}`);return this._selector.addBytes32(),this._addParam(t,!1)}addBytesArray(t){return this._selector.addBytesArray(),this._addParam(t,!0)}addBytes32Array(t){for(const[a,r]of t.entries())if(32!==r.length)throw new Error(`addBytes32 expected array to be of length 32, but received ${r.length}`);return this._selector.addBytes32Array(),this._addParam(t,!0)}addBool(t){return this._selector.addBool(),this._addParam(t,!1)}addInt8(t){return this._selector.addInt8(),this._addParam(s(t),!1)}addUint8(t){return this._selector.addUint8(),this._addParam(s(t),!1)}addInt16(t){return this._selector.addInt16(),this._addParam(s(t),!1)}addUint16(t){return this._selector.addUint16(),this._addParam(s(t),!1)}addInt24(t){return this._selector.addInt24(),this._addParam(s(t),!1)}addUint24(t){return this._selector.addUint24(),this._addParam(s(t),!1)}addInt32(t){return this._selector.addInt32(),this._addParam(s(t),!1)}addUint32(t){return this._selector.addUint32(),this._addParam(s(t),!1)}addInt40(t){return this._selector.addInt40(),this._addParam(s(t),!1)}addUint40(t){return this._selector.addUint40(),this._addParam(s(t),!1)}addInt48(t){return this._selector.addInt48(),this._addParam(s(t),!1)}addUint48(t){return this._selector.addUint48(),this._addParam(s(t),!1)}addInt56(t){return this._selector.addInt56(),this._addParam(s(t),!1)}addUint56(t){return this._selector.addUint56(),this._addParam(s(t),!1)}addInt64(t){return this._selector.addInt64(),this._addParam(s(t),!1)}addUint64(t){return this._selector.addUint64(),this._addParam(s(t),!1)}addInt72(t){return this._selector.addInt72(),this._addParam(s(t),!1)}addUint72(t){return this._selector.addUint72(),this._addParam(s(t),!1)}addInt80(t){return this._selector.addInt80(),this._addParam(s(t),!1)}addUint80(t){return this._selector.addUint80(),this._addParam(s(t),!1)}addInt88(t){return this._selector.addInt88(),this._addParam(s(t),!1)}addUint88(t){return this._selector.addUint88(),this._addParam(s(t),!1)}addInt96(t){return this._selector.addInt96(),this._addParam(s(t),!1)}addUint96(t){return this._selector.addUint96(),this._addParam(s(t),!1)}addInt104(t){return this._selector.addInt104(),this._addParam(s(t),!1)}addUint104(t){return this._selector.addUint104(),this._addParam(s(t),!1)}addInt112(t){return this._selector.addInt112(),this._addParam(s(t),!1)}addUint112(t){return this._selector.addUint112(),this._addParam(s(t),!1)}addInt120(t){return this._selector.addInt120(),this._addParam(s(t),!1)}addUint120(t){return this._selector.addUint120(),this._addParam(s(t),!1)}addInt128(t){return this._selector.addInt128(),this._addParam(s(t),!1)}addUint128(t){return this._selector.addUint128(),this._addParam(s(t),!1)}addInt136(t){return this._selector.addInt136(),this._addParam(s(t),!1)}addUint136(t){return this._selector.addUint136(),this._addParam(s(t),!1)}addInt144(t){return this._selector.addInt144(),this._addParam(s(t),!1)}addUint144(t){return this._selector.addUint144(),this._addParam(s(t),!1)}addInt152(t){return this._selector.addInt152(),this._addParam(s(t),!1)}addUint152(t){return this._selector.addUint152(),this._addParam(s(t),!1)}addInt160(t){return this._selector.addInt160(),this._addParam(s(t),!1)}addUint160(t){return this._selector.addUint160(),this._addParam(s(t),!1)}addInt168(t){return this._selector.addInt168(),this._addParam(s(t),!1)}addUint168(t){return this._selector.addUint168(),this._addParam(s(t),!1)}addInt176(t){return this._selector.addInt176(),this._addParam(s(t),!1)}addUint176(t){return this._selector.addUint176(),this._addParam(s(t),!1)}addInt184(t){return this._selector.addInt184(),this._addParam(s(t),!1)}addUint184(t){return this._selector.addUint184(),this._addParam(s(t),!1)}addInt192(t){return this._selector.addInt192(),this._addParam(s(t),!1)}addUint192(t){return this._selector.addUint192(),this._addParam(s(t),!1)}addInt200(t){return this._selector.addInt200(),this._addParam(s(t),!1)}addUint200(t){return this._selector.addUint200(),this._addParam(s(t),!1)}addInt208(t){return this._selector.addInt208(),this._addParam(s(t),!1)}addUint208(t){return this._selector.addUint208(),this._addParam(s(t),!1)}addInt216(t){return this._selector.addInt216(),this._addParam(s(t),!1)}addUint216(t){return this._selector.addUint216(),this._addParam(s(t),!1)}addInt224(t){return this._selector.addInt224(),this._addParam(s(t),!1)}addUint224(t){return this._selector.addUint224(),this._addParam(s(t),!1)}addInt232(t){return this._selector.addInt232(),this._addParam(s(t),!1)}addUint232(t){return this._selector.addUint232(),this._addParam(s(t),!1)}addInt240(t){return this._selector.addInt240(),this._addParam(s(t),!1)}addUint240(t){return this._selector.addUint240(),this._addParam(s(t),!1)}addInt248(t){return this._selector.addInt248(),this._addParam(s(t),!1)}addUint248(t){return this._selector.addUint248(),this._addParam(s(t),!1)}addInt256(t){return this._selector.addInt256(),this._addParam(s(t),!1)}addUint256(t){return this._selector.addUint256(),this._addParam(s(t),!1)}addInt8Array(t){return this._selector.addInt8Array(),this._addParam(n(t),!0)}addUint8Array(t){return this._selector.addUint8Array(),this._addParam(n(t),!0)}addInt16Array(t){return this._selector.addInt16Array(),this._addParam(n(t),!0)}addUint16Array(t){return this._selector.addUint16Array(),this._addParam(n(t),!0)}addInt24Array(t){return this._selector.addInt24Array(),this._addParam(n(t),!0)}addUint24Array(t){return this._selector.addUint24Array(),this._addParam(n(t),!0)}addInt32Array(t){return this._selector.addInt32Array(),this._addParam(n(t),!0)}addUint32Array(t){return this._selector.addUint32Array(),this._addParam(n(t),!0)}addInt40Array(t){return this._selector.addInt40Array(),this._addParam(n(t),!0)}addUint40Array(t){return this._selector.addUint40Array(),this._addParam(n(t),!0)}addInt48Array(t){return this._selector.addInt48Array(),this._addParam(n(t),!0)}addUint48Array(t){return this._selector.addUint48Array(),this._addParam(n(t),!0)}addInt56Array(t){return this._selector.addInt56Array(),this._addParam(n(t),!0)}addUint56Array(t){return this._selector.addUint56Array(),this._addParam(n(t),!0)}addInt64Array(t){return this._selector.addInt64Array(),this._addParam(n(t),!0)}addUint64Array(t){return this._selector.addUint64Array(),this._addParam(n(t),!0)}addInt72Array(t){return this._selector.addInt72Array(),this._addParam(n(t),!0)}addUint72Array(t){return this._selector.addUint72Array(),this._addParam(n(t),!0)}addInt80Array(t){return this._selector.addInt80Array(),this._addParam(n(t),!0)}addUint80Array(t){return this._selector.addUint80Array(),this._addParam(n(t),!0)}addInt88Array(t){return this._selector.addInt88Array(),this._addParam(n(t),!0)}addUint88Array(t){return this._selector.addUint88Array(),this._addParam(n(t),!0)}addInt96Array(t){return this._selector.addInt96Array(),this._addParam(n(t),!0)}addUint96Array(t){return this._selector.addUint96Array(),this._addParam(n(t),!0)}addInt104Array(t){return this._selector.addInt104Array(),this._addParam(n(t),!0)}addUint104Array(t){return this._selector.addUint104Array(),this._addParam(n(t),!0)}addInt112Array(t){return this._selector.addInt112Array(),this._addParam(n(t),!0)}addUint112Array(t){return this._selector.addUint112Array(),this._addParam(n(t),!0)}addInt120Array(t){return this._selector.addInt120Array(),this._addParam(n(t),!0)}addUint120Array(t){return this._selector.addUint120Array(),this._addParam(n(t),!0)}addInt128Array(t){return this._selector.addInt128Array(),this._addParam(n(t),!0)}addUint128Array(t){return this._selector.addUint128Array(),this._addParam(n(t),!0)}addInt136Array(t){return this._selector.addInt136Array(),this._addParam(n(t),!0)}addUint136Array(t){return this._selector.addUint136Array(),this._addParam(n(t),!0)}addInt144Array(t){return this._selector.addInt144Array(),this._addParam(n(t),!0)}addUint144Array(t){return this._selector.addUint144Array(),this._addParam(n(t),!0)}addInt152Array(t){return this._selector.addInt152Array(),this._addParam(n(t),!0)}addUint152Array(t){return this._selector.addUint152Array(),this._addParam(n(t),!0)}addInt160Array(t){return this._selector.addInt160Array(),this._addParam(n(t),!0)}addUint160Array(t){return this._selector.addUint160Array(),this._addParam(n(t),!0)}addInt168Array(t){return this._selector.addInt168Array(),this._addParam(n(t),!0)}addUint168Array(t){return this._selector.addUint168Array(),this._addParam(n(t),!0)}addInt176Array(t){return this._selector.addInt176Array(),this._addParam(n(t),!0)}addUint176Array(t){return this._selector.addUint176Array(),this._addParam(n(t),!0)}addInt184Array(t){return this._selector.addInt184Array(),this._addParam(n(t),!0)}addUint184Array(t){return this._selector.addUint184Array(),this._addParam(n(t),!0)}addInt192Array(t){return this._selector.addInt192Array(),this._addParam(n(t),!0)}addUint192Array(t){return this._selector.addUint192Array(),this._addParam(n(t),!0)}addInt200Array(t){return this._selector.addInt200Array(),this._addParam(n(t),!0)}addUint200Array(t){return this._selector.addUint200Array(),this._addParam(n(t),!0)}addInt208Array(t){return this._selector.addInt208Array(),this._addParam(n(t),!0)}addUint208Array(t){return this._selector.addUint208Array(),this._addParam(n(t),!0)}addInt216Array(t){return this._selector.addInt216Array(),this._addParam(n(t),!0)}addUint216Array(t){return this._selector.addUint216Array(),this._addParam(n(t),!0)}addInt224Array(t){return this._selector.addInt224Array(),this._addParam(n(t),!0)}addUint224Array(t){return this._selector.addUint224Array(),this._addParam(n(t),!0)}addInt232Array(t){return this._selector.addInt232Array(),this._addParam(n(t),!0)}addUint232Array(t){return this._selector.addUint232Array(),this._addParam(n(t),!0)}addInt240Array(t){return this._selector.addInt240Array(),this._addParam(n(t),!0)}addUint240Array(t){return this._selector.addUint240Array(),this._addParam(n(t),!0)}addInt248Array(t){return this._selector.addInt248Array(),this._addParam(n(t),!0)}addUint248Array(t){return this._selector.addUint248Array(),this._addParam(n(t),!0)}addInt256Array(t){return this._selector.addInt256Array(),this._addParam(n(t),!0)}addUint256Array(t){return this._selector.addUint256Array(),this._addParam(n(t),!0)}addAddress(t){let a;if("string"==typeof t){if(40!==t.length&&42!==t.length)throw new Error("`address` type requires parameter to be 40 or 42 characters");a=t}else a=t.toString();const r=40===a.length?e(a):e(a.substring(2));return this._selector.addAddress(),this._addParam(r,!1)}addAddressArray(t){const a=[];for(const[r,d]of t.entries()){let t;if("string"==typeof d){if(40!==d.length&&42!==d.length)throw new Error("`address` type requires parameter to be 40 or 42 characters");t=d}else t=d.toString();const r=40===t.length?e(t):e(t.substring(2));a.push(r)}return this._selector.addAddressArray(),this._addParam(a,!0)}addFunction(t,a){const r=e(t),d=a._build();if(20!==r.length)throw new Error("`function` type requires parameter `address` to be exactly 20 bytes");this._selector.addFunction();const s=new Uint8Array(24);return s.set(r,0),s.set(d,20),this._addParam(s,!1)}_addParam(t,a){const r=this._selector._paramTypes.length-1,d=u(t,this._selector._paramTypes[r]);return this._arguments.push({dynamic:a,value:d}),this}_build(t){const a=null!=t,r=a?4:0,d=0===this._arguments.length?r:32*this._arguments.length+this._arguments.map((t=>t.dynamic?t.value.length:0)).reduce(((t,a)=>t+a))+r,e=new Uint8Array(d);a&&e.set(this._selector._build(t),0);let s=32*this._arguments.length;for(const[t,{dynamic:a,value:d}]of this._arguments.entries())if(a){const a=i(e,r+32*t+28);a.setUint32(0,s),e.set(d,a.getUint32(0)+r),s+=d.length}else e.set(d,r+32*t);return e}}function u(t,e){let s,n=new Uint8Array(32),_=i(n);if(e.array){if(!Array.isArray(t))throw new TypeError("SolidityType indicates type is array, but parameter is not an array");const r=[];for(const[a,d]of t.entries()){const t=u(d,{ty:e.ty,array:!1});r.push(t)}const d=r.map((t=>t.length)).reduce(((t,a)=>t+a),0);switch(e.ty){case a.uint8:case a.int8:case a.uint16:case a.int16:case a.uint24:case a.int24:case a.uint32:case a.int32:case a.uint40:case a.int40:case a.uint48:case a.int48:case a.uint56:case a.int56:case a.uint64:case a.int64:case a.uint72:case a.int72:case a.uint80:case a.int80:case a.uint88:case a.int88:case a.uint96:case a.int96:case a.uint104:case a.int104:case a.uint112:case a.int112:case a.uint120:case a.int120:case a.uint128:case a.int128:case a.uint136:case a.int136:case a.uint144:case a.int144:case a.uint152:case a.int152:case a.uint160:case a.int160:case a.uint168:case a.int168:case a.uint176:case a.int176:case a.uint184:case a.int184:case a.uint192:case a.int192:case a.uint200:case a.int200:case a.uint208:case a.int208:case a.uint216:case a.int216:case a.uint224:case a.int224:case a.uint232:case a.int232:case a.uint240:case a.int240:case a.uint248:case a.int248:case a.uint256:case a.int256:case a.bool:case a.bytes32:case a.address:case a.func:n=new Uint8Array(d+32);break;case a.bytes:case a.string:n=new Uint8Array(32*r.length+d+32);break;default:throw new TypeError(`Expected param type to be ArgumentType, but received ${e.ty}`)}_=i(n,28),_.setUint32(0,r.length);let s=32*r.length;for(const[t,d]of r.entries())switch(e.ty){case a.uint8:case a.int8:case a.uint16:case a.int16:case a.uint24:case a.int24:case a.uint32:case a.int32:case a.uint40:case a.int40:case a.uint48:case a.int48:case a.uint56:case a.int56:case a.uint64:case a.int64:case a.uint72:case a.int72:case a.uint80:case a.int80:case a.uint88:case a.int88:case a.uint96:case a.int96:case a.uint104:case a.int104:case a.uint112:case a.int112:case a.uint120:case a.int120:case a.uint128:case a.int128:case a.uint136:case a.int136:case a.uint144:case a.int144:case a.uint152:case a.int152:case a.uint160:case a.int160:case a.uint168:case a.int168:case a.uint176:case a.int176:case a.uint184:case a.int184:case a.uint192:case a.int192:case a.uint200:case a.int200:case a.uint208:case a.int208:case a.uint216:case a.int216:case a.uint224:case a.int224:case a.uint232:case a.int232:case a.uint240:case a.int240:case a.uint248:case a.int248:case a.uint256:case a.int256:case a.bool:case a.bytes32:case a.address:case a.func:n.set(d,32*t+32);break;case a.bytes:case a.string:const r=i(n,32*(t+1)+28);r.setUint32(0,s),n.set(d,r.getUint32(0)+32),s+=d.length;break;default:throw new TypeError(`Expected param type to be ArgumentType, but received ${e.ty}`)}return n}switch(e.ty){case a.uint8:case a.int8:case a.uint16:case a.int16:case a.uint24:case a.int24:case a.uint32:case a.int32:case a.uint40:case a.int40:case a.uint48:case a.int48:case a.uint56:case a.int56:case a.uint64:case a.int64:case a.uint72:case a.int72:case a.uint80:case a.int80:case a.uint88:case a.int88:case a.uint96:case a.int96:case a.uint104:case a.int104:case a.uint112:case a.int112:case a.uint120:case a.int120:case a.uint128:case a.int128:case a.uint136:case a.int136:case a.uint144:case a.int144:case a.uint152:case a.int152:case a.uint160:case a.int160:case a.uint168:case a.int168:case a.uint176:case a.int176:case a.uint184:case a.int184:case a.uint192:case a.int192:case a.uint200:case a.int200:case a.uint208:case a.int208:case a.uint216:case a.int216:case a.uint224:case a.int224:case a.uint232:case a.int232:case a.uint240:case a.int240:case a.uint248:case a.int248:case a.int256:case a.uint256:{let a=t.toString(16);a=t>0||0==t?"0x"+a:a.slice(0,1)+"0x"+a.slice(1);const d=c.encode([r(e)],[a]);return h(d)}case a.address:return n.set(t,12),n;case a.bool:return n[31]=t?1:0,n;case a.func:return n.set(t,8),n;case a.bytes32:return n.set(t,0),n;case a.bytes:case a.string:return s=t instanceof Uint8Array?t:d(t),n=Math.floor(s.length/32)>=0?0!==Math.floor(s.length%32)?new Uint8Array(32*(Math.floor(s.length/32)+1)+32):new Uint8Array(32*Math.floor(s.length/32)+32):new Uint8Array(64),n.set(s,32),_=i(n,28),_.setUint32(0,s.length),n;default:throw new Error(`Unsupported argument type: ${e.toString()}`)}}export{_ as default}; //# sourceMappingURL=ContractFunctionParameters.js.map