I think what you are referring to are the trait classes. They can be only used to provide additional information on specific types. If your typedefs are not type-related, they cannot be grouped around types, and trait classes are not the way to go.
Generally they look like
template<typename Type>
struct type_trait {
typedef void type_trait;
}
and are specialized for each type you are using:
template<>
struct type_trait<MyType>
{
typedef TraitType type_trait;
}
where TraitType is a sensible trait type (a characteristic type) of MyType, used in a generic algorithm (parametrized by Type):
typename type_trait<Type>::type_trait
The issue here for you is if the typedefs spread out over your API can be grouped around types. Struct is used and not a class to hold the typedefs, since they will be public anyway.
Here is a tutorial that you might find useful.