-record(server_app, { view :: fun((list(binary()), any()) -> lustre@internals@vdom:element(illustrious@state:illustrious_action(any()))), html_headers :: fun((list(binary()), any()) -> lustre@internals@vdom:element(illustrious@state:illustrious_action(any()))), default_model :: any(), updater :: fun((illustrious@state:illustrious_model(any()), illustrious@state:illustrious_action(any())) -> {illustrious@state:illustrious_model(any()), lustre@effect:effect(illustrious@state:illustrious_action(any()))}), decoder :: fun((gleam@dynamic:dynamic_()) -> {ok, illustrious@state:illustrious_action(any())} | {error, list(gleam@dynamic:decode_error())}), initializer :: fun((list(binary()), any()) -> {ok, gleam@json:json()} | {error, any()}), loader :: fun((list(binary()), any()) -> {ok, gleam@json:json()} | {error, any()}), error_serializer :: fun((any()) -> binary()) }).