import ts from 'typescript';
import { ScriptBuilder } from '../sb';
import { VisitOptions } from '../types';
import { ResolvedScope } from './ResolvedScope';
import { Name, Scope } from './Scope';
export declare class CapturingScope implements Scope {
    readonly node: ts.Node;
    readonly index: number;
    readonly parent?: CapturingScope | undefined;
    private mutableVariableCount;
    private readonly bindings;
    constructor(node: ts.Node, index: number, parent?: CapturingScope | undefined);
    add(name: string): Name;
    addUnique(): Name;
    set(sb: ScriptBuilder, node: ts.Node): void;
    get(sb: ScriptBuilder, node: ts.Node): void;
    getThis(sb: ScriptBuilder, node: ts.Node): void;
    getGlobal(sb: ScriptBuilder, node: ts.Node): void;
    setGlobal(sb: ScriptBuilder, node: ts.Node): void;
    pushAll(sb: ScriptBuilder, node: ts.Node): void;
    emit(sb: ScriptBuilder, node: ts.Node, options: VisitOptions, func: (options: VisitOptions) => void): void;
    resolve(parent?: ResolvedScope | undefined): ResolvedScope;
}
