SIGN IN SIGN UP

feat(client): fluent PrivacyBuilder over the wallet seam (#919)

client.build() opens a fluent builder that appends Strk20Actions and hands them to client.submit.
Token ops live under .with(token): deposit / withdraw / transfer / createOpenNote (an open note is a
transfer of the OPEN sentinel to the user — recipient from the new config.userAddress, so
createOpenNote takes no args). Top level: invoke / invokeWithComputation (call builders resolved at
call time with ${openNoteIds[N]} / ${poolAddress} placeholders the wallet substitutes), submit
(proves + broadcasts) and simulate (fee estimate). Open notes must precede the invoke that references
them (createOpenNote after an invoke throws). PrivacyClientConfig gains userAddress. 7 tests.

<!-- Reviewable:start -->
- - -
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/starkware-libs/starknet-privacy/919)
<!-- Reviewable:end -->
I
Ittay Dror committed
b364f6ff3e7d32dde925f7c350239b2eb32b81cb
Parent: 73720c6
Committed by GitHub <noreply@github.com> on 7/28/2026, 9:08:56 AM