import { Step } from "../step"; import { ChoiceRequest } from "../../models"; import { StepResult } from "../stepResult"; export abstract class StepDecorator implements Step { protected readonly step: Step; protected constructor(step: Step) { this.step = step; } abstract execute(request: ChoiceRequest): Promise; getLabels(): string[] { return this.step.getLabels(); } getName(): string { return this.step.getName(); } getMetricName(): string { return this.step.getMetricName(); } shouldReportCreativeFiltering(): boolean { return this.step.shouldReportCreativeFiltering(); } getMetricBucket(): number[] { return this.step.getMetricBucket(); } }