signerType—"email"or"phone".signerLocator— the identifier (email or phone number in E.164 form).needsAuth—truewhen the challenge starts,falsewhen it ends (e.g. after a successful verify).sendOtp/verifyOtp/reject— callbacks that drive the flow.
sendOtp to trigger delivery, then
verifyOtp(code) on submission or reject() on cancel. The
CrossmintWalletController.otp controller provides a ready-made
implementation that marshalls the challenge through a
ValueListenable — use that unless you need bespoke wiring.
