import { NativeType } from '@il2js/core';
import { Il2CppTypeDefinitionInfo, Il2CppTypeInfo } from '../../Types';
import { TsGenContext } from './TsGenContext';
export interface TypeImport {
    from: string;
    types: TypeTree;
}
export declare type TypeTree = {
    [key: string]: Readonly<TypeTree | NativeType> | undefined;
};
export declare enum TypeDisposition {
    Missing = 0,
    Generated = 1,
    Imported = 2
}
export declare class TypeRegistry {
    private types;
    private typeIds;
    readonly imports: [string[], string][];
    findType(type: Il2CppTypeInfo): NativeType | undefined;
    getTypeDisposition(type: Il2CppTypeInfo): TypeDisposition;
    hasType(type: Il2CppTypeInfo): boolean;
    getTypeName(typeDef: Il2CppTypeInfo, context: TsGenContext, relativeToType?: Il2CppTypeInfo): string;
    addTypeDefs(types: Il2CppTypeDefinitionInfo[]): void;
    addTypeInfo(types: Il2CppTypeInfo[]): void;
    addTypes({ from, types }: TypeImport): void;
}
