UNPKG

@roochnetwork/rooch-sdk

Version:
77 lines (76 loc) 2.09 kB
import { sha3_256 } from "../utils/index.js"; import { normalizeRoochAddress } from "../address/index.js"; import { bcs, Serializer } from "../bcs/index.js"; class CallFunction { constructor(input) { const [pkg, mod, fn] = "target" in input ? input.target.split("::") : [input.address, input.module, input.function]; this.address = pkg; this.module = mod; this.function = fn; this.args = input.args || []; this.typeArgs = input.typeArgs?.map((item) => Serializer.typeTagToString(item)) || []; } functionId() { return `${normalizeRoochAddress(this.address)}::${this.module}::${this.function}`; } encodeArgs() { return this.args?.map((item) => item.encodeWithHex()); } encodeArgsWithUtf8() { return ""; } encodeArgsToByteArrays() { return this.args.map((item) => item.encode()).map((item) => Array.from(item)); } } class MoveAction { constructor(scheme, val) { this.scheme = scheme; this.val = val; } static newCallFunction(input) { return new MoveAction(1, new CallFunction(input)); } static newCallScript(input) { return new MoveAction(2, input); } } class TransactionData { constructor(action, maxGas, sender, sequenceNumber, chainId) { this.sender = sender; this.sequenceNumber = sequenceNumber; this.chainId = chainId; this.action = action; this.maxGas = maxGas; } encode() { const call = this.action.val; return bcs.RoochTransactionData.serialize({ sender: this.sender, sequenceNumber: this.sequenceNumber, chainId: this.chainId, maxGas: this.maxGas, action: { kind: "CallFunction", functionId: { moduleId: { address: call.address, name: call.module }, name: call.function }, args: Array.from(call.encodeArgsToByteArrays()), typeArgs: call.typeArgs } }); } hash() { return sha3_256(this.encode().toBytes()); } } export { CallFunction, MoveAction, TransactionData }; //# sourceMappingURL=transactionData.js.map