import { type QuoteStyle, type RootResult } from './RootResult' /** * A parse sub result that might not be a valid type expression on its own. */ export type NonRootResult = RootResult | PropertyResult | ObjectFieldResult | JsdocObjectFieldResult | KeyValueResult | MappedTypeResult | IndexSignatureResult export interface ObjectFieldResult { type: 'JsdocTypeObjectField' key: string | MappedTypeResult | IndexSignatureResult right: RootResult | undefined optional: boolean readonly: boolean meta: { quote: QuoteStyle | undefined } } export interface JsdocObjectFieldResult { type: 'JsdocTypeJsdocObjectField' left: RootResult right: RootResult } export interface PropertyResult { type: 'JsdocTypeProperty' value: string meta: { quote: QuoteStyle | undefined } } /** * A key value pair represented by a `:`. Can occur as a named parameter of a {@link FunctionResult} or as an entry for * an {@link TupleResult}. Is a {@link NonRootResult}. */ export interface KeyValueResult { type: 'JsdocTypeKeyValue' key: string right: RootResult | undefined optional: boolean variadic: boolean } export interface IndexSignatureResult { type: 'JsdocTypeIndexSignature' key: string right: RootResult } export interface MappedTypeResult { type: 'JsdocTypeMappedType' key: string right: RootResult }