namespace ov::pass

namespace pass {

// namespaces

namespace ov::pass::pattern;
    namespace ov::pass::pattern::op;

// typedefs

typedef ov::EnumMask<PassProperty> PassPropertyMask;
typedef std::function<bool(const std::shared_ptr<const ::ov::Node>)> param_callback;
typedef std::map<ov::DiscreteTypeInfo, param_callback> param_callback_map;

// enums

enum PassProperty;

// classes

class AddOldApiMapToParameters;
class Attributes;
class BackwardGraphRewrite;
class ChangePlaceholderTypes;
class CompressFloatConstants;
class CompressFloatConstantsImpl;
class ConstantFolding;
class ConvertCompressedOnlyToLegacy;
class ConvertFP32ToFP16;
class DisableConstantFolding;
class DisableDecompressionConvertConstantFolding;
class DivisionByZeroFP16Resolver;
class EnableDecompressionConvertConstantFolding;
class FindBatch;
class FoldSubgraphEmptyInputs;
class GraphRewrite;
class Hash;
class LSTMStatesBroadcast;
class LowLatency2;
class MOCLegacyTransformations;
class MakeStateful;
class Manager;
class MarkPrecisionSensitiveDivides;
class MarkPrecisionSensitiveSubgraphs;
class MatcherPass;
class ModelPass;
class PassBase;
class PassConfig;
class RemoveConcatZeroDimInput;
class RemoveMultiSubGraphOpDanglingParams;
class ReshapeSinkingMatMul;
class ResolveNameCollisions;
class Serialize;
class StreamSerialize;
class Validate;
class VisualizeTree;

// global functions

OPENVINO_API void disable_constant_folding(const std::shared_ptr<Node>& node);
OPENVINO_API void enable_constant_folding(const std::shared_ptr<Node>& node);
OPENVINO_API bool constant_folding_is_disabled(const std::shared_ptr<Node>& node);

} // namespace pass