import { NativeType } from '@il2js/core';
import { Il2CppTypeDefinitionInfo, Il2CppTypeInfo } from './Types';
import { CodegenContext } from './Targets';
import { TypeDisposition, ITypeRegistry } from './Types/Compiler';
export interface TypeImport {
    from: string;
    types: TypeTree;
}
export declare type TypeTree = {
    [key: string]: Readonly<TypeTree | NativeType> | undefined;
};
export declare class TypeRegistry implements ITypeRegistry {
    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: CodegenContext, relativeToType?: Il2CppTypeInfo): string;
    addTypeDefs(types: Il2CppTypeDefinitionInfo[]): void;
    addTypeInfo(types: Il2CppTypeInfo[]): void;
    addTypes({ from, types }: TypeImport): void;
}
