UNPKG

@layerzerolabs/lz-sui-sdk-v2

Version:

59 lines (51 loc) 2.07 kB
import { SuiClient } from '@mysten/sui/client' import { Transaction, TransactionArgument, TransactionResult } from '@mysten/sui/transactions' import { ModuleManager } from '../../module-manager' import { ObjectOptions } from '../../types' import { asObject } from '../../utils' const MODULE_NAME = 'executor_ptb_builder' export class ExecutorPtbBuilder { public packageId: string public readonly client: SuiClient private readonly objects: ObjectOptions constructor( packageId: string, client: SuiClient, objects: ObjectOptions, private readonly moduleManager: ModuleManager ) { this.packageId = packageId this.client = client this.objects = objects } // === Set Functions === /** * Creates a transaction to build Executor PTB * @param tx - The transaction to add the move call to * @param executorAddress - Executor object address or transaction argument * @param feelibAddress - Executor fee lib object address or transaction argument * @param priceFeedAddress - Price feed object address or transaction argument * @returns Transaction result containing get_fee and assign_job move calls */ buildExecutorPtbMoveCall( tx: Transaction, executorAddress: string | TransactionArgument, feelibAddress: string | TransactionArgument, priceFeedAddress: string | TransactionArgument ): TransactionResult { return tx.moveCall({ target: this.#target('build_executor_ptb'), arguments: [asObject(tx, executorAddress), asObject(tx, feelibAddress), asObject(tx, priceFeedAddress)], }) } /** * Generate the full target path for move calls * @param name - The function name to call * @param module_name - The module name (defaults to MODULE_NAME) * @returns The full module path for the move call * @private */ #target(name: string, module_name = MODULE_NAME): string { return `${this.packageId}::${module_name}::${name}` } }