Drops any pending note without sending it (exposure was withdrawn: the model is no longer to be told).
Cancels any pending note. Call at teardown.
Sends the pending note now, if anything is pending. Safe to call at any time.
Records that the state changed. Arms the debounce timer if it is not already running; the timer is NOT re-armed by further changes, so a continuous stream of edits still produces a note every ChannelPerceptionOptions.DebounceMs rather than starving until it stops.
The id the change was assigned; the note carries the latest one.
Forgets what the model was told, so the NEXT note is a full snapshot. Used when the model starts seeing the channel again after exposure was withdrawn: whatever it was last told is stale.
Sets what the model is known to have been told, without sending anything — used right after a snapshot note went out by another route (e.g. when a channel opens), so the next change is described as a delta against it.
Coalesces state changes into debounced delta notes. One instance per channel instance.