module Language.Haskell.Refact.API
 (
 
         ParseResult
       , VerboseLevel(..)
       , RefactSettings(..)
       , TargetModule
       , RefactFlags(..)
       , StateStorage(..)
       
       , RefactGhc
       , runRefactGhc
       , getRefacSettings
       , defaultSettings
       , logSettings
       , logm
       , logDataWithAnns
       , logExactprint
       , logParsedSource
 
       
       , parseSourceFileGhc
       , getTargetGhc
       
       , runRefacSession
       , runMultRefacSession
       , applyRefac
       , applyRefac'
       , refactDone
       , ApplyRefacResult
       , RefacSource(..)
       , nameSybQuery
       , fileNameFromModSummary
       , getModuleName
       , clientModsAndFiles
       , serverModsAndFiles
       
       , stripCallStack
 
       
       , getTypecheckedModule
       , RefacResult(..)
       , getRefactStreamModified
       , setRefactStreamModified
       , getRefactInscopes
       , getRefactRenamed
       , putRefactRenamed
       , getRefactParsed
       , putRefactParsed
       , putParsedModule
       , clearParsedModule
       , getRefactFileName
       , getRefactTargetModule
       , getRefactNameMap
       , getRefactModule
       , getRefactModuleName
       
       
       , liftT
       
       , getRefactDone
       , setRefactDone
       , clearRefactDone
       , setStateStorage
       , getStateStorage
       , fetchAnnsFinal
       
       , parseDeclWithAnns
       
 
                     , SimpPos
                     , getGhcLoc
                     , getGhcLocEnd
                     , getLocatedStart
                     , getLocatedEnd
                     , getStartEndLoc
                     , startEndLocGhc
                     , emptyList
                     , nonEmptyList
 
    , InScopes
    , ghead
    , glast
    , gtail
    , gfromJust
 
 
    
   , inScopeInfo, isInScopeAndUnqualified, isInScopeAndUnqualifiedGhc, inScopeNames
   , isExported, isExplicitlyExported, modIsExported
   , equivalentNameInNewMod
   , hsQualifier
    
    , isFieldName
    , isClassName
    , isInstanceName
    , hsTypeVbls
    , hsNamessRdr
    , isDeclaredInRdr
    , FreeNames(..),DeclaredNames(..)
    , hsFreeAndDeclaredNameStrings
    , hsFreeAndDeclaredRdr
    , hsFreeAndDeclaredPNs
    , getDeclaredVarsRdr
    , hsVisibleNamesRdr
    , hsFDsFromInsideRdr, hsFDNamesFromInsideRdr, hsFDNamesFromInsideRdrPure
    , hsVisibleDsRdr
    , rdrName2Name, rdrName2NamePure
    , eqRdrNamePure
    , sameNameSpace
    
    ,isVarId,isConId,isOperator,isTopLevelPN,isLocalPN,isNonLibraryName 
    ,isQualifiedPN, isFunOrPatName,isTypeSig
    ,isFunBindP,isFunBindR,isPatBindP,isPatBindR,isSimplePatBind,isSimplePatDecl
    ,isComplexPatBind,isComplexPatDecl,isFunOrPatBindP,isFunOrPatBindR
    ,usedWithoutQualR
    ,findNameInRdr
    ,findNamesRdr, findEntity, findEntity'
    ,sameOccurrence
    , findIdForName
    , getTypeForName
    , definesTypeSigRdr,definesSigDRdr
    , sameBindRdr
    , UsedByRhs(..)
    
    , isMainModule
    , getModule
    
    ,defineLoc, useLoc, locToExp
    ,findLRdrName
    ,locToNameRdr
    ,locToNameRdrPure
    ,locToRdrName
    ,getName
 
    
    ,addDecl, addItemsToImport, addItemsToExport, addHiding
    ,addParamsToDecls, addParamsToSigs, addActualParamsToRhs, addImportDecl, duplicateDecl
    
    ,rmDecl, rmTypeSig, rmTypeSigs
    
    
    ,rmQualifier,qualifyToplevelName,renamePN, HowToQual(..), autoRenameLocalVar
    
    , expToNameRdr
    , patToNameRdr
    , nameToString
    , pNtoPat
    , definedPNsRdr,definedNamesRdr
    , definingDeclsRdrNames, definingDeclsRdrNames', definingSigsRdrNames
    , definingTyClDeclsNames
    
    , divideDecls
    , mkRdrName,mkQualifiedRdrName,mkNewGhcName,mkNewName,mkNewToplevelName
    , registerRdrName
    
    , causeNameClashInExports
    , declsSybTransform
    
    
 
    
    , everywhereMStaged'
    , everywhereStaged
    , everywhereStaged'
    , listifyStaged
    , everywhereButM
    
    , zeverywhereStaged
    , zopenStaged
    , zsomewhereStaged
    , transZ
    , transZM
    , zopenStaged'
    , ztransformStagedM
    
    , upUntil
    , findAbove
 
  , showGhc
  , showGhcQual
  , prettyprint
  , prettyprint2
  , ppType
  , setGhcContext
 
  , NameMap
 
  , replace
  , setRefactAnns
  , mergeRefactAnns
  , setAnnKeywordDP
  , copyAnn
  , clearPriorComments
  , balanceAllComments
  , exactPrintParsed
  , exactPrintExpr
  , zeroDP
  , setDP
  , handleParseResult
  , removeAnns
  , synthesizeAnns
  , addNewKeyword
  , addNewKeywords
  , addEmptyAnn
  , addAnnVal
  , addAnn
   
 , UnlocParsedHsBind
 , ParsedGRHSs
 , ParsedMatchGroup
 , ParsedLMatch
 , ParsedExpr
 , ParsedLStmt
 , ParsedLExpr
 , ParsedBind
 
  , addSimpleImportDecl
  , wrapInLambda
  , wrapInPars
  , removePars
  , addNewLines
  , wrapInParsWithDPs
  , locate
  , getVarAndRHS
  , getHsBind
  , isHsVar
 ) where
import Language.Haskell.Refact.Utils.ExactPrint
import Language.Haskell.Refact.Utils.GhcUtils
import Language.Haskell.Refact.Utils.GhcVersionSpecific
import Language.Haskell.Refact.Utils.LocUtils
import Language.Haskell.Refact.Utils.Monad
import Language.Haskell.Refact.Utils.MonadFunctions
import Language.Haskell.Refact.Utils.TypeSyn
import Language.Haskell.Refact.Utils.TypeUtils
import Language.Haskell.Refact.Utils.Types
import Language.Haskell.Refact.Utils.Utils
import Language.Haskell.Refact.Utils.Variables
import Language.Haskell.Refact.Utils.Transform
import Language.Haskell.GHC.ExactPrint.Utils
import Language.Haskell.Refact.Utils.Synonyms
import Language.Haskell.Refact.Utils.Query