AlertNotifier
Builds + posts the HEADS-UP alert (#264 inbound): a high-importance, dismissible notification that pulls the user BACK to the app when something needs them — a tracked operation awaiting their input ("your turn"), or funds arriving ("received N NIGHT").
It's deliberately the loudest of the three notifier types, because its whole job is to SUMMON:
SyncNotifier — ongoing progress, silent + persistent (you're watching it work).
FinalizationNotifier — completion push, default importance (it's done, no rush).
this — alerting, heads-up + sound once (come back, something needs you NOW).
Its own HIGH-importance channel; auto-cancels on tap; alerts once. The caller (the FGS attach observer / the incoming-tx watcher) is responsible for SUPPRESSING it when the user is already looking — there's no point summoning someone who's here.
Functions
Create the alert channel once (idempotent). HIGH importance → heads-up + sound.
Post a "your turn" alert for an operation that needs the user (#264 inbound).
Post a received-funds alert (#264 inbound). contentIntent null → opens the app. Uses a DISTINCT id per receipt (rolling) so a later receipt heads-up on its own instead of silently updating an earlier one (the setOnlyAlertOnce would otherwise mute it).