import type { Il2CppTypeDefinitionInfo, Il2CppTypeInfo, Il2JsonFile } from '.';
import { OncePer } from './Utilities';
export interface TypeFilter {
    visitType?(type: Il2CppTypeDefinitionInfo): TypeFilter | boolean;
    visitTypeUsage?(type: Il2CppTypeInfo): TypeFilter | boolean;
}
export declare class OutputFilter {
    private file;
    readonly typesList: Set<Il2CppTypeDefinitionInfo>;
    readonly visitors: OncePer<TypeFilter, Il2CppTypeDefinitionInfo | Il2CppTypeInfo>;
    constructor(file: Il2JsonFile);
    lookupType(type: Il2CppTypeInfo): Il2CppTypeDefinitionInfo | undefined;
    processRefs(visitor: TypeFilter, ...typeRefs: (Il2CppTypeInfo | undefined)[]): this;
    includeReferences(visitor: TypeFilter, typeDef: Il2CppTypeDefinitionInfo): this;
    include(visitor: TypeFilter): this;
}
