namespace transpose_sinking

namespace transpose_sinking {

// namespaces

namespace transpose_sinking::sink_backward;
namespace transpose_sinking::sink_forward;

// structs

struct TransposeInputsInfo;

// global functions

TransposeInputsInfo GetFirstTransposeInput(std::shared_ptr<ov::Node> node);
bool IfNodeHasTransposeInputs(const ov::Output<ov::Node>& output);
ov::AxisVector ReverseTransposeOrder(const ov::AxisVector& axis_order);
void SwapOutputNames(ov::Output<ov::Node> output1, ov::Output<ov::Node> output2);

void SwapFriendlyNames(
    std::shared_ptr<ov::Node> node1,
    std::shared_ptr<ov::Node> node2
    );

void SwapNames(std::shared_ptr<ov::Node> node1, std::shared_ptr<ov::Node> node2);

} // namespace transpose_sinking