import * as ts from "typescript";
import type { ProgramContext } from "../program-context.js";
import type { IrType } from "../types.js";
import type { DeclId } from "../type-system/index.js";
export type AccessPathTarget = {
    readonly kind: "decl";
    readonly declId: DeclId;
    readonly segments: readonly string[];
    readonly anchor: ts.Node;
} | {
    readonly kind: "this";
    readonly segments: readonly string[];
    readonly anchor: ts.Node;
};
export declare const getAccessPathTarget: (expr: ts.Expression, ctx: ProgramContext) => AccessPathTarget | undefined;
export declare const getAccessPathKey: (target: AccessPathTarget) => string;
export declare const getCurrentTypeForAccessPath: (target: AccessPathTarget, ctx: ProgramContext) => IrType | undefined;
export declare const getCurrentTypeForAccessExpression: (expr: ts.Expression, ctx: ProgramContext) => IrType | undefined;
export declare const hasAccessPathNarrowing: (expr: ts.Expression, ctx: ProgramContext) => boolean;
//# sourceMappingURL=access-paths.d.ts.map