# Types equipped with endomorphisms
```agda
module structured-types.types-equipped-with-endomorphisms where
```
<details><summary>Imports</summary>
```agda
open import foundation.dependent-pair-types
open import foundation.endomorphisms
open import foundation.function-types
open import foundation.unit-type
open import foundation.universe-levels
```
</details>
## Idea
A type equipped with an endomorphism consists of a type `A` equipped with a map
`A → A`.
## Definitions
### Types equipped with endomorphisms
```agda
Type-With-Endomorphism : (l : Level) → UU (lsuc l)
Type-With-Endomorphism l = Σ (UU l) endo
module _
{l : Level} (X : Type-With-Endomorphism l)
where
type-Type-With-Endomorphism : UU l
type-Type-With-Endomorphism = pr1 X
endomorphism-Type-With-Endomorphism :
type-Type-With-Endomorphism → type-Type-With-Endomorphism
endomorphism-Type-With-Endomorphism = pr2 X
```
## Example
### Unit type equipped with endomorphisms
```agda
trivial-Type-With-Endomorphism : {l : Level} → Type-With-Endomorphism l
pr1 (trivial-Type-With-Endomorphism {l}) = raise-unit l
pr2 trivial-Type-With-Endomorphism = id
```