using ZelWiki.Library.Interfaces;

namespace ZelWiki.Engine.Library.Interfaces
{

    public interface IZelEngine
    {
        IScopeFunctionHandler ScopeFunctionHandler { get; }
        IStandardFunctionHandler StandardFunctionHandler { get; }
        IProcessingInstructionFunctionHandler ProcessingInstructionFunctionHandler { get; }
        IPostProcessingFunctionHandler PostProcessingFunctionHandler { get; }
        IMarkupHandler MarkupHandler { get; }
        IHeadingHandler HeadingHandler { get; }
        ICommentHandler CommentHandler { get; }
        IEmojiHandler EmojiHandler { get; }
        IExternalLinkHandler ExternalLinkHandler { get; }
        IInternalLinkHandler InternalLinkHandler { get; }
        IExceptionHandler ExceptionHandler { get; }
        ICompletionHandler CompletionHandler { get; }
        IZelEngineState Transform(ISessionState? sessionState, IPage page, int? revision = null, Constants.WikiMatchType[]? omitMatches = null);
        //IZelEngineState TransformChild(IZelEngineState parent, IPage page, int? revision = null);
    }
}
