namespace ngraph::snippets::op

namespace op {

// templates

template BlockedLoad;
template BlockedParameter;
template BroadcastLoad;
template BroadcastMove;
template Kernel;
template Load;
template Nop;
template PowerStatic;
template Scalar;
template ScalarLoad;
template ScalarStore;
template Subgraph;
template Tile;
template VectorLoad;
template VectorStore;

// classes

class Store;

// global functions

static std::ostream& operator << (
    std::ostream& os,
    const op::Subgraph::BlockedShape& blocked_shape
    );

static auto is_scalar_constant(const std::shared_ptr<ngraph::Node>& source_output_node);

static auto create_body(
    std::string name,
    const ngraph::ResultVector& results,
    const ngraph::ParameterVector& parameters
    );

static auto build_subgraph(
    const std::shared_ptr<ngraph::Node>& node,
    const ngraph::OutputVector& inputs,
    const std::shared_ptr<ov::Model>& body,
    const std::string name = ""
    );

} // namespace op