{-# LANGUAGE RankNTypes #-}

module TreeSitter (
  -- * ABI Versioning
  TREE_SITTER_LANGUAGE_VERSION,
  TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION,

  -- * Types
  Symbol (..),
  StateId (..),
  GrammarType (..),
  FieldId (..),
  FieldName (..),
  CaptureName (..),
  CaptureIndex (..),
  PatternIndex (..),
  Language,
  Parser,
  Tree,
  Query,
  QueryCursor,
  LookaheadIterator,
  InputEncoding (InputEncodingUTF8, InputEncodingUTF16),
  SymbolType (SymbolTypeRegular, SymbolTypeAnonymous, SymbolTypeSupertype, SymbolTypeAuxiliary),
  Point (Point, pointColumn, pointRow),
  Range (Range, rangeStartPoint, rangeEndPoint, rangeStartByte, rangeEndByte),
  Input,
  LogType (LogTypeLex, LogTypeParse),
  InputEdit (InputEdit, inputEditStartByte, inputEditOldEndByte, inputEditNewEndByte, inputEditStartPoint, inputEditOldEndPoint, inputEditNewEndPoint),
  Node,
  NodeId (..),
  nodeId,
  TreeCursor,
  TreeCursorId (..),
  QueryCapture,
  Quantifier,
  QueryMatch,
  QueryPredicateStepType,
  QueryPredicateStep,
  QueryErrorType (QueryErrorTypeSyntax, QueryErrorTypeNodeType, QueryErrorTypeField, QueryErrorTypeCapture, QueryErrorTypeStructure, QueryErrorTypeLanguage),
  QueryError (..),

  -- * Parser
  parserNew,
  unsafeParserDelete,
  withParser,
  parserSetLanguage,
  parserLanguage,
  parserSetIncludedRanges,
  parserIncludedRanges,
  parserSetLogger,
  parserLogger,
  parserHasLogger,
  parserRemoveLogger,
  parserParse,
  parserParseString,
  parserParseByteString,
  parserParseByteStringWithEncoding,
  parserReset,
  Microsecond (..),
  parserSetTimeoutMicros,
  parserTimeoutMicros,
  CancellationFlag (Cancel, Continue),
  CancellationFlagRef,
  getCancellationFlag,
  putCancellationFlag,
  parserSetCancellationFlag,
  parserCancellationFlag,
  parserPrintDotGraphs,

  -- * Tree
  treeCopy,
  unsafeTreeDelete,
  treeRootNode,
  treeRootNodeWithOffset,
  treeLanguage,
  treeIncludedRanges,
  treeEdit,
  treeGetChangedRanges,
  treePrintDotGraph,

  -- * Node
  nodeType,
  nodeTypeAsString,
  nodeSymbol,
  nodeLanguage,
  nodeGrammarType,
  nodeGrammarTypeAsString,
  nodeGrammarSymbol,
  nodeRange,
  nodeStartByte,
  nodeStartPoint,
  nodeEndByte,
  nodeEndPoint,
  showNode,
  showNodeAsString,
  nodeIsNull,
  nodeIsNamed,
  nodeIsMissing,
  nodeIsExtra,
  nodeHasChanges,
  nodeHasError,
  nodeIsError,
  nodeParseState,
  nodeNextParseState,
  nodeParent,
  nodeChildWithDescendant,
  nodeChild,
  nodeFieldNameForChild,
  nodeFieldNameForChildAsString,
  nodeFieldNameForNamedChild,
  nodeFieldNameForNamedChildAsString,
  nodeChildCount,
  nodeNamedChild,
  nodeNamedChildCount,
  nodeChildByFieldName,
  nodeChildByFieldId,
  nodeNextSibling,
  nodePrevSibling,
  nodeNextNamedSibling,
  nodePrevNamedSibling,
  nodeFirstChildForByte,
  nodeFirstNamedChildForByte,
  nodeDescendantCount,
  nodeDescendantForByteRange,
  nodeDescendantForPointRange,
  nodeNamedDescendantForByteRange,
  nodeNamedDescendantForPointRange,
  nodeEdit,
  nodeEq,

  -- * TreeCursor
  treeCursorNew,
  unsafeTreeCursorDelete,
  treeCursorReset,
  treeCursorResetTo,
  treeCursorCurrentNode,
  treeCursorCurrentFieldName,
  treeCursorCurrentFieldId,
  treeCursorGotoParent,
  treeCursorGotoNextSibling,
  treeCursorGotoPreviousSibling,
  treeCursorGotoFirstChild,
  treeCursorGotoLastChild,
  treeCursorGotoDescendant,
  treeCursorCurrentDescendantIndex,
  treeCursorCurrentDepth,
  treeCursorGotoFirstChildForByte,
  treeCursorGotoFirstChildForPoint,
  treeCursorCopy,

  -- * Query
  queryNew,
  unsafeQueryDelete,
  queryPatternCount,
  queryCaptureCount,
  queryStringCount,
  queryStartByteForPattern,
  queryEndByteForPattern,
  queryPredicatesForPattern,
  queryIsPatternRooted,
  queryIsPatternNonLocal,
  queryIsPatternGuaranteedAtStep,
  queryCaptureNameForIndex,
  queryCaptureQuantifierForIndex,
  queryStringValueForIndex,
  queryDisableCapture,
  queryDisablePattern,
  queryCursorNew,
  unsafeQueryCursorDelete,
  queryCursorExec,
  queryCursorDidExceedMatchLimit,
  queryCursorMatchLimit,
  queryCursorSetMatchLimit,
  queryCursorSetTimeoutMicros,
  queryCursorTimeoutMicros,
  queryCursorSetByteRange,
  queryCursorSetPointRange,
  queryCursorNextMatch,
  queryCursorRemoveMatch,
  queryCursorNextCapture,
  queryCursorSetMaxStartDepth,

  -- * Language
  unsafeToLanguage,
  unsafeLanguageDelete,
  languageCopy,
  languageSymbolCount,
  languageStateCount,
  languageSymbolName,
  languageSymbolForGrammarType,
  languageFieldCount,
  languageFieldNameForId,
  languageFieldIdForName,
  languageSymbolType,
  languageVersion,
  languageNextState,

  -- * Lookahead Iterator
  withLookaheadIteratorAsTSLookaheadIteratorPtr,
  lookaheadIteratorNew,
  unsafeLookaheadIteratorDelete,
  lookaheadIteratorResetState,
  lookaheadIteratorReset,
  lookaheadIteratorLanguage,
  lookaheadIteratorNext,
  lookaheadIteratorCurrentSymbol,
  lookaheadIteratorCurrentSymbolName,
) where

import TreeSitter.Internal

--------------------------------------------------------------------------------

{-# ANN module "HLint: ignore TreeSitter.Internal should be imported post-qualified or with an explicit import list" #-}

--------------------------------------------------------------------------------