module Language.Haskell.Refact.API
 (
 
         ParseResult
       , VerboseLevel(..)
       , RefactSettings(..)
       , TargetModule
       , RefactFlags(..)
       , StateStorage(..)
       
       , RefactGhc
       , runRefactGhc
       , getRefacSettings
       , defaultSettings
       , logSettings
       , initGhcSession
       , loadModuleGraphGhc
       , ensureTargetLoaded
       , canonicalizeGraph
       , logm
 
       
       
       , getModuleGhc
       , parseSourceFileGhc
       , activateModule
       , getModuleDetails
       
       , runRefacSession
       , applyRefac
       , refactDone
       , ApplyRefacResult
       , RefacSource(..)
       , update
       , fileNameToModName
       , fileNameFromModSummary
       , getModuleName
       , clientModsAndFiles
       , serverModsAndFiles
 
       
       
       , fetchLinesFinal
       , fetchOrigToks
       , fetchToks 
       , getTypecheckedModule
       , getRefactStreamModified
       , getRefactInscopes
       , getRefactRenamed
       , putRefactRenamed
       , getRefactParsed
       , putParsedModule
       , clearParsedModule
       , getRefactFileName
       
       , replaceToken
       , putToksForSpan
       , putDeclToksForSpan
       , getToksForSpan
       
       
       , getToksBeforeSpan
       , putToksForPos
       , addToksAfterSpan
       , addToksAfterPos
       , putDeclToksAfterSpan
       , removeToksForSpan
       , removeToksForPos
       , syncDeclToLatestStash
       , indentDeclAndToks
       
       
       , drawTokenTree
       , drawTokenTreeDetailed
       , getTokenTree
       , showLinesDebug
       
       , getRefactDone
       , setRefactDone
       , clearRefactDone
       , setStateStorage
       , getStateStorage
       
       , updateToks
       , updateToksWithPos
 
                     , SimpPos,unmodified,modified
                     , simpPos0
                     , nullSrcSpan
                     
                     , whiteSpaceTokens
                     , realSrcLocFromTok
                     , isWhite
                     , notWhite
                     , isWhiteSpace
                     , isWhiteSpaceOrIgnored
                     , isIgnored
                     , isIgnoredNonComment
                     ,isComment ,isMultiLineComment 
                     ,isOpenSquareBracket,isCloseSquareBracket ,isIn  ,isComma ,isBar --,isMinus,
                     ,endsWithNewLn,startsWithNewLn,hasNewLn  ,compressPreNewLns,compressEndNewLns
                     , lengthOfLastLine
                     , getToks
                     
                     ,replaceTokNoReAlign,deleteToks,doRmWhites 
                     , srcLocs
                     , getSrcSpan, getAllSrcLocs
                     
                     
                     
                     , getBiggestStartEndLoc
                     ,extendForwards,extendBackwards
                     , startEndLocIncFowComment
                     , startEndLocIncComments, startEndLocIncComments'
                     , tokenise
                     , basicTokenise
                     , prettyprintPatList
                     , groupTokensByLine
                     , toksOnSameLine
                     , addLocInfo
                     
                     , getLineOffset
                     
                     
                     
                     , tokenCol
                     , tokenColEnd
                     , tokenRow
                     , tokenPos
                     , tokenPosEnd
                     , tokenSrcSpan
                     , tokenCon
                     , increaseSrcSpan
                     , getGhcLoc
                     , getGhcLocEnd
                     , getLocatedStart
                     , getLocatedEnd
                     , getStartEndLoc
                     , startEndLocGhc
                     , realSrcLocEndTok
                     , fileNameFromTok
                     , splitToks
                     , emptyList, nonEmptyList
                     
                     , notWhiteSpace
                     , isDoubleColon
                     , isEmpty
                     , isWhereOrLet
                     , isWhere
                     , isLet
                     , isElse
                     , isThen
                     , isOf
                     , isDo
                     , getIndentOffset
                     , splitOnNewLn
                     , tokenLen
                     , newLnToken
                     
                     
                     , reSequenceToks
                     , mkToken
                     , mkZeroToken
                     , markToken
                     , isMarked
                     , addOffsetToToks
                     , matchTokenPos
                     , rmOffsetFromToks
 
    , InScopes
    , PosToken
    , ghead
    , glast
    , gtail
    , gfromJust
 
 
    
   , inScopeInfo, isInScopeAndUnqualified, isInScopeAndUnqualifiedGhc, inScopeNames
   
   , isExported, isExplicitlyExported, modIsExported
    
    , isFieldName
    , isClassName
    , isInstanceName
    ,hsPNs 
     , hsBinds, replaceBinds, HsValBinds(..)
    ,isDeclaredIn
    ,hsFreeAndDeclaredPNsOld, hsFreeAndDeclaredNameStrings
    ,hsFreeAndDeclaredPNs
    ,hsFreeAndDeclaredGhc
    ,getDeclaredTypes
    ,getFvs, getFreeVars, getDeclaredVars 
    ,hsVisiblePNs , hsVisibleNames
    ,hsFDsFromInside, hsFDNamesFromInside
    ,hsVisibleDs
    
    ,isVarId,isConId,isOperator,isTopLevelPN,isLocalPN,isNonLibraryName 
    ,isQualifiedPN , isFunOrPatName  ,isTypeSig
    ,isFunBindP,isFunBindR,isPatBindP,isPatBindR,isSimplePatBind
    ,isComplexPatBind,isFunOrPatBindP,isFunOrPatBindR 
    ,usedWithoutQualR ,isUsedInRhs
    ,findPNT,findPN,findAllNameOccurences
    ,findPNs, findEntity, findEntity'
    ,sameOccurrence
    , findIdForName
    , getTypeForName
    ,defines, definesP,definesTypeSig 
    
    ,sameBind
    ,UsedByRhs(..)
    
    
    
    , isMainModule
    , getModule
    
    ,defineLoc, useLoc, locToExp  
    ,locToName, locToRdrName
    ,getName
 
    
    ,addDecl, addItemsToImport, addHiding 
    ,addParamsToDecls, addActualParamsToRhs , addImportDecl, duplicateDecl 
    
    ,rmDecl, rmTypeSig, rmTypeSigs 
    
    
    
    ,rmQualifier,qualifyToplevelName,renamePN ,autoRenameLocalVar
    
    
    , showEntities,showPNwithLoc 
    
    
    
   ,defaultPN ,defaultName ,defaultExp 
    
    ,ghcToPN,lghcToPN, expToName
    ,nameToString
    ,patToPNT ,pNtoPat
    , definedPNs
    , definingDeclsNames, definingDeclsNames', definingSigsNames
    , definingTyClDeclsNames
    , allNames
    
    
    , mkRdrName,mkNewGhcName,mkNewName,mkNewToplevelName
    
    , causeNameClashInExports 
    , removeOffset
    
    
    
    
    , getDeclAndToks, getSigAndToks
    , getToksForDecl, removeToksOffset 
    , getParsedForRenamedLPat
    , getParsedForRenamedName
    , getParsedForRenamedLocated
    
    
    
    , stripLeadingSpaces
    
 
    
    , everythingButStaged
    , somethingStaged
    , everythingStaged
    , somewhereMStaged
    , somewhereMStagedBu
    , everywhereMStaged
    , everywhereMStaged'
    , everywhereStaged
    , everywhereStaged'
    , onelayerStaged
    , listifyStaged
    
    , checkItemRenamer
    
    , full_tdTUGhc
    , stop_tdTUGhc
    , stop_tdTPGhc
    , allTUGhc'
    , once_tdTPGhc
    , once_buTPGhc
    , oneTPGhc
    , allTUGhc
    
    , checkItemStage'
    , checkItemRenamer'
    
    , zeverywhereStaged
    , zopenStaged
    , zsomewhereStaged
    , transZ
    , transZM
    , zopenStaged'
    , ztransformStagedM
    
    , checkZipperStaged
    , upUntil
    , findAbove
 
  , showGhc
  , prettyprint
  , prettyprint2
  , ppType
  , lexStringToTokens
  , getDataConstructors
  , setGhcContext
 
 , Positioning(..)
 , reIndentToks
 , ghcSrcSpanToForestSpan
 
 , gs2f,f2gs
 , gs2ss,ss2gs
 ) where
import Language.Haskell.Refact.Utils.Binds
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.TokenUtils
import Language.Haskell.Refact.Utils.TypeSyn
import Language.Haskell.Refact.Utils.TypeUtils
import Language.Haskell.Refact.Utils.Utils
import Language.Haskell.TokenUtils.Types
import Language.Haskell.TokenUtils.TokenUtils
import Language.Haskell.TokenUtils.Utils
import Language.Haskell.TokenUtils.GHC.Layout