import { Model } from 'mongoose'; import { StrategyFactory } from '../common/strategy.factory'; import { PlaywrightService } from './playwright.service'; import { AuthService } from './auth.service'; import { ApiClientService } from './api-client.service'; import { HttpSecuritySolverService } from './http-security-solver.service'; import { RunDocument } from '../database/schemas/run.schema'; import { AttemptDocument } from '../database/schemas/attempt.schema'; import { NotificationDocument } from '../database/schemas/notification.schema'; import { StrategyDocument } from '../database/schemas/strategy.schema'; export interface RunConfiguration { strategyId: string; apiKey?: string; window: { start: string; end: string; intervalMin: number; }; userData: Record; options: { dryRun?: boolean; headful?: boolean; maxAttempts?: number; autoBook?: boolean; notifyOn?: 'availability' | 'booking' | 'both'; }; } export declare class StrategyRunnerService { private readonly strategyFactory; private readonly playwrightService; private readonly authService; private readonly apiClientService; private readonly httpSecuritySolverService; private readonly runModel; private readonly attemptModel; private readonly notificationModel; private readonly strategyModel; private readonly logger; private readonly activeRuns; private readonly scheduledJobs; private readonly runningJobs; constructor(strategyFactory: StrategyFactory, playwrightService: PlaywrightService, authService: AuthService, apiClientService: ApiClientService, httpSecuritySolverService: HttpSecuritySolverService, runModel: Model, attemptModel: Model, notificationModel: Model, strategyModel: Model); runStrategy(config: RunConfiguration): Promise; stopRun(runId: string): Promise; getRunStatus(runId: string): Promise; getRunAttempts(runId: string): Promise; private validateStrategyAccess; private scheduleRun; private isScheduledRun; private executeRunWithMasterTimeout; private executeRunInternal; private executeStrategySteps; private calculateMasterTimeout; private cleanupJobResources; private createRun; private updateRunStatus; private recordAttempt; private sendErrorNotification; private recordNotification; }