import type { Lexer as LexerType, Parser as ParserType, TokenStream } from 'antlr4ng';
import { GetParseTree, LexerConstructor, ParserConstructor } from './autocomplete-types';
export interface StatementPosition {
    startIndex: number;
    endIndex: number;
}
export declare enum StatementExtractionStrategy {
    Autocomplete = "autocomplete",
    Tokens = "tokens"
}
export interface ExtractStatementPositionsResult {
    statementPositions: StatementPosition[];
    strategy: StatementExtractionStrategy;
}
export declare function extractStatementPositionsFromQuery<L extends LexerType, P extends ParserType>(query: string, Lexer: LexerConstructor<L>, Parser: ParserConstructor<P>, whitespaceToken: number, emptySpaceTokens: number[], endStatementToken: number, statementRule: number, getParseTree: GetParseTree<P>): ExtractStatementPositionsResult;
export declare function extractStatementsUsingTokens(tokenStream: TokenStream, emptySpaceTokens: number[], endStatementToken: number): StatementPosition[];
export declare function extractStatementsUsingAutocomplete<P extends ParserType>(parser: P, tokenStream: TokenStream, statementRule: number, endStatementToken: number): StatementPosition[];
