/*! * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: MIT */ import { QueryLanguages } from '../asl-utils'; import { ArrayASTNode, ASTNode, JSONDocument, ObjectASTNode, PropertyASTNode, StringASTNode } from 'vscode-json-languageservice'; import { Position } from 'vscode-languageserver-types'; export interface ASTTree extends JSONDocument { root: ASTNode; } export interface ASLOptions { ignoreColonOffset?: boolean; shouldShowStateSnippets?: boolean; shouldShowErrorSnippets?: { retry: boolean; catch: boolean; }; } export interface CompleteStateNameOptions { shouldAddLeftQuote?: boolean; shouldAddRightQuote?: boolean; shouldAddLeadingSpace?: boolean; shoudlAddTrailingComma?: boolean; } export interface ProcessYamlDocForCompletionOutput { modifiedDocText: string; tempPositionForCompletions: Position; startPositionForInsertion: Position; endPositionForInsertion: Position; shouldPrependSpace: boolean; } export declare function isStringNode(node: ASTNode): node is StringASTNode; export declare function isPropertyNode(node: ASTNode): node is PropertyASTNode; export declare function isObjectNode(node: ASTNode): node is ObjectASTNode; export declare function isArrayNode(node: ASTNode): node is ArrayASTNode; export declare function findPropChildByName(rootNode: ObjectASTNode, name: string): PropertyASTNode | undefined; export declare function isChildOfStates(node: ASTNode): boolean; export declare function insideStateNode(node: ASTNode): boolean; /** Finds the relevant node at a given location in respective json string */ export declare function findNodeAtLocation(rootNode: ASTNode, loc: number): ASTNode | undefined; /** Finds the closest ancestor property node named "States" */ export declare function findClosestAncestorStateNode(node: ASTNode): PropertyASTNode | undefined; /** Extracts the list of state names from given property node named "States" */ export declare function getListOfStateNamesFromStateNode(node: PropertyASTNode, ignoreColonOffset?: boolean): string[]; interface AncestorASTNodeInfo { node: PropertyASTNode; nodeName: string; } /** Finds the closest ancestor property given node names */ export declare function findClosestAncestorNodeByName(node: ASTNode, NodeName: string[]): AncestorASTNodeInfo | undefined; /** * Get the state name, type, and query language of current node */ export declare function getStateInfo(node: ASTNode): { stateName: string; stateType: string | undefined; queryLanguage: QueryLanguages | undefined; } | undefined; export {};