namespace ov::op::v8

namespace v8 {

// classes

class AdaptiveAvgPool;
class AdaptiveMaxPool;
class DeformableConvolution;
class DetectionOutput;
class Gather;
class GatherND;
class I420toBGR;
class I420toRGB;
class If;
class MatrixNms;
class MaxPool;
class MulticlassNms;
class NV12toBGR;
class NV12toRGB;
class PriorBox;
class RandomUniform;
class Slice;
class Softmax;

// global functions

template <class T>
void shape_infer(
    const DetectionOutput \* op,
    const std::vector<T>& input_shapes,
    std::vector<T>& output_shapes
    );

template <class T>
void shape_infer(
    const Slice \* op,
    const std::vector<T>& input_shapes,
    std::vector<T>& output_shapes,
    const std::map<size_t, std::shared_ptr<ngraph::runtime::HostTensor>>& constant_data = {}
    );

} // namespace v8