use futures::future::BoxFuture;

use crate::prelude::*;

/// An activity running in the background of a story
pub(crate) trait Activity {
    /// Finalise the activity within the given timeout.
    /// It is allowed for the activity to wait for completion
    /// for the duration of timeout. It is expected the activity
    /// will be killed after the timeout and report an error.
    fn finalise(&self, reporter: &Reporter, timeout: std::time::Duration)
        -> BoxFuture<'static, ()>;
}
