import { ExpressionNode, PatternAtomNode, PatternClassNode } from '../parser/parseNodes'; import { CodeFlowReferenceExpressionNode } from './codeFlowTypes'; import { TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; import { Type } from './types'; type PatternSubtypeNarrowingCallback = (type: Type) => TypeResult | undefined; export declare function narrowTypeBasedOnPattern(evaluator: TypeEvaluator, type: Type, pattern: PatternAtomNode, isPositiveTest: boolean): Type; export declare function checkForUnusedPattern(evaluator: TypeEvaluator, pattern: PatternAtomNode, subjectType: Type): void; export declare function assignTypeToPatternTargets(evaluator: TypeEvaluator, type: Type, isTypeIncomplete: boolean, pattern: PatternAtomNode): Type; export declare function validateClassPattern(evaluator: TypeEvaluator, pattern: PatternClassNode): void; export declare function getPatternSubtypeNarrowingCallback(evaluator: TypeEvaluator, reference: CodeFlowReferenceExpressionNode, subjectExpression: ExpressionNode): PatternSubtypeNarrowingCallback | undefined; export {};