// 1. Build the calldata (nothing submitted)
val prepared = withContext(Dispatchers.IO) {
sdk.prepareShield(
tokenAddress = "0x...",
amount = "1000000000000000000",
recipient = null // pass a privacy address to shield to someone else
)
}
// prepared.wrap / prepared.approve / prepared.shield are Call(to, value, data)
// values — relay them in order (wrap?, approve?, shield).
val calls = listOfNotNull(prepared.wrap, prepared.approve, prepared.shield)
val receipt = myRelayer.submit(calls)
// 2. Finalize from the mined receipt to recover the request id
val result = finalizeShield(
receipt = receipt,
shieldContract = prepared.finalize.shieldContract,
commitment = prepared.commitment
)
println("Request ID: ${result.requestId}")