// 1. Build the calldata (nothing submitted)
let prepared = try await sdk.prepareShield(
tokenAddress: "0x...",
amount: "1000000000000000000",
recipient: nil // 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).
let calls = [prepared.wrap, prepared.approve, prepared.shield].compactMap { $0 }
let receipt = try await myRelayer.submit(calls)
// 2. Finalize from the mined receipt to recover the request id
let result = try finalizeShield(
receipt: receipt,
shieldContract: prepared.finalize.shieldContract,
commitment: prepared.commitment
)
print("Request ID: \(result.requestId)")