wormhole/sui/testing/js/helpers/wormhole/testPublishMessage.ts

32 lines
928 B
TypeScript

import { SUI_CLOCK_OBJECT_ID, TransactionBlock } from "@mysten/sui.js";
export function addPrepareMessageAndPublishMessage(
tx: TransactionBlock,
wormholePackage: string,
wormholeStateId: string,
emitterCapId: string,
nonce: number,
payload: number[] | string
): TransactionBlock {
const [feeAmount] = tx.moveCall({
target: `${wormholePackage}::state::message_fee`,
arguments: [tx.object(wormholeStateId)],
});
const [wormholeFee] = tx.splitCoins(tx.gas, [feeAmount]);
const [messageTicket] = tx.moveCall({
target: `${wormholePackage}::publish_message::prepare_message`,
arguments: [tx.object(emitterCapId), tx.pure(nonce), tx.pure(payload)],
});
tx.moveCall({
target: `${wormholePackage}::publish_message::publish_message`,
arguments: [
tx.object(wormholeStateId),
wormholeFee,
messageTicket,
tx.object(SUI_CLOCK_OBJECT_ID),
],
});
return tx;
}