import { SyntaxToken } from '../../../lexer/tokens';
import { default as SymbolFactory } from '../../symbol/factory';
import { CompileError } from '../../../errors';
import { BlockExpressionNode, ElementDeclarationNode, FunctionApplicationNode, ListExpressionNode } from '../../../parser/nodes';
import { ElementValidator } from '../types';
import { default as SymbolTable } from '../../../analyzer/symbol/symbolTable';
export default class RefValidator implements ElementValidator {
    private declarationNode;
    private publicSymbolTable;
    private symbolFactory;
    constructor(declarationNode: ElementDeclarationNode & {
        type: SyntaxToken;
    }, publicSymbolTable: SymbolTable, symbolFactory: SymbolFactory);
    validate(): CompileError[];
    private validateContext;
    private validateName;
    private validateAlias;
    private validateSettingList;
    validateBody(body?: FunctionApplicationNode | BlockExpressionNode): CompileError[];
    validateFields(fields: FunctionApplicationNode[]): CompileError[];
    validateFieldSettings(settings: ListExpressionNode): CompileError[];
    private validateSubElements;
}
