Type specifications used by the library.
component() :: binary() | tuple()
composite_id() :: binary()
field() :: binary() | component() | [binary()] | [component()]
field_spec() :: [{atom(), tuple(), value_type(), integer() | nil}]
item_type() :: :field | :component | :repetition | :subcomponent
repetition() :: pos_integer()
segment_id() :: binary()
separators() :: tuple()
sequence() :: pos_integer()
subcomponent() :: binary() | tuple()
value() :: binary() | integer() | float() | Date.t() | NaiveDateTime.t()
value_type() :: :string | :integer | :float | :date | :datetime