package wasi:clocks@0.2.0; /// WASI Monotonic Clock is a clock API intended to let users measure elapsed /// time. /// /// It is intended to be portable at least between Unix-family platforms and /// Windows. /// /// A monotonic clock is a clock which has an unspecified initial value, and /// successive reads of the clock will produce non-decreasing values. /// /// It is intended for measuring elapsed time. interface monotonic-clock { use wasi:io/poll@0.2.0.{pollable}; /// An instant in time, in nanoseconds. An instant is relative to an /// unspecified initial value, and can only be compared to instances from /// the same monotonic-clock. type instant = u64; /// A duration of time, in nanoseconds. type duration = u64; /// Read the current value of the clock. /// /// The clock is monotonic, therefore calling this function repeatedly will /// produce a sequence of non-decreasing values. now: func() -> instant; /// Query the resolution of the clock. Returns the duration of time /// corresponding to a clock tick. resolution: func() -> duration; /// Create a `pollable` which will resolve once the specified instant /// occured. subscribe-instant: func( when: instant, ) -> pollable; /// Create a `pollable` which will resolve once the given duration has /// elapsed, starting at the time at which this function was called. /// occured. subscribe-duration: func( when: duration, ) -> pollable; }