32 lines
928 B
TypeScript
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;
|
|
}
|