import { InAppMessageImpression, InAppMessageImpressionStorage } from "../../../../hackle/iam/storage/InAppMessageImpressionStorage"; import { HackleUser, InAppMessageDurationCap, InAppMessageIdentifierCap } from "../../model/model"; import { EvaluatorContext } from "../evalautor/Evaluator"; import { InAppMessageEligibilityRequest } from "../evalautor/iam/eligibility/InAppMessageEligibilityRequest"; import TargetMatcher from "../match/TargetMatcher"; import InAppMessageHiddenStorage from "./InAppMessageHiddenStorage"; export interface InAppMessageMatcher { matches(request: InAppMessageEligibilityRequest, context: EvaluatorContext): boolean; } export declare class UserOverrideInAppMessageMatcher implements InAppMessageMatcher { matches(request: InAppMessageEligibilityRequest, context: EvaluatorContext): boolean; private isUserOverridden; } export declare class TargetInAppMessageMatcher implements InAppMessageMatcher { private readonly targetMatcher; constructor(targetMatcher: TargetMatcher); matches(request: InAppMessageEligibilityRequest, context: EvaluatorContext): boolean; } export declare class HiddenInAppMessageMatcher implements InAppMessageMatcher { private readonly storage; constructor(storage: InAppMessageHiddenStorage); matches(request: InAppMessageEligibilityRequest, context: EvaluatorContext): boolean; } export declare class InAppMessageFrequencyCapMatcher implements InAppMessageMatcher { private storage; constructor(storage: InAppMessageImpressionStorage); matches(request: InAppMessageEligibilityRequest, context: EvaluatorContext): boolean; private isFrequencyCapped; private createMatchContexts; } interface FrequencyCapPredicate { thresholdCount: number; matches(user: HackleUser, timestamp: number, impression: InAppMessageImpression): boolean; } export declare class IdentifierCapPredicate implements FrequencyCapPredicate { private readonly identifierCap; constructor(identifierCap: InAppMessageIdentifierCap); get thresholdCount(): number; matches(user: HackleUser, _timestamp: number, impression: InAppMessageImpression): boolean; } export declare class DurationCapPredicate implements FrequencyCapPredicate { private readonly durationCap; constructor(durationCap: InAppMessageDurationCap); get thresholdCount(): number; matches(_user: HackleUser, timestamp: number, impression: InAppMessageImpression): boolean; } export {};