# Signatures use named types

A function, action or query can't take or return a built-in representation
type directly. `Text`, `Int`, `Bool`, `Uuid`, the time types, and the forms
of them that may be `none`, are each wrapped in a named type that says what
the value means.

```jadpo
type CustomerNote = Text {
    max_length: 500
}

type NoteWasEdited = Bool {}

function edited(before: CustomerNote, after: CustomerNote) -> NoteWasEdited {
    return NoteWasEdited(before != after)
}
```

`Email`, `Url`, `IpAddress`, objects, enums, field types and `Unit` are
allowed. Inside a body, local variables can still hold built-in types.
