import { AttributeNode, BlockExpressionNode, ElementDeclarationNode, FunctionApplicationNode, FunctionExpressionNode, InfixExpressionNode, ListExpressionNode, LiteralNode, PrefixExpressionNode, PrimaryExpressionNode, ProgramNode, SyntaxNode, TupleExpressionNode, UseDeclarationNode, UseSpecifierNode, VariableNode, WildcardNode } from '../types/nodes'; import { default as Report } from '../types/report'; import { SyntaxToken, SyntaxTokenKind } from '../types/tokens'; import { ElementKind, SettingName } from '../types/keywords'; import { ImportKind } from '../types/symbol'; export declare function isValidName(nameNode: SyntaxNode): boolean; export declare function isValidAlias(aliasNode: SyntaxNode): aliasNode is PrimaryExpressionNode & { expression: VariableNode; }; export declare function isSimpleName(nameNode: SyntaxNode): nameNode is PrimaryExpressionNode & { expression: VariableNode; }; export declare function isValidSettingList(settingListNode: SyntaxNode): settingListNode is ListExpressionNode; export declare function hasComplexBody(node: ElementDeclarationNode): node is ElementDeclarationNode & { body: BlockExpressionNode; bodyColon: undefined; }; export declare function hasSimpleBody(node: ElementDeclarationNode): node is ElementDeclarationNode & { bodyColon: SyntaxToken; }; export declare function isValidPartialInjection(node?: SyntaxNode): node is PrefixExpressionNode & { op: { value: '~'; }; }; export declare function isRelationshipOp(op?: string): boolean; export declare function isDependencyOp(op?: string): boolean; export declare function isValidHexColor(value?: SyntaxNode): value is PrimaryExpressionNode & { expression: LiteralNode & { literal: { kind: SyntaxTokenKind.COLOR_LITERAL; }; }; }; export declare function isValidColorOrNone(value?: SyntaxNode): boolean; export declare function isValidDefaultValue(value?: SyntaxNode): boolean; export type SignedNumberExpression = (PrimaryExpressionNode & { expression: LiteralNode & { literal: { kind: SyntaxTokenKind.NUMERIC_LITERAL; }; }; }) | (PrefixExpressionNode & { op: '-' | '+'; expression: SignedNumberExpression; }); export declare function isExpressionASignedNumberExpression(value?: SyntaxNode): value is SignedNumberExpression; export declare function isUnaryRelationship(value?: SyntaxNode): value is PrefixExpressionNode; export declare function isUnaryDependency(value?: SyntaxNode): value is PrefixExpressionNode; export declare function isTupleOfVariables(value?: SyntaxNode): value is TupleExpressionNode & { elementList: (PrimaryExpressionNode & { expression: VariableNode; })[]; }; export declare function isValidColumnType(type: SyntaxNode): boolean; export type Settings = Record; export declare function isValidMetadataValue(value?: SyntaxNode): boolean; export declare function aggregateSettingList(settingList?: ListExpressionNode): Report; export declare function isExpressionAQuotedString(value?: unknown): value is PrimaryExpressionNode & ({ expression: VariableNode & { variable: SyntaxToken & { kind: SyntaxTokenKind.QUOTED_STRING; }; }; } | { expression: LiteralNode & { literal: SyntaxToken & { kind: SyntaxTokenKind.STRING_LITERAL; }; }; }); export declare function isExpressionAVariableNode(value?: unknown): value is PrimaryExpressionNode & { expression: VariableNode & { variable: SyntaxToken; }; }; export declare function isWildcardExpression(node: SyntaxNode | undefined): boolean; export declare function isExpressionAnIdentifierNode(value?: unknown): value is PrimaryExpressionNode & { expression: VariableNode & { variable: { kind: SyntaxTokenKind.IDENTIFIER; }; }; }; type AccessExpression = InfixExpressionNode & { leftExpression: SyntaxNode; rightExpression: SyntaxNode; op: SyntaxToken & { value: '.'; }; }; type DotDelimitedIdentifier = PrimaryExpressionNode | (AccessExpression & { rightExpression: AccessExpression | PrimaryExpressionNode; }); export declare function isAccessExpression(node?: SyntaxNode): node is AccessExpression; export declare function isDotDelimitedIdentifier(node?: SyntaxNode): node is DotDelimitedIdentifier; export declare function isElementNode(node: SyntaxNode | undefined, kind: T): node is ElementDeclarationNode & { type: { value: T; }; }; export declare function isUseDeclaration(node: SyntaxNode): node is UseDeclarationNode; export declare function isUseSpecifier(node: SyntaxNode, kind?: ImportKind): node is UseSpecifierNode; export declare function isWildcardSpecifier(node: SyntaxNode): node is WildcardNode; export declare function isProgramNode(node: SyntaxNode | undefined): node is ProgramNode; export declare function isElementFieldNode(node: SyntaxNode | undefined, ...kinds: ElementKind[]): node is FunctionApplicationNode; export declare function isInsideElementBody(node: SyntaxNode, kind: ElementKind): boolean; export declare function isWithinNthArgOfField(node: SyntaxNode, nth: number): boolean; export declare function isInsideSettingList(node: SyntaxNode): boolean; export declare function isInsideSettingValue(node: SyntaxNode, settingName: SettingName): boolean; export declare function isBinaryRelationship(value?: SyntaxNode): value is InfixExpressionNode; export declare function isEqualTupleOperands(value: InfixExpressionNode): boolean; export declare function isValidIndexName(value?: SyntaxNode): value is (PrimaryExpressionNode & { expression: VariableNode; }) | FunctionExpressionNode; export declare function getRightmostVariable(node: SyntaxNode): SyntaxNode | undefined; export declare function isTerminalAccessFragment(node: SyntaxNode): boolean; export {};