import { EventEmitter, OnInit, OnChanges, SimpleChanges, OnDestroy, DoCheck } from '@angular/core'; import { MatMenuTrigger } from '@angular/material/menu'; import { LoopStepConfig, LoopIteration, ExecutionStepConfig, StepStatus, TimingBreakdown, FailureDetails, SubStep, SelfHealAnalysisData, ConditionBranch, SelfHealActionEvent, AddStepMenuOption, StepMoreMenuOption } from '../execution-step.models'; import { BaseStepComponent } from '../base-step.component'; import { makeCurrentBaselineEvent, uploadBaselineEvent } from '../visual-comparison/visual-comparison.component'; import * as i0 from "@angular/core"; export declare class LoopStepComponent extends BaseStepComponent implements OnInit, OnChanges, OnDestroy, DoCheck { id: string; testStepResultId: string; stepNumber: string; title: string; status: StepStatus; duration: number; timingBreakdown?: TimingBreakdown; expanded?: boolean; loopType?: 'for' | 'while'; iterations: LoopIteration[]; selectedIterationId?: string; defaultIteration?: 'first' | 'last'; nestedSteps?: ExecutionStepConfig[]; showViewAllIterations?: boolean; hasChild?: boolean; isLive: boolean; isLoading?: boolean; stepDeleted?: boolean; isDebug?: boolean; canEditSteps?: boolean; debugPointSet?: boolean; parentSkipped?: boolean; getDebugPointSetHandler?: (step: ExecutionStepConfig) => boolean; onDebugPointChangeHandler?: (step: ExecutionStepConfig, value: boolean) => void; debugPointChange: EventEmitter; editStep: EventEmitter; addStepOptionSelect: EventEmitter; stepMoreOptionSelect: EventEmitter; /** Emitted when user clicks "+ Add step inside loop" (debug only). Payload is the loop step so parent can open Add Step modal at any nesting level. */ addStepInsideLoop: EventEmitter; addStepMenuOptions: AddStepMenuOption[]; stepMoreMenuOptions: StepMoreMenuOption[]; onExpandHandler?: (step: ExecutionStepConfig) => void; /** When provided, passed to nested step-renderer so Edit on nested steps is forwarded with the step config. */ onEditStepHandler?: (step: ExecutionStepConfig) => void; onAddStepOptionSelectHandler?: (option: AddStepMenuOption, step?: ExecutionStepConfig) => void; onStepMoreOptionSelectHandler?: (option: StepMoreMenuOption, step?: ExecutionStepConfig) => void; /** When provided, used to get add-step menu options per nested step; otherwise addStepMenuOptions is used for all. */ getAddStepMenuOptionsForNested?: (step: ExecutionStepConfig) => AddStepMenuOption[]; /** When provided, used to get step-more menu options per nested step; otherwise stepMoreMenuOptions is used for all. */ getStepMoreMenuOptionsForNested?: (step: ExecutionStepConfig) => StepMoreMenuOption[]; /** When provided, passed to nested step-renderers so "Add ELSE IF" on condition steps inside this loop works. */ onAddElseIfBranchAtHandler?: (conditionStep: any, branchIndex: number) => void; /** When provided, passed to nested step-renderers so "Add ELSE" on condition steps inside this loop works. */ onAddElseBranchHandler?: (conditionStep: any) => void; /** When provided, passed to nested step-renderers so edit icon on IF/ELSE IF branches inside this loop opens the condition editor. */ onEditBranchConditionHandler?: (conditionStep: any, branch: any, branchStep: any) => void; getConditionBranchesHandler?: (step: ExecutionStepConfig) => ConditionBranch[]; onConditionBranchClickHandler?: (step: any, branch: any) => void; isStepLoadingHandler?: (step: ExecutionStepConfig) => boolean; isStepExpandedHandler?: (step: ExecutionStepConfig) => boolean; convertMsToSecondsHandler?: (duration: number) => number; formatFailureDetailsHandler?: (step: ExecutionStepConfig) => any; getSelfHealAnalysisHandler?: (step: ExecutionStepConfig) => any; onMakeCurrentBaselineHandler?: (event: any) => void; onUploadBaselineHandler?: (event: any) => void; onAnalyzeHandler?: () => void; onViewFullLogsHandler?: () => void; onSelfHealActionHandler?: (event: any) => void; getSelfHealLoadingStatesHandler?: () => { isLoadingAccept: { [key: string]: boolean; }; isLoadingModifyAccept: { [key: string]: boolean; }; }; getLoopIterationsHandler?: (step: ExecutionStepConfig) => any[]; getApiAssertionsHandler?: (step: ExecutionStepConfig) => any[]; formatActionsHandler?: (step: ExecutionStepConfig) => any[]; onViewAllIterationsHandler?: (step: ExecutionStepConfig) => void; onStepClickHandler?: (step: ExecutionStepConfig, event?: Event) => void; onJsonPathCopiedHandler?: (event: { path: string; source: 'requestBody' | 'responseBody' | 'requestHeaders' | 'responseHeaders'; }) => void; onDownloadHandler?: (event: { fileName: string; filePath?: string; fileType: string; testStepResultId: string; }) => void; onFilePathCopiedHandler?: (event: { filePath: string; testStepResultId: string; }) => void; onTextCopiedHandler?: (event: { text: string; testStepResultId: string; }) => void; jumpToTimestampHandler?: (timestamp: number, testStepId?: number | string) => void; downloadingStepId: string | null; step?: any; get stepBadges(): ('skipped' | 'edited' | 'added' | 'removed')[]; get isSkipped(): boolean; get isStepDeleted(): boolean; failureDetails?: FailureDetails; reasoning?: string[]; confidence?: string; isUploadingBaseline: {}; isMakingCurrentBaseline: {}; selfHealAnalysis?: SelfHealAnalysisData; iterationData?: any; makeCurrentBaseline: EventEmitter; uploadBaseline: EventEmitter; analyze: EventEmitter; viewFullLogs: EventEmitter; selfHealAction: EventEmitter; showFailedStepDetails: boolean; addStepMenuTrigger?: MatMenuTrigger; stepMoreMenuTrigger?: MatMenuTrigger; /** Show debug icon when debug mode is on (shown on parent and all child steps). */ get showDebugIcon(): boolean; /** Per-step filtered three-dot menu options (e.g. hide Duplicate/Delete for step-group children). */ get effectiveStepMoreMenuOptions(): StepMoreMenuOption[]; /** True when this loop-step's own breakpoint is disabled (used to propagate parentSkipped to children). */ get selfDebugDisabled(): boolean; onExpand: EventEmitter; onViewAllIterations: EventEmitter; onIterationChange: EventEmitter; config: LoopStepConfig; selectedIteration: LoopIteration | null; private userSelectedIterationId; private previousStatus?; private userManuallyClosed; loadingSteps: Set; processedSubSteps: any[]; private lastProcessedIndex; private waitLocatorGroupEntry; private countdownIntervalId; private aiAutoHealGroupEntry; processedSubStepsForRunResult: any[]; ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; private autoExpand; get hasSubSteps(): boolean; toggle(): void; isNestedStepLoading(step: ExecutionStepConfig): boolean; markStepLoaded(step: ExecutionStepConfig): void; selectDefaultIteration(): void; handleIterationChange(iteration: LoopIteration): void; compareIteration(a: LoopIteration, b: LoopIteration): boolean; getLoopTypeBadges(): string[]; getIterationLabel(iteration: LoopIteration): string; onViewAllIterationsClick(event: Event): void; onAddStepInsideLoop(event: Event): void; onViewMoreFailedStepClick(expanded: boolean): void; getSubStepsForFailedStep(): SubStep[]; onMakeCurrentBaseline(event: makeCurrentBaselineEvent): void; onUploadBaseline(event: uploadBaselineEvent): void; onAnalyze(): void; onViewFullLogs(): void; onSelfHealAction(event: SelfHealActionEvent): void; get showViewMoreButton(): boolean; onDebugPointClick(event: Event): void; onEditStep(event: Event): void; onAddStepOptionSelect(option: AddStepMenuOption, event: Event): void; onStepMoreOptionSelect(option: StepMoreMenuOption, event: Event): void; toggleHeader(event?: Event): void; isNestedStepGroupWithChildren(step: ExecutionStepConfig): boolean; getGroupName(step: ExecutionStepConfig): string; getSteps(step: ExecutionStepConfig): ExecutionStepConfig[]; isNestedConditionStep(step: ExecutionStepConfig): boolean; isNestedLoopStep(step: ExecutionStepConfig): boolean; getLoopType(step: ExecutionStepConfig): 'for' | 'while' | undefined; getLoopIterations(step: ExecutionStepConfig): any[]; getLoopNestedSteps(step: ExecutionStepConfig): ExecutionStepConfig[]; handleLoopStepExpand(step: ExecutionStepConfig): void; handleLoopStepIterationChange(step: ExecutionStepConfig, iterationId: string): void; getStepTitle(step: ExecutionStepConfig): string; getStepStatus(step: ExecutionStepConfig): StepStatus; getStepDuration(step: ExecutionStepConfig): number; getConditionStepDuration(step: ExecutionStepConfig): number; getConditionStepExpanded(step: ExecutionStepConfig): boolean; getConditionStepText(step: ExecutionStepConfig): string; getConditionStepBranches(step: ExecutionStepConfig): ConditionBranch[]; getConditionStepLoading(step: ExecutionStepConfig): boolean; handleConditionStepExpand(step: ExecutionStepConfig): void; getConditionStepFailureDetails(step: ExecutionStepConfig): any; getConditionStepSelfHealAnalysis(step: ExecutionStepConfig): any; handleConditionStepSelfHealAction(event: any): void; handleConditionStepMakeBaseline(event: any): void; handleConditionStepUploadBaseline(event: any): void; handleConditionStepAnalyze(): void; handleConditionStepViewLogs(): void; getLoopSelectedIterationId(step: ExecutionStepConfig): string | undefined; getLoopDefaultIteration(step: ExecutionStepConfig): 'first' | 'last' | undefined; getLoopShowViewAllIterations(step: ExecutionStepConfig): boolean | undefined; isStepLoading(): boolean; onJumpToTimestamp(event: Event): void; ngDoCheck(): void; ngOnDestroy(): void; private processLiveSubSteps; private resetLiveProcessing; private clearCountdownTimer; private addDurationToWaitLocatorGroupEntry; private processSubStepsForRunResult; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }