#pragma once #include "whetstone_rsa/types.h" #include #include namespace whetstone::rsa { class Probe { public: virtual ~Probe() = default; [[nodiscard]] virtual std::string id() const = 0; [[nodiscard]] virtual bool supports(const GateDefinition& gate_definition, const GateEvidence& evidence) const = 0; [[nodiscard]] virtual ProbeResult run(const ProbeRequest& request) const = 0; }; using ProbePtr = std::shared_ptr; } // namespace whetstone::rsa