#pragma once #include "openfhe/core/lattice/hal/lat-backend.h" #include "openfhe/pke/key/evalkey-fwd.h" #include #include #include // cxx currently does not support std::unordered_map and std::map namespace openfhe { using EvalKeyImpl = lbcrypto::EvalKeyImpl; class MapFromIndexToEvalKey final { std::shared_ptr>> m_sharedPtrToindexToEvalKeyDCRTPolyMap; public: MapFromIndexToEvalKey(std::shared_ptr>>&& indexToEvalKeyDCRTPolyMap) noexcept; [[nodiscard]] const std::shared_ptr>>& GetRef() const noexcept; }; class MapFromStringToMapFromIndexToEvalKey final { std::map>>> m_stringToMapFromIndexToEvalKeyMap; public: explicit MapFromStringToMapFromIndexToEvalKey( std::map>>> stringToMapFromIndexToEvalKeyMap); }; class MapFromStringToVectorOfEvalKeys final { std::map>> m_stringToVectorOfEvalKeysMap; public: explicit MapFromStringToVectorOfEvalKeys( std::map>> stringToVectorOfEvalKeysMap); }; class SetOfUints final { std::set m_uintsSet; public: explicit SetOfUints(std::set&& uintsSet) noexcept; [[nodiscard]] const std::set& GetRef() const noexcept; }; class UnorderedMapFromIndexToDCRTPoly final { std::unordered_map m_indexToDCRTPolyUnorderedMap; public: UnorderedMapFromIndexToDCRTPoly( std::unordered_map&& indexToDCRTPolyUnorderedMap) noexcept; [[nodiscard]] std::unordered_map& GetRef() noexcept; }; } // openfhe