import { Symbol, SymbolFlags, SymbolTable } from './symbol'; export declare const enum ScopeType { TypeParameter = 0, Comprehension = 1, Function = 2, Class = 3, Module = 4, Builtin = 5 } export declare const enum NameBindingType { Nonlocal = 0, Global = 1 } export interface SymbolWithScope { symbol: Symbol; scope: Scope; isOutsideCallerModule: boolean; isBeyondExecutionScope: boolean; usesNonlocalBinding: boolean; usesGlobalBinding: boolean; } export interface GlobalScopeResult { scope: Scope; isBeyondExecutionScope: boolean; } export interface LookupSymbolOptions { isOutsideCallerModule?: boolean; isBeyondExecutionScope?: boolean; useProxyScope?: boolean; usesNonlocalBinding?: boolean; usesGlobalBinding?: boolean; } export declare class Scope { readonly type: ScopeType; readonly parent: Scope | undefined; readonly proxy: Scope | undefined; readonly symbolTable: SymbolTable; readonly notLocalBindings: Map; slotsNames: string[] | undefined; constructor(type: ScopeType, parent?: Scope, proxy?: Scope); getGlobalScope(): GlobalScopeResult; isIndependentlyExecutable(): boolean; lookUpSymbol(name: string): Symbol | undefined; lookUpSymbolRecursive(name: string, options?: LookupSymbolOptions): SymbolWithScope | undefined; addSymbol(name: string, flags: SymbolFlags): Symbol; getBindingType(name: string): NameBindingType | undefined; setBindingType(name: string, bindingType: NameBindingType): Map; setSlotsNames(names: string[]): void; getSlotsNames(): string[] | undefined; }