import * as t from '@rekajs/types'; import { ScopeDescription, IdentifiableWithScope } from './interfaces'; import { Resolver } from './resolver'; type BeforeIndex = { index: number; }; type BeforeName = { name: string; }; type Before = BeforeIndex | BeforeName; export type GetIdentifiableOpts = { parent?: boolean; includeExternals?: boolean; includeAncestors?: boolean; filter?: (identifiable: IdentifiableWithScope) => boolean; before?: Before; }; export declare const getKeyFromScopeDescription: (description: ScopeDescription) => string; export declare const getScopePath: (description: ScopeDescription, parent?: Scope) => string; export declare const getMaybeScopeDescriptionByNodeOwner: (node: t.ASTNode) => ScopeDescription | null; export declare const getScopeDescriptionByNodeOwner: (node: t.ASTNode) => ScopeDescription; export type ScopeContext = { component?: t.Component; }; export declare class Scope { readonly resolver: Resolver; readonly parent?: Scope | undefined; identifiables: Map; description: ScopeDescription; path: string; context: Record | null; constructor(resolver: Resolver, descriptionOrNode: ScopeDescription | t.ASTNode, parent?: Scope | undefined); get reka(): import("./reka").Reka; get key(): string; getIdentifiables(maybeOpts?: GetIdentifiableOpts): IdentifiableWithScope[]; inherit(descriptionOrNode: ScopeDescription | t.ASTNode): Scope; defineIdentifiable(identifiable: t.Identifiable): void; removeIdentifiableByName(name: string): void; clear(): void; getIdentifiableWithDistance(name: string): { identifiable: t.Identifiable; distance: number; } | null; has(name: string): boolean; forEach(cb: (identifiable: t.Identifiable) => void): void; toString(): string; } export {};