import * as spec from '@jsii/spec';
export interface TypeReferenceVisitor {
named(ref: spec.NamedTypeReference): A;
primitive(ref: spec.PrimitiveTypeReference): A;
collection(ref: spec.CollectionTypeReference): A;
union(ref: spec.UnionTypeReference): A;
intersection(ref: spec.IntersectionTypeReference): A;
}
export declare function visitTypeReference(typeRef: spec.TypeReference, visitor: TypeReferenceVisitor): A;
export interface TypeVisitor {
classType(t: spec.ClassType): A;
interfaceType(t: spec.InterfaceType): A;
dataType(t: spec.InterfaceType): A;
enumType(t: spec.EnumType): A;
}
export declare function visitType(t: spec.Type, visitor: TypeVisitor): A;
export declare function isDataType(t: spec.Type): t is spec.InterfaceType;
export declare function isBehavioralInterfaceType(t: spec.Type): t is spec.InterfaceType;
//# sourceMappingURL=type-visitor.d.ts.map