UNPKG

@q-dev/gdk-sdk

Version:

Typescript Library to interact with GDK Contracts

83 lines 4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getParameterValue = exports.getDecodeDataByABI = exports.getDecodeData = exports.getEncodedDataByABI = exports.getEncodedData = exports.getParameterValues = exports.getReadableParameters = exports.getReadableParameter = void 0; const ethers_1 = require("ethers"); const caster_1 = require("./caster"); const types_1 = require("../types"); const ABIImporter_1 = require("../abi/ABIImporter"); const getReadableParameter = (parameter) => { parameter.value = (0, exports.getParameterValue)(parameter); return parameter; }; exports.getReadableParameter = getReadableParameter; const getReadableParameters = (parameters) => { return parameters.map((parameter) => { return (0, exports.getReadableParameter)(parameter); }); }; exports.getReadableParameters = getReadableParameters; const getParameterValues = (parameters) => { return parameters.map((parameter) => { return (0, exports.getParameterValue)(parameter); }); }; exports.getParameterValues = getParameterValues; const getEncodedData = (abiName, name, ...args) => { const contractInterface = (0, ABIImporter_1.getEthersInterface)(`${abiName}.json`); return contractInterface.encodeFunctionData(name, [...args]); }; exports.getEncodedData = getEncodedData; const getEncodedDataByABI = (abi, name, ...args) => { const contractInterface = new ethers_1.ethers.utils.Interface(abi); return contractInterface.encodeFunctionData(name, [...args]); }; exports.getEncodedDataByABI = getEncodedDataByABI; const getDecodeData = (abiName, calldata) => { const contractInterface = (0, ABIImporter_1.getEthersInterface)(`${abiName}.json`); const decodedData = contractInterface.parseTransaction({ data: calldata, value: 0 }); return { functionName: decodedData.name, arguments: filterDecodedData((0, caster_1.cast)(Object.assign({}, decodedData.args))), abiFunction: contractInterface.getFunction(decodedData.sighash).format(ethers_1.ethers.utils.FormatTypes.full), }; }; exports.getDecodeData = getDecodeData; const getDecodeDataByABI = (abi, calldata) => { const contractInterface = new ethers_1.ethers.utils.Interface(abi); const decodedData = contractInterface.parseTransaction({ data: calldata, value: 0 }); return { functionName: decodedData.name, arguments: filterDecodedData((0, caster_1.cast)(Object.assign({}, decodedData.args))), abiFunction: contractInterface.getFunction(decodedData.sighash).format(ethers_1.ethers.utils.FormatTypes.full), }; }; exports.getDecodeDataByABI = getDecodeDataByABI; function filterDecodedData(rawObject) { if (rawObject.parameters_ === undefined && rawObject.parameter_ === undefined) { return rawObject; } return rawObject.parameters_ ? (0, exports.getReadableParameters)(rawObject.parameters_) : (0, exports.getReadableParameter)(rawObject.parameter_); } const getParameterValue = (parameter) => { const coder = new ethers_1.ethers.utils.AbiCoder(); if (String(parameter.solidityType) === types_1.ParameterType.ADDRESS.toString()) { return coder.decode(["address"], parameter.value)[0]; } else if (String(parameter.solidityType) === types_1.ParameterType.UINT256.toString()) { return coder.decode(["uint256"], parameter.value)[0].toString(); } else if (String(parameter.solidityType) === types_1.ParameterType.STRING.toString()) { return coder.decode(["string"], parameter.value)[0]; } else if (String(parameter.solidityType) === types_1.ParameterType.BYTES.toString()) { return parameter.value; } else if (String(parameter.solidityType) === types_1.ParameterType.BOOL.toString()) { return coder.decode(["bool"], parameter.value)[0]; } throw new Error("Parameter type not supported"); }; exports.getParameterValue = getParameterValue; //# sourceMappingURL=encoding-helper.js.map