/**
 * Alias Table — Maps Surface Names to Canonical TypeIds
 *
 * This module provides the alias table that maps TypeScript surface names
 * to their canonical CLR TypeIds. This replaces the scattered type mappings
 * in clr-type-mappings.ts with a unified, TypeId-based approach.
 *
 * INVARIANT: All surface names (primitives, globals, $instance interfaces)
 * resolve to the same TypeId as their CLR counterparts.
 *
 * Example:
 * - "string" → TypeId(System.String)
 * - "String" → TypeId(System.String)
 * - "System.String" → TypeId(System.String)
 * - "String$instance" → TypeId(System.String)
 *
 * This unification is critical for Alice's TypeSystem spec:
 * > "string and System.String unify to the same TypeId (stableId)"
 */
import type { TypeId, AssemblyTypeCatalog } from "./types.js";
/**
 * Alias table maps surface names to canonical TypeIds.
 *
 * This is a read-only map built once at universe construction time.
 */
export type AliasTable = ReadonlyMap<string, TypeId>;
/**
 * Build the alias table from a CLR catalog.
 *
 * For each alias, we look up the corresponding CLR type in the catalog
 * and map the alias to that TypeId.
 *
 * @param clrCatalog - The CLR catalog containing loaded type metadata
 * @returns AliasTable mapping surface names to TypeIds
 */
export declare const buildAliasTable: (clrCatalog: AssemblyTypeCatalog) => AliasTable;
/**
 * Resolve a type name to its canonical TypeId using the alias table.
 *
 * @param name - The type name to resolve (primitive, global, or CLR name)
 * @param aliasTable - The alias table
 * @returns The TypeId if found, undefined otherwise
 */
export declare const resolveAlias: (name: string, aliasTable: AliasTable) => TypeId | undefined;
/**
 * Check if a name is a known alias.
 */
export declare const isKnownAlias: (name: string, aliasTable: AliasTable) => boolean;
/**
 * Check if a type name is a known stdlib type (primitive, global, or System.*).
 *
 * This is used for fatal diagnostic stratification:
 * - Missing stdlib type → fatal
 * - Missing third-party type → error + unknownType
 */
export declare const isStdlibTypeName: (name: string) => boolean;
/**
 * Get all primitive type names.
 */
export declare const getPrimitiveNames: () => readonly string[];
/**
 * Get all global type names.
 */
export declare const getGlobalNames: () => readonly string[];
/**
 * Normalize a type name to its CLR fully-qualified name.
 *
 * @param typeName - Simple or already-qualified type name
 * @returns CLR FQ name (e.g., "System.String") or original if no mapping exists
 */
export declare const normalizeToClrName: (typeName: string) => string;
/**
 * Get the $instance interface name for a CLR type.
 *
 * E.g., "System.String" → "String$instance", "String" → "String$instance"
 */
export declare const getInstanceInterfaceName: (typeName: string) => string;
//# sourceMappingURL=alias-table.d.ts.map