Represents the base interface for progress tracking.
An optional message describing the current progress.
The progress thus far. This should increase every time progress is made, even if the total is unknown.
Total number of items to a process (or total progress required), if known.