// Example: Build and submit a transaction synchronously using ABI and replay nonce.
import {
Aptos,
AptosConfig,
AccountAddress,
SimpleTransaction,
MoveFunction,
} from "@aptos-labs/ts-sdk";
const subaccountAddr = "0x..."; // Your subaccount address
const accountToDelegateTo = "0x..."; // Address to delegate trading to
const expirationTimestamp = undefined; // Optional: expiration timestamp in seconds
// Initialize Aptos config
const aptosConfig = new AptosConfig({
network: "mainnet",
fullnode: "https://fullnode.mainnet.aptoslabs.com",
});
const aptos = new Aptos(aptosConfig);
// ABI for delegate_trading_to function
const functionAbi: MoveFunction = {
name: "delegate_trading_to_for_subaccount",
visibility: "friend",
is_entry: true,
is_view: false,
generic_type_params: [],
params: ["&signer", "address", "address", "0x1::option::Option<u64>"],
return: [],
};
const replayProtectionNonce = generateRandomReplayProtectionNonce();
// Get gas price (from cache or network)
const gasUnitPrice = await aptos
.getGasPriceEstimation()
.then((r) => r.gas_estimate);
// Build transaction synchronously
const transaction = buildSimpleTransactionSync({
aptosConfig: aptos.config,
sender: account.accountAddress,
data: {
function: `${PACKAGE}::dex_accounts_entry::delegate_trading_to_for_subaccount`,
typeArguments: [],
functionArguments: [
subaccountAddr, // Subaccount address
accountToDelegateTo, // Address to delegate trading to
expirationTimestamp, // Optional expiration timestamp (can be undefined)
],
},
chainId: 1, // Mainnet chain ID
gasUnitPrice,
abi: functionAbi,
withFeePayer: false,
replayProtectionNonce,
});
// Sign and submit the transaction
const senderAuthenticator = aptos.transaction.sign({
signer: account,
transaction,
});
const pendingTransaction = await aptos.transaction.submit.simple({
transaction,
senderAuthenticator,
});
// Wait for transaction confirmation
const committedTransaction = await aptos.waitForTransaction({
transactionHash: pendingTransaction.hash,
});
console.log("Transaction confirmed:", committedTransaction.hash);