# `DripDrop.Timing`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/timing.ex#L1)

Embedded timing configuration for sequence steps.

# `calculate_next_run`

```elixir
@spec calculate_next_run(
  %DripDrop.Timing{
    cron_expression: term(),
    delay_amount: term(),
    delay_unit: term(),
    human_expression: term(),
    timezone: term(),
    trigger_data: term(),
    trigger_event: term(),
    type: term()
  },
  DateTime.t()
) :: {:ok, DateTime.t()} | {:event, String.t()} | {:error, term()}
```

Calculates the next runtime for a timing config.

# `changeset`

```elixir
@spec changeset(Ecto.Schema.t(), map()) :: Ecto.Changeset.t()
```

Builds a changeset for embedded step timing configuration.

# `parse_human_friendly`

```elixir
@spec parse_human_friendly(String.t()) :: {:ok, map()} | {:error, String.t()}
```

Parses the documented human-friendly timing expressions.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
