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 AUGRUCellFusion;
class AddAddFusion;
class AddFakeQuantizeFusion;
class AddMultiplyFusion;
class AddOldApiMapToParameters;
class AlignEltwiseInputRanks;
class Attributes;
class BackwardGraphRewrite;
class BatchNormDecomposition;
class BatchToSpaceFusion;
class BidirectionalGRUSequenceDecomposition;
class BidirectionalLSTMSequenceDecomposition;
class BidirectionalRNNSequenceDecomposition;
class BidirectionalSequenceDecomposition;
class BinarizeWeights;
class BroadcastConstRangeReplacement;
class BroadcastElementwiseFusion;
class ChangePlaceholderTypes;
class ClampFusion;
class CommonOptimizations;
class CompressFloatConstants;
class CompressFloatConstantsImpl;
class ConcatReduceFusion;
class ConstantFolding;
class ConvStridesPropagation;
class ConvToBinaryConv;
class ConvertBatchToSpace;
class ConvertBroadcast3;
class ConvertBroadcastToTiles;
class ConvertCompressedOnlyToLegacy;
class ConvertCompressedToMixedPrecision;
class ConvertConvertLike;
class ConvertDeformableConv8To1;
class ConvertDepthToSpace;
class ConvertDetectionOutput1ToDetectionOutput8;
class ConvertDetectionOutput8ToDetectionOutput1;
class ConvertDivide;
class ConvertDivideWithConstant;
class ConvertFP32ToFP16;
class ConvertGELU;
class ConvertGP9ToGPIEInternal;
class ConvertGRUSequenceToTensorIterator;
class ConvertGather0D;
class ConvertGather1ToGather7;
class ConvertGather7ToGather1;
class ConvertGather7ToGather8;
class ConvertGather8ToGather7;
class ConvertInterpolate1ToInterpolate4;
class ConvertLSTMSequenceToTensorIterator;
class ConvertMVN1ToMVN6;
class ConvertMatrixNmsToMatrixNmsIE;
class ConvertMaxPool1ToMaxPool8;
class ConvertMaxPool8ToMaxPool1;
class ConvertMinimum;
class ConvertMod;
class ConvertMulticlassNms8ToMulticlassNms9;
class ConvertMulticlassNmsToMulticlassNmsIE;
class ConvertNMS1ToNMS5;
class ConvertNMS1ToNMS9;
class ConvertNMS3ToNMS5;
class ConvertNMS3ToNMS9;
class ConvertNMS4ToNMS5;
class ConvertNMS4ToNMS9;
class ConvertNMS5ToNMS9;
class ConvertNMS9ToNMSIEInternal;
class ConvertNMSToNMSIEInternal;
class ConvertNegative;
class ConvertNmsGatherPathToUnsigned;
class ConvertOpSet2ToOpSet1;
class ConvertOpSet3ToOpSet2;
class ConvertPadToGroupConvolution;
class ConvertPrecision;
class ConvertPriorBox8To0;
class ConvertQuantizeDequantize;
class ConvertRNNSequenceToTensorIterator;
class ConvertROIAlign3To9;
class ConvertROIAlign9To3;
class ConvertReduceLogicalAndToReshape;
class ConvertReduceLogicalOrToReshape;
class ConvertReduceMaxToPooling;
class ConvertReduceMaxToReshape;
class ConvertReduceMeanToPooling;
class ConvertReduceMeanToReshape;
class ConvertReduceMinToReshape;
class ConvertReduceSumToPooling;
class ConvertReduceSumToReshape;
class ConvertReduceToPooling;
class ConvertReduceToReshape;
class ConvertScatterElementsToScatter;
class ConvertSequenceToTensorIterator;
class ConvertShapeOf3;
class ConvertShuffleChannels3;
class ConvertSoftMax1ToSoftMax8;
class ConvertSoftMax8ToSoftMax1;
class ConvertSpaceToBatch;
class ConvertSpaceToDepth;
class ConvertSubtract;
class ConvertTensorIteratorToGRUSequence;
class ConvertTensorIteratorToLSTMSequence;
class ConvertTensorIteratorToRNNSequence;
class ConvertTensorIteratorToSequence;
class ConvertTopK3;
class ConvertXorToLogicalXor;
class ConvolutionBackpropDataMultiplyFusion;
class ConvolutionMultiplyFusion;
class DepthToSpaceFusion;
class DilatedConvolutionConverter;
class DisableConstantFolding;
class DisableDecompressionConvertConstantFolding;
class DisableFoldSubgraphEmptyInputs;
class DisableRandomUniformConstantFolding;
class DisableRemoveConcatZeroDimInput;
class DisableShapeOfConstantFolding;
class DivideFusion;
class DivisionByZeroFP16Resolver;
class DropoutWithRandomUniformReplacer;
class EinsumDecomposition;
class EliminateConcat;
class EliminateConvert;
class EliminateConvertNonZero;
class EliminateDuplicateTIInputs;
class EliminateEltwise;
class EliminateGatherUnsqueeze;
class EliminatePad;
class EliminateScatterUpdate;
class EliminateSplit;
class EliminateSplitConcat;
class EliminateSqueeze;
class EliminateTranspose;
class EliminateUnsqueezeGather;
class EnableDecompressionConvertConstantFolding;
class EyeDecomposition;
class FakeQuantizeDecomposition;
class FakeQuantizeMulFusion;
class FakeQuantizeReshapeFusion;
class FindBatch;
class FixRtInfo;
class FoldSubgraphEmptyInputs;
class FuseFilteringBoxesBySize;
class FusedNamesCleanup;
class GRUCellDecomposition;
class GRUCellFusion;
class GatherNegativeConstIndicesNormalize;
class GatherNopElimination;
class Gelu7Downgrade;
class GeluFusion;
class GeluFusionWithErfFour;
class GeluFusionWithErfOne;
class GeluFusionWithErfThree;
class GeluFusionWithErfTwo;
class GeluFusionWithTanh;
class GraphRewrite;
class GroupConvolutionBackpropDataMultiplyFusion;
class GroupConvolutionMultiplyFusion;
class GroupedGatherElimination;
class GroupedStridedSliceOptimizer;
class HSigmoidDecomposition;
class HSigmoidFusion;
class HSigmoidFusionWithClampDiv;
class HSigmoidFusionWithClampMul;
class HSigmoidFusionWithReluDiv;
class HSigmoidFusionWithReluMul;
class HSigmoidFusionWithoutRelu;
class HSwishDecomposition;
class HSwishFusion;
class HSwishFusionWithClamp;
class HSwishFusionWithHSigmoid;
class HSwishFusionWithReluDiv;
class HSwishFusionWithReluMul;
class Hash;
class InitNodeInfo;
class InterpolateSequenceFusion;
class LSTMCellDecomposition;
class LSTMStatesBroadcast;
class LeakyReluFusion;
class LinOpSequenceFusion;
class LogSoftmaxDecomposition;
class LowLatency2;
class MOCLegacyTransformations;
class MOCTransformations;
class MVN6Decomposition;
class MVNFusion;
class MVNFusionWithConstantsInside;
class MVNFusionWithoutConstants;
class MakeStateful;
class Manager;
class MarkDequantizationSubgraph;
class MarkDividesInShapeSubgraphs;
class MarkPrecisionSensitiveConstants;
class MarkPrecisionSensitiveShapeOfSubgraphs;
class MatMulConstTransposesExtraction;
class MatMulMultiplyFusion;
class MatcherPass;
class MimicSetBatchSize;
class MishFusion;
class ModelPass;
class MulFakeQuantizeFusion;
class MultiplyConvolutionBackpropDataFusion;
class MultiplyConvolutionFusion;
class MultiplyGroupConvolutionBackpropDataFusion;
class MultiplyGroupConvolutionFusion;
class MultiplyMultiplyFusion;
class NearestNeighborUpsamplingFusion;
class NodeRegistry;
class NopElimination;
class NormalizeL2Decomposition;
class NormalizeL2Fusion;
class PReluFusion;
class PReluFusionMultiplyAdd;
class PReluFusionMultiplySub;
class PReluFusionNegativeAdd;
class PReluFusionNegativeSub;
class PadFusion;
class PadFusionAvgPool;
class PadFusionConvolution;
class PadFusionConvolutionBackpropData;
class PadFusionGroupConvolution;
class PadFusionGroupConvolutionBackpropData;
class PassBase;
class PassConfig;
class Proposal1Scales;
class Proposal4Scales;
class PullReshapeThroughReduce;
class PullSqueezeThroughEltwise;
class PullThroughReduce;
class PullTransposeThroughFQUp;
class PullUnsqueezeThroughReduce;
class PushConstantToSubgraph;
class RNNCellDecomposition;
class RandomUniformFusion;
class ReduceL1Decomposition;
class ReduceL2Decomposition;
class ReduceMerge;
class ReduceReshapeFusion;
class ReluFakeQuantizeFusion;
class RemoveConcatZeroDimInput;
class RemoveFilteringBoxesBySize;
class RemoveMultiSubGraphOpDanglingParams;
class ReplaceConcatReduceByMinOrMax;
class ReshapeAMatMul;
class ReshapeBMatMul;
class ReshapePRelu;
class ReshapeSequenceFusion;
class ReshapeSinkingMatMul;
class ReshapeTo1D;
class ResolveNameCollisions;
class ReverseInputChannelsFusion;
class ReverseShapeAndTypeInfer;
class SelectWithOneValueCondition;
class SequenceFusion;
class Serialize;
class SetBatchSize;
class ShapeOfConstFolding;
class SharedShapeOf;
class SharedSqueeze;
class SharedStridedSliceEraser;
class ShuffleChannelsFusion;
class SkipGatherBeforeTransposeAndReshape;
class SliceToStridedSlice;
class SmartReshape;
class SoftPlusDecomposition;
class SoftPlusFusion;
class SoftPlusToMishFusion;
class SoftSignDecomposition;
class SoftmaxDecomposition;
class SoftmaxFusion;
class SpaceToBatchFusion;
class SplitConcatPairToInterpolateFusion;
class SplitSqueezeConcatFusion;
class SqueezeStridedSlice;
class StreamSerialize;
class StridedSliceOptimization;
class StridedSliceSqueeze;
class StridesOptimization;
class SubtractFusion;
class SupportedNodesStridesPropagation;
class SwishFusion;
class SwishFusionWithBeta;
class SwishFusionWithSigmoid;
class SwishFusionWithSigmoidWithBeta;
class SwishFusionWithoutBeta;
class TransposeConvert;
class TransposeEltwise;
class TransposeFQReduction;
class TransposeFuse;
class TransposeMatMul;
class TransposeReduction;
class TransposeReshapeEliminationForMatmul;
class TransposeSinking;
class TransposeSinkingBinaryBackward;
class TransposeSinkingBinaryForward;
class TransposeSinkingConcatBackward;
class TransposeSinkingConcatForward;
class TransposeSinkingGeneral;
class TransposeSinkingGeneralBackward;
class TransposeSinkingGeneralForward;
class TransposeSinkingPadBackward;
class TransposeSinkingPadForward;
class TransposeSinkingSplitBackward;
class TransposeSinkingSplitForward;
class TransposeSinkingUnaryBackward;
class TransposeSinkingUnaryBackwardMultiConsumers;
class TransposeSinkingUnaryBackwardSingleConsumer;
class TransposeSinkingUnaryForward;
class TransposeToReshape;
class UniqueDecomposition;
class UnrollIf;
class UnrollTensorIterator;
class UnsupportedNodesStridesPropagation;
class UselessStridedSliceEraser;
class Validate;
class VisualizeTree;
class WeightsDequantizeToFakeQuantize;
class WrapInterpolateIntoTransposes;

// global variables

class OPENVINO_API RemoveConcatZeroDimInput;
class OPENVINO_API DisableRemoveConcatZeroDimInput;

// global functions

void disable_fold_subgraph_empty_inputs(const std::shared_ptr<Node>& node);
void enable_fold_subgraph_empty_inputs(const std::shared_ptr<Node>& node);
bool fold_subgraph_empty_inputs_is_disabled(const std::shared_ptr<Node>& node);
OPENVINO_API void disable_remove_concat_zerodim_input(const std::shared_ptr<Node>& node);
OPENVINO_API void enable_remove_concat_zerodim_input(const std::shared_ptr<Node>& node);
OPENVINO_API bool remove_concat_zerodim_input_is_disabled(const std::shared_ptr<Node>& node);
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);
OPENVINO_API bool constant_folding_is_disabled(const Node \*const node);

} // namespace pass