executeExtendBlobTransaction method
Execute a transaction that extends a blob's validity period.
Automatically resolves WAL coins from the signer's account. Returns the transaction digest.
Mirrors the TS SDK's executeExtendBlobTransaction().
Implementation
Future<String> executeExtendBlobTransaction({
required String blobObjectId,
required int epochs,
required SuiAccount signer,
String? walCoinObjectId,
}) async {
final txBuilder = await _ensureTxBuilder();
// Resolve WAL coin if not provided.
String? walCoin = walCoinObjectId;
BigInt? cost;
if (walCoin == null) {
// [Inference] Extension cost estimation requires knowing the blob's
// encoded size. For now, let the Move call handle payment via gas
// fallback. Full implementation would read the blob object to get
// its encoded size, compute cost, and resolve a WAL coin.
}
final tx = txBuilder.extendBlobTransaction(
blobObjectId: blobObjectId,
epochs: epochs,
walCoinObjectId: walCoin,
extensionCost: cost,
walType: walCoin != null ? await getWalType() : null,
);
tx.setSender(signer.getAddress());
final result = await suiClient.signAndExecuteTransactionBlock(
signer,
tx,
responseOptions: SuiTransactionBlockResponseOptions(
showEffects: true,
showObjectChanges: true,
),
);
return result.digest;
}