-record(codec, { encoder :: fun((any()) -> {ok, bitstring()} | {error, distribute@codec:encode_error()}), decoder :: fun((bitstring()) -> {ok, any()} | {error, distribute@codec:decode_error()}), sized_decoder :: fun((bitstring()) -> {ok, {any(), bitstring()}} | {error, distribute@codec:decode_error()}) }).