UNPKG

@hashgraph/sdk

Version:
511 lines (510 loc) 14.3 kB
/** * @typedef {import("./ContractStateChange.js").default} ContractStateChange */ /** * @namespace proto * @typedef {import("@hashgraph/proto").proto.IContractFunctionResult} HieroProto.proto.IContractFunctionResult * @typedef {import("@hashgraph/proto").proto.IContractID} HieroProto.proto.IContractID */ /** * The result returned by a call to a smart contract function. This is part of the response to * a ContractCallLocal query, and is in the record for a ContractCall or ContractCreateInstance * transaction. The ContractCreateInstance transaction record has the results of the call to * the constructor. */ export default class ContractFunctionResult { /** * @param {HieroProto.proto.IContractFunctionResult} result * @param {boolean} _createResult * @returns {ContractFunctionResult} */ static _fromProtobuf(result: HieroProto.proto.IContractFunctionResult, _createResult: boolean): ContractFunctionResult; /** * Constructor isn't part of the stable API * * @param {object} result * @param {boolean} result._createResult * @param {?ContractId} result.contractId * @param {?string} result.errorMessage * @param {Uint8Array} result.bloom * @param {Long} result.gasUsed * @param {ContractLogInfo[]} result.logs * @param {ContractId[]} result.createdContractIds * @param {Uint8Array | null} result.evmAddress * @param {Uint8Array} result.bytes * @param {Long} result.gas * @param {Long} result.amount * @param {Uint8Array} result.functionParameters * @param {?AccountId} result.senderAccountId * @param {ContractStateChange[]} result.stateChanges * @param {ContractNonceInfo[]} result.contractNonces * @param {Long | null} result.signerNonce */ constructor(result: { _createResult: boolean; contractId: ContractId | null; errorMessage: string | null; bloom: Uint8Array; gasUsed: Long; logs: ContractLogInfo[]; createdContractIds: ContractId[]; evmAddress: Uint8Array | null; bytes: Uint8Array; gas: Long; amount: Long; functionParameters: Uint8Array; senderAccountId: AccountId | null; stateChanges: ContractStateChange[]; contractNonces: ContractNonceInfo[]; signerNonce: Long | null; }); /** * Determines if this result came from `record.contractCreateResult` if true * or `record.contractCallResult` if false */ _createResult: boolean; /** * The smart contract instance whose function was called. */ contractId: ContractId | null; bytes: Uint8Array<ArrayBufferLike>; /** * Message In case there was an error during smart contract execution. */ errorMessage: string | null; /** * Bloom filter for record */ bloom: Uint8Array<ArrayBufferLike>; /** * Units of gas used to execute contract. */ gasUsed: Long; /** * The log info for events returned by the function. */ logs: ContractLogInfo[]; /** * @deprecated the list of smart contracts that were created by the function call. * * The created ids will now _also_ be externalized through internal transaction * records, where each record has its alias field populated with the new contract's * EVM address. (This is needed for contracts created with CREATE2, since * there is no longer a simple relationship between the new contract's 0.0.X id * and its Solidity address.) */ createdContractIds: ContractId[]; evmAddress: Uint8Array<ArrayBufferLike> | null; /** * @deprecated - Use mirror node for contract traceability instead */ stateChanges: import("./ContractStateChange.js").default[]; /** * The amount of gas available for the call, aka the gasLimit. */ gas: Long; /** * Number of tinybars sent (the function must be payable if this is nonzero). */ amount: Long; /** * The parameters passed into the contract call. */ functionParameters: Uint8Array<ArrayBufferLike>; /** * The account that is the "sender." If not present it is the accountId from the transactionId. * * This field should only be populated when the paired TransactionBody in the record stream is not a * ContractCreateTransactionBody or a ContractCallTransactionBody. */ senderAccountId: AccountId | null; /** * A list of updated contract account nonces containing the new nonce value for each contract account. * This is always empty in a ContractCallLocalResponse#ContractFunctionResult message, since no internal creations can happen in a static EVM call. */ contractNonces: ContractNonceInfo[]; /** * If not null this field specifies what the value of the signer account nonce is post transaction execution. * For transactions that don't update the signer nonce (like HAPI ContractCall and ContractCreate transactions) this field should be null. */ signerNonce: Long | null; /** * @returns {Uint8Array} */ asBytes(): Uint8Array; /** * @param {number} [index] * @returns {string} */ getString(index?: number): string; /** * @private * @param {number} [index] * @returns {Uint8Array} */ private getBytes; /** * @param {number} [index] * @returns {Uint8Array} */ getBytes32(index?: number): Uint8Array; /** * @param {number} [index] * @returns {boolean} */ getBool(index?: number): boolean; /** * @param {number} [index] * @returns {number} */ getInt8(index?: number): number; /** * @param {number} [index] * @returns {number} */ getUint8(index?: number): number; /** * @param {number} [index] * @returns {number} */ getInt16(index?: number): number; /** * @param {number} [index] * @returns {number} */ getUint16(index?: number): number; /** * @param {number} [index] * @returns {number} */ getInt24(index?: number): number; /** * @param {number} [index] * @returns {number} */ getUint24(index?: number): number; /** * @param {number} [index] * @returns {number} */ getInt32(index?: number): number; /** * @param {number} [index] * @returns {number} */ getUint32(index?: number): number; /** * @param {number} [index] * @returns {BigNumber} */ getInt40(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint40(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt48(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint48(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt56(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint56(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt64(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint64(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt72(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint72(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt80(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint80(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt88(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint88(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt96(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint96(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt104(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint104(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt112(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint112(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt120(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint120(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt128(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint128(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt136(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint136(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt144(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint144(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt152(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint152(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt160(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint160(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt168(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint168(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt176(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint176(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt184(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint184(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt192(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint192(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt200(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint200(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt208(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint208(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt216(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint216(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt224(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint224(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt232(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint232(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt240(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint240(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt248(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint248(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getInt256(index?: number): BigNumber; /** * @param {number} [index] * @returns {BigNumber} */ getUint256(index?: number): BigNumber; /** * @param {number} [index] * @returns {string} */ getAddress(index?: number): string; /** * @description Decode the data according to the array of types, each of which may be a string or ParamType. * @param {Array<string | ParamType>} types * @returns {string | any} */ getResult(types: Array<string | ParamType>): string | any; /** * @param {number} [index] * @returns {Uint8Array} */ _getBytes32(index?: number): Uint8Array; /** * @returns {HieroProto.proto.IContractFunctionResult} */ _toProtobuf(): HieroProto.proto.IContractFunctionResult; } export type ContractStateChange = import("./ContractStateChange.js").default; export namespace HieroProto { namespace proto { type IContractFunctionResult = import("@hashgraph/proto").proto.IContractFunctionResult; type IContractID = import("@hashgraph/proto").proto.IContractID; } } import ContractId from "./ContractId.js"; import Long from "long"; import ContractLogInfo from "./ContractLogInfo.js"; import AccountId from "../account/AccountId.js"; import ContractNonceInfo from "./ContractNonceInfo.js"; import BigNumber from "bignumber.js"; import { ParamType } from "@ethersproject/abi";