-record(serialiser, { encode_message :: fun((any()) -> gleam@json:json()), message_decoder :: gleam@dynamic@decode:decoder(any()), encode_state :: fun((any()) -> gleam@json:json()), state_decoder :: gleam@dynamic@decode:decoder(any()) }).