def METHOD_NAME(config: ConvexConfig, configured_catalog: ConfiguredAirbyteCatalog):
    setup_good_responses(config)
    append_stream, overwrite_stream, dedup_stream = (
        configured_catalog.streams[0].stream.name,
        configured_catalog.streams[1].stream.name,
        configured_catalog.streams[2].stream.name,
    )
    first_state_message = state({"state": "1"})
    first_append_chunk = [record(append_stream, str(i), i) for i in range(5)]
    first_overwrite_chunk = [record(overwrite_stream, str(i), i) for i in range(5)]
    first_dedup_chunk = [record(dedup_stream, str(i), i) for i in range(10)]
    first_record_chunk = first_append_chunk + first_overwrite_chunk + first_dedup_chunk
    destination = DestinationConvex()
    output_state = list(
        destination.write(
            config,
            configured_catalog,
            [
                *first_record_chunk,
                first_state_message,
            ],
        )
    )[0]
    assert first_state_message == output_state
    second_state_message = state({"state": "2"})
    second_append_chunk = [record(append_stream, str(i), i) for i in range(5, 10)]
    second_overwrite_chunk = [record(overwrite_stream, str(i), i) for i in range(5, 10)]
    second_dedup_chunk = [record(dedup_stream, str(i + 2), i) for i in range(5)]
    second_record_chunk = second_append_chunk + second_overwrite_chunk + second_dedup_chunk
    output_state = list(
        destination.write(
            config,
            configured_catalog,
            [
                *second_record_chunk,
                second_state_message,
            ],
        )
    )[0]
    assert second_state_message == output_state