import { Dictionary } from "../common"; export interface ScopeVariableInfo { name: string; type: string; translatedName: string; } export declare class ScopeVariables { private _owner; private _variables; private _parentScope; private _argMap; constructor(owner: ScopeStack, parentScope?: ScopeVariables, argMap?: Dictionary); addVariable(name: string, type: string): void; nextVariable(type: string): ScopeVariableInfo; getVariable(name: string): ScopeVariableInfo; readonly parentScope: ScopeVariables; } export declare class ScopeStack { private _currentScope; private _globalScope; private _translatedNames; constructor(); resetScope(): void; pushScope(argMap?: Dictionary): void; popScope(): void; newTranslatedName(name: string, type: string): string; forEach(callback: (name: string, type: string) => void): void; nextVariableTranslatedName(type: string): string; nextVariableName(type: string): string; nextVariable(type: string): ScopeVariableInfo; addVariable(name: string, type: string, scope: "local" | "global"): void; translateVariableName(name: string): string; getVariable(name: string): ScopeVariableInfo; }