#pragma once #include #include #include namespace NYql { class IArrowResolver : public TThrRefBase { public: using TPtr = TIntrusiveConstPtr; using TUnsupportedTypeCallback = std::function)>; enum EStatus { OK, NOT_FOUND, ERROR, }; virtual ~IArrowResolver() = default; virtual EStatus LoadFunctionMetadata(const TPosition& pos, TStringBuf name, const TVector& argTypes, const TTypeAnnotationNode* returnType, TExprContext& ctx) const = 0; virtual EStatus HasCast(const TPosition& pos, const TTypeAnnotationNode* from, const TTypeAnnotationNode* to, TExprContext& ctx) const = 0; virtual EStatus AreTypesSupported(const TPosition& pos, const TVector& types, TExprContext& ctx, const TUnsupportedTypeCallback& onUnsupported = {}) const = 0; }; }