# `ExAST.Symbol.Definition`
[🔗](https://github.com/elixir-vibe/ex_ast/blob/v0.11.0/lib/ex_ast/symbol/definition.ex#L1)

A module, function, macro, callback, or attribute definition found in Elixir code.

# `kind`

```elixir
@type kind() ::
  :module
  | :def
  | :defp
  | :defmacro
  | :defmacrop
  | :defdelegate
  | :defcallback
  | :defmacrocallback
  | :attribute
```

# `t`

```elixir
@type t() :: %ExAST.Symbol.Definition{
  arity: non_neg_integer() | nil,
  column: pos_integer() | nil,
  kind: kind(),
  line: pos_integer() | nil,
  mfa: {module(), atom(), non_neg_integer()} | nil,
  module: String.t() | nil,
  name: String.t(),
  node: Macro.t(),
  qualified_name: String.t(),
  visibility: visibility()
}
```

# `visibility`

```elixir
@type visibility() :: :public | :private | nil
```

---

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