import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
import { MJAIPromptModelEntity } from '@memberjunction/core-entities';
import { BehaviorSubject } from 'rxjs';
import { MJNotificationService } from '@memberjunction/ng-notifications';
import { MJConfirmService } from '@memberjunction/ng-ui-components';
import { MJAIModelEntityExtended, MJAIPromptEntityExtended } from '@memberjunction/ai-core-plus';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import * as i0 from "@angular/core";
interface PromptModelAssociation {
    promptId: string;
    promptName: string;
    modelId: string;
    modelName: string;
    priority: number;
    status: string;
    association: MJAIPromptModelEntity | null;
    isNew: boolean;
    isModified: boolean;
}
interface MatrixCell {
    promptId: string;
    modelId: string;
    association: PromptModelAssociation | null;
    canAssign: boolean;
}
export declare class ModelPromptPriorityMatrixComponent extends BaseAngularComponent implements OnInit, OnDestroy {
    private notificationService;
    private confirmService;
    selectedPrompts: MJAIPromptEntityExtended[];
    selectedModels: MJAIModelEntityExtended[];
    readonly: boolean;
    associationsChange: EventEmitter<PromptModelAssociation[]>;
    stateChange: EventEmitter<any>;
    promptSelected: EventEmitter<MJAIPromptEntityExtended>;
    prompts: MJAIPromptEntityExtended[];
    models: MJAIModelEntityExtended[];
    associations: PromptModelAssociation[];
    matrix: MatrixCell[][];
    isLoading: boolean;
    loadingMessage: string;
    error: string | null;
    viewMode: 'matrix' | 'list';
    sortBy: 'prompt' | 'model' | 'priority';
    sortDirection: 'asc' | 'desc';
    showInactiveAssociations: boolean;
    selectedCells: Set<string>;
    editingCell: string | null;
    bulkEditMode: boolean;
    bulkEditPriority: number;
    bulkEditStatus: string;
    promptFilter$: BehaviorSubject<string>;
    modelFilter$: BehaviorSubject<string>;
    statusFilter$: BehaviorSubject<string>;
    performanceData: {
        [key: string]: any;
    };
    showPerformanceOverlay: boolean;
    private destroy$;
    constructor(notificationService: MJNotificationService, confirmService: MJConfirmService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    loadData(): Promise<void>;
    private loadPrompts;
    private loadModels;
    private loadAssociations;
    private buildAssociations;
    private buildMatrix;
    private canAssignModelToPrompt;
    getCellKey(promptIndex: number, modelIndex: number): string;
    getCellClass(cell: MatrixCell): string;
    onCellClick(promptIndex: number, modelIndex: number, event: MouseEvent): void;
    onCellDoubleClick(promptIndex: number, modelIndex: number): void;
    private selectRange;
    createAssociation(promptId: string, modelId: string, priority?: number): void;
    updateAssociation(promptId: string, modelId: string, updates: Partial<PromptModelAssociation>): void;
    removeAssociation(promptId: string, modelId: string): void;
    bulkUpdateSelectedCells(): void;
    bulkRemoveSelectedCells(): void;
    saveChanges(): Promise<void>;
    hasUnsavedChanges(): boolean;
    discardChanges(): Promise<void>;
    getAssociationCount(): number;
    getModelAssociationCount(modelId: string): number;
    getPromptAssociationCount(promptId: string): number;
    getCellTooltip(association: any): string;
    getAveragePriority(): number;
    sortAssociations(): void;
    toggleSortDirection(): void;
    onViewModeChange(mode: 'matrix' | 'list'): void;
    exportMatrix(): void;
    selectPrompt(prompt: MJAIPromptEntityExtended): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelPromptPriorityMatrixComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ModelPromptPriorityMatrixComponent, "app-model-prompt-priority-matrix", never, { "selectedPrompts": { "alias": "selectedPrompts"; "required": false; }; "selectedModels": { "alias": "selectedModels"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "associationsChange": "associationsChange"; "stateChange": "stateChange"; "promptSelected": "promptSelected"; }, never, never, false, never>;
}
export {};
//# sourceMappingURL=model-prompt-priority-matrix.component.d.ts.map