import { EventEmitter, ViewContainerRef, OnChanges, SimpleChanges, AfterViewInit, DoCheck, OnDestroy, ChangeDetectorRef } from '@angular/core'; import { TestCaseStepComponentMap } from '../test-case-step-components.token'; import { TestCaseStepConfig, ConditionBranch, LoopStepConfig } from '../test-case-step.models'; import * as i0 from "@angular/core"; export declare class TestCaseDetailsRendererComponent implements OnChanges, AfterViewInit, DoCheck, OnDestroy { private componentMap; private cdr; stepHost: ViewContainerRef; step: TestCaseStepConfig; index: number; isNested: boolean; isInsideLoop: boolean; /** True when this step is nested (at any depth) inside a FOR loop specifically. */ isInsideForLoop: boolean; /** When true, step is rendered inside a step-group; row actions (Edit/Duplicate/Delete) are hidden. */ isInsideStepGroup: boolean; /** Visual indentation level for nested structures (loops/step-groups/conditions). */ nestingLevel: number; /** When rendering a step inside a condition branch, the branch context (for addStepForBranch / deleteStepWithBranch). */ branch?: ConditionBranch; /** When true, enables drag-and-drop reordering and shows drag handle icon instead of checkbox */ isReorder: boolean; /** True when any ancestor step is skipped; used to cascade skipped styling to nested rows. */ isParentSkipped: boolean; /** Current selection state; when changed (e.g. from Select all), the created step component is updated so the checkbox reflects it */ selected?: boolean; /** Global duplicate-in-progress state used to disable duplicate actions and show loading feedback. */ isDuplicating: boolean; /** Show "Add Step Between" button above the step */ addStepBetweenAbove: boolean; /** Show "Add Step Between" button below the step */ addStepBetweenBelow: boolean; /** @deprecated Use addStepBetweenAbove and addStepBetweenBelow instead. If set, applies to both buttons. */ addStepBetween: boolean; /** When false, hides edit/duplicate/delete actions and add-step-between buttons on steps (e.g. for trashed test cases). */ editable: boolean; /** Current test case id (portal). Used so reusable step groups can hide the "edit in source test case" hint when already viewing that step group's test case. */ currentTestCaseId?: number | string; /** Test case's default test data profile id (testCase.testDataId). Forwarded to nested loop steps. */ testCaseTestDataId?: number | string; nestedStepChange: EventEmitter<{ step: TestCaseStepConfig; index: number; }>; addStep: EventEmitter; deleteStep: EventEmitter; toggleExpanded: EventEmitter; groupNameChange: EventEmitter; descriptionChange: EventEmitter; reusableChange: EventEmitter; openExternal: EventEmitter<{ step: TestCaseStepConfig; }>; edit: EventEmitter<{ step: TestCaseStepConfig; index: number; }>; link: EventEmitter; duplicate: EventEmitter; delete: EventEmitter; viewDetails: EventEmitter; selectionChange: EventEmitter; conditionChange: EventEmitter; branchStepChange: EventEmitter<{ branch: ConditionBranch; step: TestCaseStepConfig; stepIndex: number; }>; addStepForBranch: EventEmitter<{ branch: ConditionBranch; }>; /** Emitted when empty loop step plus is clicked; same behaviour as add-step-between (parentId = loop step id). */ addStepForLoop: EventEmitter<{ loopStepConfig: LoopStepConfig; }>; deleteStepWithBranch: EventEmitter<{ branch: ConditionBranch; stepIndex: number; }>; addBranch: EventEmitter; /** Emitted when user clicks "Add Else" in a condition step; parent should call POST test_steps with conditionType CONDITION_ELSE */ addElse: EventEmitter<{ conditionStepConfig: TestCaseStepConfig; }>; deleteBranch: EventEmitter; testDataProfileChange: EventEmitter; startStepChange: EventEmitter; endStepChange: EventEmitter; maxIterationsChange: EventEmitter; eventTypeChange: EventEmitter; parameterChange: EventEmitter; clickAction: EventEmitter<{ event: MouseEvent; step: TestCaseStepConfig; }>; /** Emitted when a step is dropped in a nested dropzone (step-group, loop, condition). Payload: { event, targetList }. */ dndDropInZone: EventEmitter<{ event: any; targetList: TestCaseStepConfig[]; }>; /** Data profile options for loop steps */ dataProfileOptions: any[]; /** Indicates if more data profiles are available for loading */ hasMoreDataProfiles: boolean; /** Loading state for data profiles */ isLoadingDataProfiles: boolean; /** Natural text actions options for while loop condition */ naturalTextActionsOptions: any[]; /** Function to process template variables for condition steps */ setConditionTemplateVariables: (template: any) => any[]; /** Emit when more data profiles need to be loaded */ loadMoreDataProfiles: EventEmitter; /** Emit when data profile search query changes */ searchDataProfiles: EventEmitter; /** Emit when a step is updated (e.g., Apply button clicked in loop-step edit mode) */ stepUpdate: EventEmitter; addStepBetweenClick: EventEmitter<{ step: TestCaseStepConfig; index: number; position: 'ABOVE' | 'BELOW'; }>; /** Emit when user clicks "Edit In depth" in condition-step (or other steps that support it) */ editInDepth: EventEmitter<{ step: TestCaseStepConfig; index: number; templateOverride?: any; isCreateMode?: boolean; createModeBranchData?: any; }>; private componentRef; private lastSyncedStepNumber; constructor(componentMap: TestCaseStepComponentMap, cdr: ChangeDetectorRef); ngAfterViewInit(): void; ngDoCheck(): void; ngOnChanges(changes: SimpleChanges): void; /** Update only data profile / options inputs on existing instance (avoids full recreate and losing isEditing). */ private updateOptionsInputs; private getComponentType; private renderStep; private wireOutputs; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }