import { SourceFile } from "../tree";
import { TreeVisitor, ValidRecipeReturnType } from "../visitor";
import { Expression, J, NameTree, Statement } from "./tree";
import { Draft } from "mutative";
import { Type } from "./type";
/**
* Register additional kind values for interfaces that extend J.
* This allows isJava to recognize implementations of those interfaces.
* @param kinds - Array of kind values to register
* @param adapter - Adapter function to transform a JavaVisitor to, for example, a JavaScriptVisitor
*/
export declare function registerJavaExtensionKinds(kinds: readonly string[], adapter:
(visitor: JavaVisitor
) => JavaVisitor
): void;
export declare function isJava(tree: any): tree is J;
export declare class JavaVisitor
extends TreeVisitor {
isAcceptable(sourceFile: SourceFile): Promise;
protected visitExpression(expression: Expression, p: P): Promise;
protected visitStatement(statement: Statement, p: P): Promise;
visitSpace(space: J.Space, p: P): Promise;
protected visitType(javaType: Type | undefined, p: P): Promise;
protected visitTypeName(nameTree: N, p: P): Promise;
protected visitAnnotatedType(annotatedType: J.AnnotatedType, p: P): Promise;
protected visitAnnotation(annotation: J.Annotation, p: P): Promise;
protected visitArrayAccess(arrayAccess: J.ArrayAccess, p: P): Promise;
protected visitArrayDimension(arrayDimension: J.ArrayDimension, p: P): Promise;
protected visitArrayType(arrayType: J.ArrayType, p: P): Promise;
protected visitAssert(anAssert: J.Assert, p: P): Promise;
protected visitAssignment(assignment: J.Assignment, p: P): Promise;
protected visitAssignmentOperation(assignOp: J.AssignmentOperation, p: P): Promise;
protected visitBinary(binary: J.Binary, p: P): Promise;
protected visitBlock(block: J.Block, p: P): Promise;
protected visitBreak(breakStatement: J.Break, p: P): Promise;
protected visitCase(aCase: J.Case, p: P): Promise;
protected visitClassDeclaration(classDecl: J.ClassDeclaration, p: P): Promise;
protected visitClassDeclarationKind(kind: J.ClassDeclaration.Kind, p: P): Promise;
protected visitCompilationUnit(cu: J.CompilationUnit, p: P): Promise;
protected visitContinue(continueStatement: J.Continue, p: P): Promise;
protected visitControlParentheses(controlParens: J.ControlParentheses, p: P): Promise;
protected visitDeconstructionPattern(pattern: J.DeconstructionPattern, p: P): Promise;
protected visitDoWhileLoop(doWhileLoop: J.DoWhileLoop, p: P): Promise;
protected visitEmpty(empty: J.Empty, p: P): Promise;
protected visitEnumValue(enumValue: J.EnumValue, p: P): Promise;
protected visitEnumValueSet(enumValueSet: J.EnumValueSet, p: P): Promise;
protected visitErroneous(erroneous: J.Erroneous, p: P): Promise;
protected visitFieldAccess(fieldAccess: J.FieldAccess, p: P): Promise;
protected visitForEachLoop(forLoop: J.ForEachLoop, p: P): Promise;
protected visitForEachLoopControl(control: J.ForEachLoop.Control, p: P): Promise;
protected visitForLoop(forLoop: J.ForLoop, p: P): Promise;
protected visitForLoopControl(control: J.ForLoop.Control, p: P): Promise;
protected visitIdentifier(ident: J.Identifier, p: P): Promise;
protected visitIf(iff: J.If, p: P): Promise;
protected visitElse(anElse: J.If.Else, p: P): Promise;
protected visitImport(anImport: J.Import, p: P): Promise;
protected visitInstanceOf(instanceOf: J.InstanceOf, p: P): Promise;
protected visitIntersectionType(intersectionType: J.IntersectionType, p: P): Promise;
protected visitLabel(label: J.Label, p: P): Promise;
protected visitLambda(lambda: J.Lambda, p: P): Promise;
protected visitLambdaParameters(params: J.Lambda.Parameters, p: P): Promise;
protected visitLiteral(literal: J.Literal, p: P): Promise;
protected visitMemberReference(memberRef: J.MemberReference, p: P): Promise;
protected visitMethodDeclaration(method: J.MethodDeclaration, p: P): Promise;
protected visitMethodInvocation(method: J.MethodInvocation, p: P): Promise;
protected visitModifier(modifier: J.Modifier, p: P): Promise;
protected visitMultiCatch(multiCatch: J.MultiCatch, p: P): Promise;
protected visitNewArray(newArray: J.NewArray, p: P): Promise;
protected visitNewClass(newClass: J.NewClass, p: P): Promise;
protected visitNullableType(nullableType: J.NullableType, p: P): Promise;
protected visitPackage(aPackage: J.Package, p: P): Promise;
protected visitParameterizedType(parameterizedType: J.ParameterizedType, p: P): Promise;
protected visitParentheses(parentheses: J.Parentheses, p: P): Promise;
protected visitParenthesizedTypeTree(parTypeTree: J.ParenthesizedTypeTree, p: P): Promise;
protected visitPrimitive(primitive: J.Primitive, p: P): Promise;
protected visitReturn(ret: J.Return, p: P): Promise;
protected visitSwitch(aSwitch: J.Switch, p: P): Promise;
protected visitSwitchExpression(switchExpr: J.SwitchExpression, p: P): Promise;
protected visitSynchronized(sync: J.Synchronized, p: P): Promise;
protected visitTernary(ternary: J.Ternary, p: P): Promise;
protected visitThrow(thrown: J.Throw, p: P): Promise;
protected visitTry(tryable: J.Try, p: P): Promise;
protected visitTryResource(resource: J.Try.Resource, p: P): Promise;
protected visitTryCatch(tryCatch: J.Try.Catch, p: P): Promise;
protected visitTypeCast(typeCast: J.TypeCast, p: P): Promise;
protected visitTypeParameter(typeParam: J.TypeParameter, p: P): Promise;
protected visitTypeParameters(typeParams: J.TypeParameters, p: P): Promise;
protected visitUnary(unary: J.Unary, p: P): Promise;
protected visitUnknown(unknown: J.Unknown, p: P): Promise;
protected visitUnknownSource(source: J.UnknownSource, p: P): Promise;
protected visitVariableDeclarations(varDecls: J.VariableDeclarations, p: P): Promise;
protected visitVariable(variable: J.VariableDeclarations.NamedVariable, p: P): Promise;
protected visitWhileLoop(whileLoop: J.WhileLoop, p: P): Promise;
protected visitWildcard(wildcard: J.Wildcard, p: P): Promise;
protected visitYield(aYield: J.Yield, p: P): Promise;
protected visitOptionalRightPadded(right: J.RightPadded | undefined, p: P): Promise | undefined>;
visitRightPadded(right: J.RightPadded, p: P): Promise | undefined>;
protected visitOptionalLeftPadded(left: J.LeftPadded | undefined, p: P): Promise | undefined>;
visitLeftPadded(left: J.LeftPadded, p: P): Promise | undefined>;
protected visitOptionalContainer(container: J.Container | undefined, p: P): Promise | undefined>;
visitContainer(container: J.Container, p: P): Promise>;
protected produceJava(before: J2, p: P, recipe?: (draft: Draft) => ValidRecipeReturnType> | PromiseLike>>): Promise;
protected accept(t: J, p: P): Promise;
}
//# sourceMappingURL=visitor.d.ts.map