import ts from 'typescript';
/**
 * Property names that are strong indicators of CDK construct resource properties.
 * These resolve to CloudFormation tokens at synth time.
 */
export declare const CDK_PROPERTY_PATTERNS: Set<string>;
/**
 * Maps CDK interface/class names to their known resource properties.
 * Used for type-based detection when CDK types are available.
 */
export declare const CDK_CONSTRUCT_TYPE_TABLE: ReadonlyArray<{
    readonly typeName: string;
    readonly properties: readonly string[];
}>;
export interface CdkSynthInfo {
    /** The property name being accessed (e.g., 'functionArn'). */
    readonly propertyName: string;
    /** Whether detection was type-based (high confidence) or pattern-based (medium). */
    readonly tier: 1 | 2;
}
/**
 * Check if an expression is a property access matching known CDK patterns.
 *
 * Matches: `someVar.functionArn`, `someVar.tableName`, etc.
 */
export declare function isCdkPatternMatch(expr: ts.Expression): CdkSynthInfo | null;
/**
 * Check if an expression's type matches a known CDK construct interface.
 *
 * Uses the TypeChecker to resolve the type of the base expression and
 * walk its base types/interfaces looking for matches in CDK_CONSTRUCT_TYPE_TABLE.
 */
export declare function isCdkTypeMatch(checker: ts.TypeChecker, expr: ts.Expression): CdkSynthInfo | null;
/**
 * Detect if an expression is a CDK synth-time expression.
 * Tries Tier 1 (type-based) first, falls back to Tier 2 (pattern-based).
 */
export declare function detectCdkExpression(checker: ts.TypeChecker, expr: ts.Expression): CdkSynthInfo | null;
//# sourceMappingURL=cdkDetection.d.ts.map