#pragma once

#include <optional>
#include <span>
#include <string>
#include <vector>

#include <fesa/core/diagnostic.hpp>
#include <fesa/io/abaqus/deck_record.hpp>

namespace fesa {

struct ActiveInputView final {
    bool flat = true;
    std::string part_name;
    std::string instance_name;
    std::span<const DeckRecord> part_records;
    std::span<const DeckRecord> assembly_records;
};

struct ActiveInputResult final {
    std::optional<ActiveInputView> input;
    std::vector<Diagnostic> diagnostics;
};

[[nodiscard]] ActiveInputResult select_active_input(const ParsedDeck& deck);

}  // namespace fesa
