/**
 * Import resolution with ESM rules enforcement
 *
 * Phase 5 Step 4: No more singleton access. Module bindings are passed explicitly.
 */
import { Result } from "../types/result.js";
import { Diagnostic } from "../types/diagnostic.js";
import { ResolvedModule } from "./types.js";
import { ClrBindingsResolver } from "./clr-bindings-resolver.js";
import type { BindingRegistry } from "../program/bindings.js";
import type { DeclarationModuleAlias } from "../program/declaration-module-aliases.js";
/**
 * Options for import resolution
 */
export type ResolveImportOptions = {
    readonly clrResolver?: ClrBindingsResolver;
    readonly bindings?: BindingRegistry;
    readonly projectRoot?: string;
    readonly surface?: string;
    readonly authoritativeTsonicPackageRoots?: ReadonlyMap<string, string>;
    readonly declarationModuleAliases?: ReadonlyMap<string, DeclarationModuleAlias>;
};
/**
 * Resolve import specifier to module
 *
 * @param importSpecifier - The import path to resolve
 * @param containingFile - The file containing the import
 * @param sourceRoot - The project source root
 * @param opts - Optional resolvers (clrResolver for CLR imports, bindings for module bindings)
 */
export declare const resolveImport: (importSpecifier: string, containingFile: string, sourceRoot: string, opts?: ResolveImportOptions) => Result<ResolvedModule, Diagnostic>;
/**
 * Resolve local import with ESM rules
 *
 * Accepts both .js and .ts extensions:
 * - .js is the ESM-compliant extension (resolves to .ts source file)
 * - .ts is also accepted for convenience
 */
export declare const resolveLocalImport: (importSpecifier: string, containingFile: string, sourceRoot: string) => Result<ResolvedModule, Diagnostic>;
/**
 * Resolve CLR import (namespace validation)
 */
export declare const resolveClrImport: (importSpecifier: string) => Result<ResolvedModule, Diagnostic>;
//# sourceMappingURL=import-resolution.d.ts.map