// Type definitions for ESTree AST extensions for Facebook Flow // Project: https://github.com/estree/estree // Definitions by: RReverser // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare namespace ESTree { interface FlowTypeAnnotation extends Node {} interface FlowBaseTypeAnnotation extends FlowTypeAnnotation {} interface FlowLiteralTypeAnnotation extends FlowTypeAnnotation, Literal {} interface FlowDeclaration extends Declaration {} interface AnyTypeAnnotation extends FlowBaseTypeAnnotation {} interface ArrayTypeAnnotation extends FlowTypeAnnotation { elementType: FlowTypeAnnotation; } interface BooleanLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} interface BooleanTypeAnnotation extends FlowBaseTypeAnnotation {} interface ClassImplements extends Node { id: Identifier; typeParameters?: TypeParameterInstantiation | null; } interface ClassProperty { key: Expression; value?: Expression | null; typeAnnotation?: TypeAnnotation | null; computed: boolean; static: boolean; } interface DeclareClass extends FlowDeclaration { id: Identifier; typeParameters?: TypeParameterDeclaration | null; body: ObjectTypeAnnotation; extends: Array; } interface DeclareFunction extends FlowDeclaration { id: Identifier; } interface DeclareModule extends FlowDeclaration { id: Literal | Identifier; body: BlockStatement; } interface DeclareVariable extends FlowDeclaration { id: Identifier; } interface FunctionTypeAnnotation extends FlowTypeAnnotation { params: Array; returnType: FlowTypeAnnotation; rest?: FunctionTypeParam | null; typeParameters?: TypeParameterDeclaration | null; } interface FunctionTypeParam { name: Identifier; typeAnnotation: FlowTypeAnnotation; optional: boolean; } interface GenericTypeAnnotation extends FlowTypeAnnotation { id: Identifier | QualifiedTypeIdentifier; typeParameters?: TypeParameterInstantiation | null; } interface InterfaceExtends extends Node { id: Identifier | QualifiedTypeIdentifier; typeParameters?: TypeParameterInstantiation | null; } interface InterfaceDeclaration extends FlowDeclaration { id: Identifier; typeParameters?: TypeParameterDeclaration | null; extends: Array; body: ObjectTypeAnnotation; } interface IntersectionTypeAnnotation extends FlowTypeAnnotation { types: Array; } interface MixedTypeAnnotation extends FlowBaseTypeAnnotation {} interface NullableTypeAnnotation extends FlowTypeAnnotation { typeAnnotation: TypeAnnotation; } interface NumberLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} interface NumberTypeAnnotation extends FlowBaseTypeAnnotation {} interface StringLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} interface StringTypeAnnotation extends FlowBaseTypeAnnotation {} interface TupleTypeAnnotation extends FlowTypeAnnotation { types: Array; } interface TypeofTypeAnnotation extends FlowTypeAnnotation { argument: FlowTypeAnnotation; } interface TypeAlias extends FlowDeclaration { id: Identifier; typeParameters?: TypeParameterDeclaration | null; right: FlowTypeAnnotation; } interface TypeAnnotation extends Node { typeAnnotation: FlowTypeAnnotation; } interface TypeCastExpression extends Expression { expression: Expression; typeAnnotation: TypeAnnotation; } interface TypeParameterDeclaration extends Node { params: Array; } interface TypeParameterInstantiation extends Node { params: Array; } interface ObjectTypeAnnotation extends FlowTypeAnnotation { properties: Array; indexers: Array; callProperties: Array; } interface ObjectTypeCallProperty extends Node { value: FunctionTypeAnnotation; static: boolean; } interface ObjectTypeIndexer extends Node { id: Identifier; key: FlowTypeAnnotation; value: FlowTypeAnnotation; static: boolean; } interface ObjectTypeProperty extends Node { key: Expression; value: FlowTypeAnnotation; optional: boolean; static: boolean; } interface QualifiedTypeIdentifier extends Node { qualification: Identifier | QualifiedTypeIdentifier; id: Identifier; } interface UnionTypeAnnotation extends FlowTypeAnnotation { types: Array; } interface VoidTypeAnnotation extends FlowBaseTypeAnnotation {} }