feat(client): PrivacyWallet seam (collapse the wallet-type zoo) (#913)
One polymorphic seam, no `kind`:
PrivacyWallet { partialCommitment; strk20PrepareInvoke; strk20InvokeTransaction }
- A get-starknet v6 wallet satisfies it directly — no wrapper, no separate
`Strk20Wallet` type. `address` is off the seam (self-defaulting is per-impl).
- The EVM/legacy-SN path becomes one upstack `SdkWallet` over an injected CallSet
`SignerInterface`; the old `EvmAccount` / `EvmBrowserWallet` / `EvmServerWallet` /
`Eip1193Provider` types (mere signer-construction args) are deleted.
- No wallet detection in the library: `detectStarknetWalletKind` + `StarknetWalletApi`
removed (vestigial from the `kind` design — the dapp constructs the wallet it wants;
v6-vs-legacy detection is a get-starknet concern).
- Client holds { wallet, provider, subAccountAnonymizerAddress } — the read context for
sub-account resolution; pool address lives in the SdkWallet's PrivateTransfers.
`PrivacyClient` is an opaque handle (build()/addresses() upstack); `partialCommitment`
is not public — the client uses it internally when resolving addresses.
- Kept: Strk20Action (+ STRK20_COMPUTE_AND_INVOKE_ACTION shim).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
<!-- 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/913)
<!-- Reviewable:end --> I
Ittay Dror committed
2f5b121d85dd17f1aff6c906e76a222dbbf406c6
Parent: c6c4153
Committed by GitHub <noreply@github.com>
on 7/22/2026, 2:41:57 PM