namespace ov::op::v6

namespace v6 {

// classes

class Assign;
class CTCGreedyDecoderSeqLen;
class ExperimentalDetectronDetectionOutput;
class ExperimentalDetectronGenerateProposalsSingleImage;
class ExperimentalDetectronPriorGridGenerator;
class ExperimentalDetectronROIFeatureExtractor;
class ExperimentalDetectronTopKROIs;
class GatherElements;
class MVN;
class ReadValue;

// global functions

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

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

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

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

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

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

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

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

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

} // namespace v6