> For the complete documentation index, see [llms.txt](https://doc.hfsm.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.hfsm.dev/user-guide/configuration.md).

# Configuration

[HFSM2](https://hfsm.dev/) can be configured to satisfy particular requirements using:

* [Feature macros](https://doc.hfsm.dev/user-guide/configuration/feature-macros)
* [Type configuration](https://doc.hfsm.dev/user-guide/configuration/type-configuration)

Heavyweight advanced features are enabled using relevant [feature macros](https://doc.hfsm.dev/user-guide/configuration/feature-macros) (e.g. `HFSM2_ENABLE_SERIALIZATION`)

[Type configuration](https://doc.hfsm.dev/user-guide/configuration/type-configuration) can be used to adjust the types used in an FSM instance and sometimes require a particular feature to be enabled (e.g. `hfsm2::Config::RandomT<T>` defining the type of the PRNG used in utility theory transitions, `HFSM2_ENABLE_UTILITY_THEORY` requires to be defined)
