use crate::workflow::runtime::timer::{
TimerAuthorityWorkflow, recovery_watchdog_identity, require_active,
};
use ic_timers::TimerRunResult;
use std::{future::Future, time::Duration};
pub use crate::workflow::runtime::timer::TimerError;
#[doc(hidden)]
pub struct TimerApi;
impl TimerApi {
#[doc(hidden)]
pub fn initialize_nonroot_runtime_required() {
TimerAuthorityWorkflow::initialize_nonroot_runtime()
.unwrap_or_else(|error| ic_cdk::trap(format!("timer runtime init failed: {error}")));
}
#[doc(hidden)]
pub fn initialize_root_runtime_required() {
TimerAuthorityWorkflow::initialize_root_runtime()
.unwrap_or_else(|error| ic_cdk::trap(format!("timer runtime init failed: {error}")));
}
#[doc(hidden)]
pub fn initialize_shared_runtime_required() {
TimerAuthorityWorkflow::initialize_shared_runtime()
.unwrap_or_else(|error| ic_cdk::trap(format!("timer runtime init failed: {error}")));
}
#[doc(hidden)]
pub fn restore_snapshot_suspension(sealed: bool) {
TimerAuthorityWorkflow::restore_snapshot_suspension(sealed);
}
#[doc(hidden)]
pub fn require_root_authority_snapshot_resumable() -> Result<(), TimerError> {
TimerAuthorityWorkflow::require_root_resumable()
}
#[doc(hidden)]
pub fn require_active() -> Result<(), TimerError> {
require_active()
}
#[doc(hidden)]
pub fn recovery_watchdog_identity() -> Result<ic_timers::TimerIdentity, TimerError> {
recovery_watchdog_identity()
}
#[doc(hidden)]
#[must_use]
pub fn recover_expired_async_jobs(now_ns: u64) -> u64 {
TimerAuthorityWorkflow::recover_expired_async_jobs(now_ns)
}
#[doc(hidden)]
#[must_use]
pub fn recover_expired_root_async_jobs(now_ns: u64) -> u64 {
TimerAuthorityWorkflow::recover_expired_async_jobs_with_automatic_topup(now_ns)
}
#[doc(hidden)]
pub fn defer_lifecycle_required(
delay: Duration,
label: impl Into<String>,
task: impl Future<Output = ()> + 'static,
) {
TimerAuthorityWorkflow::defer_lifecycle_once(delay, label, task)
.unwrap_or_else(|error| ic_cdk::trap(format!("lifecycle timer rejected: {error}")));
}
#[doc(hidden)]
pub fn defer_lifecycle_result_required(
delay: Duration,
label: impl Into<String>,
task: impl Future<Output = TimerRunResult> + 'static,
) {
TimerAuthorityWorkflow::defer_lifecycle_result_once(delay, label, task)
.unwrap_or_else(|error| ic_cdk::trap(format!("lifecycle timer rejected: {error}")));
}
}