shieldControllerProvider top-level property
The shield flow state machine (Recv-3): open → proposeShield → ready → send →
result. Drives the shield sheet; Rust stays the single source of truth (design
invariant 1) — every money step forwards straight to the SDK and no money
state is cached here. Mirrors sendControllerProvider (non-autoDispose,
Riverpod 3.x has no AutoDisposeNotifier); a fresh sheet entry calls reset
then prepare.
Implementation
final shieldControllerProvider =
NotifierProvider<ShieldController, ShieldState>(ShieldController.new);