import ts from 'typescript';
import { ScriptBuilder } from '../sb';
import { VisitOptions } from '../types';
import { Name, Scope } from './Scope';
export declare class ResolvedScope implements Scope {
    private readonly variableCount;
    private readonly parent?;
    private mutablePosition;
    private readonly mutableVariables;
    private readonly uniqueVariables;
    private readonly scopeLength;
    private readonly addScope;
    private readonly scopeCount;
    constructor(variableCount: number, parent?: ResolvedScope | undefined);
    add(name: string): Name;
    addUnique(): Name;
    set(sb: ScriptBuilder, node: ts.Node, optionsIn: VisitOptions, name: Name | string, scopeLength?: number, scopePosition?: number): void;
    get(sb: ScriptBuilder, node: ts.Node, options: VisitOptions, name: Name | string, scopeLength?: number, scopePosition?: number): void;
    getThis(sb: ScriptBuilder, node: ts.Node, _options: VisitOptions): void;
    getGlobal(sb: ScriptBuilder, node: ts.Node, options: VisitOptions): void;
    setGlobal(sb: ScriptBuilder, node: ts.Node, options: VisitOptions): void;
    pushAll(sb: ScriptBuilder, node: ts.Node, _options: VisitOptions): void;
    emit(sb: ScriptBuilder, node: ts.Node, options: VisitOptions, func: (options: VisitOptions) => void): void;
    private surround;
    private emitNonLocal;
    private getPosition;
    private loadScope;
    private loadAll;
}
