import { finalizeShield } from '@sunnyside-io/privacy-boost';
// 1. Build the calldata (no wallet, nothing submitted)
const prepared = await sdk.vault.prepareShield({
tokenAddress: '0x...',
amount: 1000000000000000000n,
// recipient: '0x04...', // omit to shield to yourself
});
// prepared.wrap? / prepared.approve? / prepared.shield are { to, value, data }
// calls — relay them in order (wrap?, approve?, shield).
const calls = [prepared.wrap, prepared.approve, prepared.shield].filter(Boolean);
const receipt = await myRelayer.submit(calls);
// 2. Finalize from the mined receipt to recover the request id. finalizeShield
// is a stateless top-level export — it parses the receipt and needs no session.
const result = await finalizeShield({
receipt,
shieldContract: prepared.finalize.shieldContract,
commitment: prepared.commitment,
});
console.log('Request ID:', result.requestId);