import { CompletionItem, Document as TypeDocument, IResolveNamespaceResult, IType, SymbolInfo } from 'greybel-type-analyzer';
import { ASTBase, ASTBaseBlockWithScope } from 'miniscript-core';
import { Position } from 'vscode-languageserver-textdocument';
import { IActiveDocument, IContext } from '../types';
export type LookupOuter = ASTBase[];
export interface LookupASTResult {
    closest: ASTBase;
    outer: LookupOuter;
}
export declare class LookupHelper {
    readonly document: IActiveDocument;
    readonly context: IContext;
    private mergedTypeMap;
    constructor(document: IActiveDocument, context: IContext);
    getTypeMap(): Promise<TypeDocument>;
    findAllAssignmentsOfIdentifier(identifier: string, root: ASTBaseBlockWithScope): Promise<SymbolInfo[]>;
    findAllAssignmentsOfItem(item: ASTBase): Promise<IType>;
    findAllAvailableIdentifierInRoot(): Promise<Map<string, CompletionItem>>;
    findAllAvailableIdentifier(root: ASTBaseBlockWithScope): Promise<Map<string, CompletionItem>>;
    findAllAvailableIdentifierRelatedToPosition(item: ASTBase): Promise<Map<string, CompletionItem>>;
    lookupAST(position: Position): Promise<LookupASTResult | null>;
    lookupBasePath(item: ASTBase): Promise<IResolveNamespaceResult | null>;
    lookupTypeInfo({ closest, outer }: LookupASTResult): Promise<IResolveNamespaceResult | null>;
    lookupType(position: Position): Promise<IResolveNamespaceResult | null>;
}
