Behaviour for terminal selection buffer.
@callback get_selection(any()) :: {{integer(), integer()}, {integer(), integer()}}
@callback new() :: any()
@callback set_selection(any(), {integer(), integer()}, {integer(), integer()}) :: any()