// Copyright 2026 Noverberrain.
// SPDX-License-Identifier: Apache-2.0

///|
// Validate availability before converting a wire UInt32 length into an Int32.
// Returning only this event prevents following bytes from entering its CRC.
fn complete_event(
  data : BytesView,
  file_offset~ : UInt64,
  max_event_size~ : UInt32,
) -> (EventHeader, BytesView) raise DecodeError {
  let header = EventHeader::parse(data, file_offset~, max_event_size~)
  let actual = data.length().reinterpret_as_uint()
  guard header.event_size <= actual else {
    raise TruncatedEvent(file_offset~, expected=header.event_size, actual~)
  }
  (header, data[:header.event_size.reinterpret_as_int()])
}