import type { Fqn } from '@likec4/core';
import type { AstNodeDescription, LangiumDocuments, Stream } from 'langium';
import type { ast, FqnIndexedDocument } from '../ast';
import type { LikeC4Services } from '../module';
import { ADisposable } from '../utils';
export interface FqnIndexEntry {
    fqn: Fqn;
    name: string;
    el: ast.Element;
    doc: FqnIndexedDocument;
    path: string;
}
export declare class FqnIndex extends ADisposable {
    private services;
    protected langiumDocuments: LangiumDocuments;
    constructor(services: LikeC4Services);
    get documents(): any;
    private entries;
    getFqn(el: ast.Element): Fqn | null;
    byFqn(fqn: Fqn): Stream<AstNodeDescription>;
    directChildrenOf(parent: Fqn): Stream<AstNodeDescription>;
    /**
     * Returns descedant elements with unique names in the scope
     */
    uniqueDescedants(parent: Fqn): Stream<AstNodeDescription>;
}
