writeQuilt method
Upload a quilt (multi-file blob) in a single call.
Encodes all blobs into a quilt, uploads as a single Walrus blob,
and sets the _walrusBlobType: 'quilt' attribute.
Returns the blob ID, blob object ID, certify digest, and quilt index with patch IDs.
Mirrors the TS SDK's writeQuilt().
Implementation
Future<WriteQuiltResult> writeQuilt({
required List<QuiltBlob> blobs,
required int epochs,
required SuiAccount signer,
required bool deletable,
String? owner,
String? walCoinObjectId,
Map<String, String?>? attributes,
}) async {
final encoded = await encodeQuiltBlobs(blobs: blobs);
final result = await writeBlob(
blob: encoded.quilt,
epochs: epochs,
signer: signer,
deletable: deletable,
owner: owner,
walCoinObjectId: walCoinObjectId,
attributes: <String, String?>{'_walrusBlobType': 'quilt', ...?attributes},
);
// Compute patch IDs for each entry in the quilt index.
final patchesWithIds = encoded.index.patches.map((patch) {
return QuiltPatchResult(
startIndex: patch.startIndex,
endIndex: patch.endIndex,
identifier: patch.identifier,
tags: patch.tags,
patchId: encodeQuiltPatchId(
quiltBlobId: result.blobId,
version: 1,
startIndex: patch.startIndex,
endIndex: patch.endIndex,
),
);
}).toList();
return WriteQuiltResult(
blobId: result.blobId,
blobObjectId: result.blobObjectId,
certifyDigest: result.certifyDigest,
patches: patchesWithIds,
);
}