reasampler_pure_library(wire SOURCES wire.cpp)
reasampler_test(wire LINK wire)

reasampler_pure_library(assignment_request SOURCES assignment_request.cpp LINK PRIVATE wire)
reasampler_test(assignment_request LINK assignment_request)

reasampler_pure_library(sample_usage SOURCES sample_usage.cpp LINK PRIVATE wire)
# prune_reconcile composes the protection proof at the pure layer: a capture held by a live
# instance lands in the referenced union, so pruneOrphans can never emit it.
reasampler_test(sample_usage LINK sample_usage prune_reconcile)

# The drop payload is built through the instrument's OWN state serializer rather than a
# parallel byte writer, so the cross-artifact contract cannot drift — hence the link to
# component_state_io, which stays engine-free. The class-ID string derives from the frozen
# UID macros, channel-selected via the generated version header, hence its include dir.
reasampler_pure_library(instrument_drop SOURCES instrument_drop.cpp LINK PUBLIC component_state_io)
target_include_directories(instrument_drop PUBLIC ${PROJECT_BINARY_DIR}/generated)
reasampler_test(instrument_drop LINK instrument_drop)
