# `Cerberus.Session`
[🔗](https://github.com/ftes/cerberus/blob/v0.1.7/lib/cerberus/session.ex#L1)

Runtime session access protocol used by Cerberus drivers.

# `observed`

```elixir
@type observed() :: %{optional(String.t() | atom()) =&gt; term()}
```

# `operation`

```elixir
@type operation() ::
  :visit
  | :click
  | :fill_in
  | :select
  | :choose
  | :check
  | :uncheck
  | :upload
  | :submit
  | :assert_has
  | :refute_has
  | :assert_path
  | :refute_path
  | :unwrap
```

# `result`

```elixir
@type result() :: %{
  op: operation(),
  observed: observed() | nil,
  transition: transition() | nil
}
```

# `scope_value`

```elixir
@type scope_value() :: String.t() | observed() | nil
```

# `t`

```elixir
@type t() :: struct()
```

# `transition`

```elixir
@type transition() :: observed()
```

# `scope`

```elixir
@spec scope(t()) :: scope_value()
```

# `with_scope`

```elixir
@spec with_scope(t(), scope_value()) :: t()
```

---

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