import { Option, Dict } from '../core'; import { TemplateMeta } from '@glimmer/wire-format'; export interface Symbols { named: Option>; yields: Option>; locals: Option>; partialArgs: Option; } export interface SymbolTable { getMeta(): Option; getSymbols(): Symbols; getSymbol(kind: 'local' | 'named' | 'yields', name: string): Option; getPartialArgs(): Option; } export interface ProgramSymbolTable extends SymbolTable { size: number; getSymbol(kind: 'local', name: string): null; getSymbol(kind: 'named' | 'yields', name: string): Option; } export interface BlockSymbolTable extends SymbolTable { getSymbol(kind: 'local' | 'named' | 'yields', name: string): Option; } export default SymbolTable;