/**
 * Binding Layer — Registry Management & Simple Resolution
 *
 * Contains the BindingContext type, registry creation, and simple resolution
 * methods (identifiers, type references, property access, element access).
 * Complex call/constructor resolution lives in binding-call-resolution.ts.
 */
import ts from "typescript";
import { DeclId, SignatureId, MemberId } from "../type-system/types.js";
import type { DeclEntry, SignatureEntry, MemberEntry, TypeSyntaxEntry } from "./binding-types.js";
/**
 * Shared mutable context for the binding factory closure.
 *
 * This holds the internal registries, counters, and caches that are shared
 * across all binding resolution methods. Created once by createBindingContext()
 * and threaded through all sub-module functions.
 */
export type BindingContext = {
    readonly checker: ts.TypeChecker;
    readonly declMap: Map<number, DeclEntry>;
    readonly signatureMap: Map<number, SignatureEntry>;
    readonly memberMap: Map<string, MemberEntry>;
    readonly typeSyntaxMap: Map<number, TypeSyntaxEntry>;
    readonly nextDeclId: {
        value: number;
    };
    readonly nextSignatureId: {
        value: number;
    };
    readonly nextTypeSyntaxId: {
        value: number;
    };
    readonly symbolToDeclId: Map<ts.Symbol, DeclId>;
    readonly signatureToId: Map<ts.Signature, SignatureId>;
};
/**
 * Create a fresh BindingContext for a TypeScript program.
 */
export declare const createBindingContext: (checker: ts.TypeChecker) => BindingContext;
export declare const isSyntheticBindingMarkerName: (name: string) => boolean;
export declare const getStaticPropertyName: (name: ts.PropertyName) => string | undefined;
export declare const getBindingAliasFromDeclaration: (decl: ts.InterfaceDeclaration | ts.ClassDeclaration | ts.TypeAliasDeclaration) => string | undefined;
export declare const getOrCreateDeclId: (ctx: BindingContext, symbol: ts.Symbol) => DeclId;
export declare const resolveCanonicalDeclaringTypeName: (ctx: BindingContext, decl: ts.SignatureDeclaration | undefined) => string | undefined;
export declare const getOrCreateSignatureId: (ctx: BindingContext, signature: ts.Signature, resolutionSite?: ts.CallExpression | ts.NewExpression) => SignatureId;
export declare const getOrCreateMemberId: (ctx: BindingContext, ownerDeclId: DeclId, memberName: string, memberSymbol: ts.Symbol) => MemberId;
export declare const resolveTransparentAliases: (ctx: BindingContext, input: ts.Symbol) => ts.Symbol;
export declare const resolveIdentifier: (ctx: BindingContext, node: ts.Identifier) => DeclId | undefined;
export declare const resolveTypeReference: (ctx: BindingContext, node: ts.TypeReferenceNode) => DeclId | undefined;
export declare const resolvePropertyAccess: (ctx: BindingContext, node: ts.PropertyAccessExpression) => MemberId | undefined;
export declare const resolveElementAccess: (_node: ts.ElementAccessExpression) => MemberId | undefined;
//# sourceMappingURL=binding-registry.d.ts.map