import { OnInit } from '@angular/core';
import { MJActionEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionCategoryEntity, MJActionExecutionLogEntity, MJActionLibraryEntity, MJLibraryEntity } from '@memberjunction/core-entities';
import { MJActionFormComponent } from '../../generated/Entities/MJAction/mjaction.form.component';
import * as i0 from "@angular/core";
export declare class MJActionFormComponentExtended extends MJActionFormComponent implements OnInit {
    record: MJActionEntity;
    category: MJActionCategoryEntity | null;
    actionParams: MJActionParamEntity[];
    resultCodes: MJActionResultCodeEntity[];
    recentExecutions: MJActionExecutionLogEntity[];
    actionLibraries: MJActionLibraryEntity[];
    libraries: MJLibraryEntity[];
    private _inputParams;
    private _outputParams;
    private paramsToDelete;
    private resultCodesToDelete;
    isLoadingParams: boolean;
    isLoadingResultCodes: boolean;
    isLoadingExecutions: boolean;
    isLoadingLibraries: boolean;
    expandedSections: {
        overview: boolean;
        code: boolean;
        params: boolean;
        resultCodes: boolean;
        execution: boolean;
        configuration: boolean;
    };
    showTestHarness: boolean;
    executionStats: {
        totalRuns: number;
        successRate: number;
        avgDuration: number;
        lastRun: Date | null;
    };
    codeLanguage: string;
    showCodeComments: boolean;
    private dialogService;
    private viewContainerRef;
    private sharedService;
    ngOnInit(): Promise<void>;
    /**
     * Override InternalSaveRecord to handle Action and related ActionParams in a transaction
     * This follows the same pattern as MJAIAgentFormComponent
     */
    protected InternalSaveRecord(): Promise<boolean>;
    private loadCategory;
    private loadActionParams;
    private loadResultCodes;
    private loadRecentExecutions;
    private loadActionLibraries;
    private loadExecutionStats;
    getStatusColor(): string;
    getStatusIcon(): string;
    getTypeColor(): string;
    getTypeIcon(): string;
    getApprovalStatusColor(): string;
    getApprovalStatusIcon(): string;
    getParamTypeIcon(type: string): string;
    getParamTypeColor(type: string): string;
    formatDuration(ms: number): string;
    formatDate(date: Date | string | null): string;
    navigateToEntity(entityName: string, recordId: string | null): void;
    navigateToCategory(): void;
    navigateToExecution(executionId: string): void;
    navigateToLibrary(libraryId: string): void;
    openTestHarness(): void;
    /**
     * Event handler for test harness visibility changes
     */
    onTestHarnessVisibilityChanged(isVisible: boolean): void;
    regenerateCode(): Promise<void>;
    toggleCodeComments(): void;
    approveCode(): Promise<void>;
    rejectCode(): Promise<void>;
    copyToClipboard(text: string): Promise<void>;
    getInputParams(): MJActionParamEntity[];
    getOutputParams(): MJActionParamEntity[];
    isExecutionSuccess(execution: MJActionExecutionLogEntity): boolean;
    getExecutionDuration(execution: MJActionExecutionLogEntity): number;
    getSuccessRateColor(): string;
    addParameter(type: 'Input' | 'Output' | 'Both'): Promise<void>;
    editParameter(param: MJActionParamEntity): Promise<void>;
    onParamClick(param: MJActionParamEntity, event: Event): void;
    private updateParamArrays;
    protected PopulatePendingRecords(): void;
    /**
     * Gets the action's display icon
     * Falls back to default cog icon if no IconClass is set
     */
    getActionIcon(): string;
    addResultCode(): Promise<void>;
    editResultCode(resultCode: MJActionResultCodeEntity): Promise<void>;
    onResultCodeClick(resultCode: MJActionResultCodeEntity, event: Event): void;
    /**
     * Delete a result code (marks for deletion on save)
     */
    deleteResultCode(resultCode: MJActionResultCodeEntity): void;
    /**
     * Delete a parameter (marks for deletion on save)
     */
    deleteParameter(param: MJActionParamEntity): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MJActionFormComponentExtended, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MJActionFormComponentExtended, "mj-action-form", never, {}, {}, never, never, false, never>;
}
//# sourceMappingURL=action-form.component.d.ts.map