-record(step_config, { handler :: fun((telega@bot:context(any(), any()), telega@flow@types:flow_instance()) -> {ok, {telega@bot:context(any(), any()), telega@flow@types:flow_action(any()), telega@flow@types:flow_instance()}} | {error, any()}), middlewares :: list(fun((telega@bot:context(any(), any()), telega@flow@types:flow_instance(), fun(() -> {ok, {telega@bot:context(any(), any()), telega@flow@types:flow_action(any()), telega@flow@types:flow_instance()}} | {error, any()})) -> {ok, {telega@bot:context(any(), any()), telega@flow@types:flow_action(any()), telega@flow@types:flow_instance()}} | {error, any()})), on_enter :: gleam@option:option(fun((telega@bot:context(any(), any()), telega@flow@types:flow_instance()) -> {ok, {telega@bot:context(any(), any()), telega@flow@types:flow_instance()}} | {error, any()})), on_leave :: gleam@option:option(fun((telega@bot:context(any(), any()), telega@flow@types:flow_instance()) -> {ok, {telega@bot:context(any(), any()), telega@flow@types:flow_instance()}} | {error, any()})) }).