import { RawRequirement } from '../../../../models/achievement/raw-requirement' ; import { GameEvent } from '../../../../models/game-event' ; import { Requirement } from './_requirement' ; export abstract class AbstractRequirement implements Requirement { individualResetEvents ? : readonly string [ ] ; public abstract reset ( ) ; public abstract afterAchievementCompletionReset ( ) ; public abstract isCompleted ( ) ; public abstract test ( gameEvent ) ; public static initialize < T extends Requirement > ( initFunction , rawReq ) { const req = initFunction ( rawReq ) ; req . individualResetEvents = rawReq . individualRestEvents ; return req ; } }