import { DomainEvent, RecordedActivity, Result } from '@serenity-js/core/lib/domain'; import { FileSystem } from '@serenity-js/core/lib/io/file_system'; import { Stage, StageCrewMember } from '@serenity-js/core/lib/stage'; import { TimingBehaviour } from './photographer-timing'; export declare function photographer(): StageCrewMember; export declare class ActivityOfInterest { private resultsOfInterest; constructor(resultsOfInterest: Result); isAResultOfInterest(result: Result): boolean; } export declare class PhotographySchedule { Failures: ActivityOfInterest; Tasks_and_Interactions: ActivityOfInterest; Activity_Starts_and_Finishes: TimingBehaviour; Activity_Starts: TimingBehaviour; Activity_Finishes: TimingBehaviour; private activityOfInterest; private photoTiming; private pathToPhotos; private photoNamingStrategy; takesPhotosOf(activityOfInterest: ActivityOfInterest): PhotographySchedule; takesPhotosWhen(photoTiming: TimingBehaviour): PhotographySchedule; storesPhotosAt(pathToPhotos: string): PhotographySchedule; build(): Photographer; } export declare class Photographer implements StageCrewMember { private fieldOfInterest; private fs; private naming; private static Events_of_Interest; private stage; private strategy; static who(scheduler: (schedule: PhotographySchedule) => PhotographySchedule): Photographer; constructor(fieldOfInterest: ActivityOfInterest, behaviour: TimingBehaviour, fs: FileSystem, naming?: PictureNamingStrategy); assignTo(stage: Stage): void; notifyOf(event: DomainEvent): void; canWork(): boolean; photograph(subject: RecordedActivity, timestamp: number): void; private photographWorkOf(actor); } export interface PictureNamingStrategy { nameFor(base64encodedData: string): string; } export declare class Md5HashedPictureNames implements PictureNamingStrategy { private fileExtension; constructor(fileExtension?: string); nameFor(base64encodedData: string): string; private extension(); }