@hashgraph/sdk
Version:
511 lines (510 loc) • 14.3 kB
TypeScript
/**
* @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";