| import { Type, YAMLSyntaxError } from './util' | 
|   | 
| export default function parseCST(str: string): ParsedCST | 
|   | 
| export interface ParsedCST extends Array<CST.Document> { | 
|   setOrigRanges(): boolean | 
| } | 
|   | 
| export namespace CST { | 
|   interface Range { | 
|     start: number | 
|     end: number | 
|     origStart?: number | 
|     origEnd?: number | 
|     isEmpty(): boolean | 
|   } | 
|   | 
|   interface ParseContext { | 
|     /** Node starts at beginning of line */ | 
|     atLineStart: boolean | 
|     /** true if currently in a collection context */ | 
|     inCollection: boolean | 
|     /** true if currently in a flow context */ | 
|     inFlow: boolean | 
|     /** Current level of indentation */ | 
|     indent: number | 
|     /** Start of the current line */ | 
|     lineStart: number | 
|     /** The parent of the node */ | 
|     parent: Node | 
|     /** Source of the YAML document */ | 
|     src: string | 
|   } | 
|   | 
|   interface Node { | 
|     context: ParseContext | null | 
|     /** if not null, indicates a parser failure */ | 
|     error: YAMLSyntaxError | null | 
|     /** span of context.src parsed into this node */ | 
|     range: Range | null | 
|     valueRange: Range | null | 
|     /** anchors, tags and comments */ | 
|     props: Range[] | 
|     /** specific node type */ | 
|     type: Type | 
|     /** if non-null, overrides source value */ | 
|     value: string | null | 
|   | 
|     readonly anchor: string | null | 
|     readonly comment: string | null | 
|     readonly hasComment: boolean | 
|     readonly hasProps: boolean | 
|     readonly jsonLike: boolean | 
|     readonly rangeAsLinePos: null | { | 
|       start: { line: number; col: number } | 
|       end?: { line: number; col: number } | 
|     } | 
|     readonly rawValue: string | null | 
|     readonly tag: | 
|       | null | 
|       | { verbatim: string } | 
|       | { handle: string; suffix: string } | 
|     readonly valueRangeContainsNewline: boolean | 
|   } | 
|   | 
|   interface Alias extends Node { | 
|     type: Type.ALIAS | 
|     /** contain the anchor without the * prefix */ | 
|     readonly rawValue: string | 
|   } | 
|   | 
|   type Scalar = BlockValue | PlainValue | QuoteValue | 
|   | 
|   interface BlockValue extends Node { | 
|     type: Type.BLOCK_FOLDED | Type.BLOCK_LITERAL | 
|     chomping: 'CLIP' | 'KEEP' | 'STRIP' | 
|     blockIndent: number | null | 
|     header: Range | 
|     readonly strValue: string | null | 
|   } | 
|   | 
|   interface BlockFolded extends BlockValue { | 
|     type: Type.BLOCK_FOLDED | 
|   } | 
|   | 
|   interface BlockLiteral extends BlockValue { | 
|     type: Type.BLOCK_LITERAL | 
|   } | 
|   | 
|   interface PlainValue extends Node { | 
|     type: Type.PLAIN | 
|     readonly strValue: string | null | 
|   } | 
|   | 
|   interface QuoteValue extends Node { | 
|     type: Type.QUOTE_DOUBLE | Type.QUOTE_SINGLE | 
|     readonly strValue: | 
|       | null | 
|       | string | 
|       | { str: string; errors: YAMLSyntaxError[] } | 
|   } | 
|   | 
|   interface QuoteDouble extends QuoteValue { | 
|     type: Type.QUOTE_DOUBLE | 
|   } | 
|   | 
|   interface QuoteSingle extends QuoteValue { | 
|     type: Type.QUOTE_SINGLE | 
|   } | 
|   | 
|   interface Comment extends Node { | 
|     type: Type.COMMENT | 
|     readonly anchor: null | 
|     readonly comment: string | 
|     readonly rawValue: null | 
|     readonly tag: null | 
|   } | 
|   | 
|   interface BlankLine extends Node { | 
|     type: Type.BLANK_LINE | 
|   } | 
|   | 
|   interface MapItem extends Node { | 
|     type: Type.MAP_KEY | Type.MAP_VALUE | 
|     node: ContentNode | null | 
|   } | 
|   | 
|   interface MapKey extends MapItem { | 
|     type: Type.MAP_KEY | 
|   } | 
|   | 
|   interface MapValue extends MapItem { | 
|     type: Type.MAP_VALUE | 
|   } | 
|   | 
|   interface Map extends Node { | 
|     type: Type.MAP | 
|     /** implicit keys are not wrapped */ | 
|     items: Array<BlankLine | Comment | Alias | Scalar | MapItem> | 
|   } | 
|   | 
|   interface SeqItem extends Node { | 
|     type: Type.SEQ_ITEM | 
|     node: ContentNode | null | 
|   } | 
|   | 
|   interface Seq extends Node { | 
|     type: Type.SEQ | 
|     items: Array<BlankLine | Comment | SeqItem> | 
|   } | 
|   | 
|   interface FlowChar { | 
|     char: '{' | '}' | '[' | ']' | ',' | '?' | ':' | 
|     offset: number | 
|     origOffset?: number | 
|   } | 
|   | 
|   interface FlowCollection extends Node { | 
|     type: Type.FLOW_MAP | Type.FLOW_SEQ | 
|     items: Array< | 
|       FlowChar | BlankLine | Comment | Alias | Scalar | FlowCollection | 
|     > | 
|   } | 
|   | 
|   interface FlowMap extends FlowCollection { | 
|     type: Type.FLOW_MAP | 
|   } | 
|   | 
|   interface FlowSeq extends FlowCollection { | 
|     type: Type.FLOW_SEQ | 
|   } | 
|   | 
|   type ContentNode = Alias | Scalar | Map | Seq | FlowCollection | 
|   | 
|   interface Directive extends Node { | 
|     type: Type.DIRECTIVE | 
|     name: string | 
|     readonly anchor: null | 
|     readonly parameters: string[] | 
|     readonly tag: null | 
|   } | 
|   | 
|   interface Document extends Node { | 
|     type: Type.DOCUMENT | 
|     directives: Array<BlankLine | Comment | Directive> | 
|     contents: Array<BlankLine | Comment | ContentNode> | 
|     readonly anchor: null | 
|     readonly comment: null | 
|     readonly tag: null | 
|   } | 
| } |