-record(normal, { from :: gleam@option:option(move_san:position_san()), to :: position:position(), moving_piece :: piece:kind(), capture :: boolean(), promotion :: gleam@option:option(piece:kind()), maybe_check_or_checkmate :: gleam@option:option(move_san:check_or_check_mate()) }).