CrossmintWallets entry point used by the TS, Kotlin, and
Swift SDKs. For reactive state management (e.g. listening to wallet changes
in a widget tree), use CrossmintWalletController instead.
Unlike the controller, the facade does not auto-resolve signer configs.
Callers must provide fully-resolved configs (e.g. include the email address
in CrossmintEmailSignerConfig, or pre-create a device signer via
createDeviceSigner). The controller’s createWallet() auto-populates
the authenticated user’s email and creates device signer keys — the facade
intentionally skips this to remain stateless.
For email/phone OTP signers, pass onAuthRequired to handle OTP challenges.
For device signers, pass deviceSignerKeyStorage to enable key creation.
Constructors
CrossmintWallets.from
CrossmintWallets facade backed by client.

