-module(aion@duration).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/aion/duration.gleam").
-export([milliseconds/1, seconds/1, minutes/1, hours/1, days/1, to_milliseconds/1]).
-export_type([duration/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(" Canonical workflow duration quantities.\n").
-opaque duration() :: {duration, integer()}.
-file("src/aion/duration.gleam", 9).
?DOC(" Construct a duration from milliseconds.\n").
-spec milliseconds(integer()) -> duration().
milliseconds(Value) ->
{duration, Value}.
-file("src/aion/duration.gleam", 14).
?DOC(" Construct a duration from seconds.\n").
-spec seconds(integer()) -> duration().
seconds(Value) ->
{duration, Value * 1000}.
-file("src/aion/duration.gleam", 19).
?DOC(" Construct a duration from minutes.\n").
-spec minutes(integer()) -> duration().
minutes(Value) ->
{duration, (Value * 60) * 1000}.
-file("src/aion/duration.gleam", 24).
?DOC(" Construct a duration from hours.\n").
-spec hours(integer()) -> duration().
hours(Value) ->
{duration, ((Value * 60) * 60) * 1000}.
-file("src/aion/duration.gleam", 29).
?DOC(" Construct a duration from days.\n").
-spec days(integer()) -> duration().
days(Value) ->
{duration, (((Value * 24) * 60) * 60) * 1000}.
-file("src/aion/duration.gleam", 34).
?DOC(" Return the canonical millisecond representation used at the FFI boundary.\n").
-spec to_milliseconds(duration()) -> integer().
to_milliseconds(Duration) ->
erlang:element(2, Duration).