@roochnetwork/rooch-sdk
Version:
77 lines (76 loc) • 2.09 kB
JavaScript
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