You can add your own custom elements to be compatible with Navigation by using the provided events. The below shows an example of how entries are set up.
Node types allow you to define your own type of nodes for various cases. You might like to have certain types of "Custom URL" nodes for instance.
You'll need to first create a class to implement your node type. Here's an example for a Group.
Here you can see there's various functions to enable or disable certain properties for your node type.
Lastly, you'll want to register this class with Navigation: