import { EventEmitter } from '@angular/core';
import type { IMetadataProvider, UserInfo } from '@memberjunction/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import { MJUserViewEntity, MJListEntity } from '@memberjunction/core-entities';
import type { ScheduledJobDialogResult } from '@memberjunction/ng-scheduling';
import { PredictiveStudioEngine } from '../engine/predictive-studio.engine';
import { OperateModelState, OperateScopeMode } from './ps-operate-dialog.mapping';
import * as i0 from "@angular/core";
/**
 * **Operate this model** — the dialog that turns a published model into a running one. It composes
 * three primitives, no bespoke transport:
 *  - **what** → the `PredictiveStudio.CreateScoringProcess` Remote Op (persists an on-demand
 *    `WorkType='ML Model'` Record Process; write-back when an output column is chosen, generic otherwise);
 *  - **now** → the generic `RecordProcess.RunNow` Remote Op on that process;
 *  - **when** → the generic `@memberjunction/ng-scheduling` dialog (a "Run Record Process" scheduled job).
 *
 * The target entity is FIXED to the model's training entity (the model's features only assemble against
 * that entity), so the knobs are **scope** (everyone / a saved view / a list) and **output** (generic /
 * write-back column). Pure submit→input mapping lives in `ps-operate-dialog.mapping.ts` (unit-tested).
 */
export declare class PSOperateDialogComponent extends BaseAngularComponent {
    modelId: string;
    modelLabel: string;
    engine: PredictiveStudioEngine;
    provider: IMetadataProvider | null;
    currentUser: UserInfo | null;
    /** Opening the dialog (false → true) initializes the knobs + loads views/lists/fields for the model's entity. */
    set Visible(value: boolean);
    get Visible(): boolean;
    private _visible;
    Close: EventEmitter<{
        changed: boolean;
    }>;
    private cdr;
    private notifications;
    state: OperateModelState;
    views: MJUserViewEntity[];
    lists: MJListEntity[];
    entityFields: string[];
    isClassification: boolean;
    busy: boolean;
    busyLabel: string;
    scheduleOpen: boolean;
    jobTypeId: string | null;
    schedConfig: string | null;
    private init;
    private loadViews;
    private loadLists;
    /** Resolve the "Run Record Process" scheduled-job-type id the generic scheduler dialog needs. */
    private resolveJobType;
    setScope(mode: OperateScopeMode): void;
    get summary(): string;
    private viewName;
    private listName;
    /** Create the scoring Record Process, then run it once immediately. */
    onRunNow(): Promise<void>;
    /** Create the scoring Record Process, then hand it to the generic scheduler dialog. */
    onSchedule(): Promise<void>;
    onScheduleClose(result: ScheduledJobDialogResult): Promise<void>;
    onCancel(): void;
    /** Map knobs → input and create the scoring Record Process via the Remote Op. Returns its id, or null on failure. */
    private createProcess;
    private refreshAndClose;
    private msg;
    private blankState;
    static ɵfac: i0.ɵɵFactoryDeclaration<PSOperateDialogComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PSOperateDialogComponent, "ps-operate-dialog", never, { "modelId": { "alias": "modelId"; "required": false; }; "modelLabel": { "alias": "modelLabel"; "required": false; }; "engine": { "alias": "engine"; "required": false; }; "provider": { "alias": "provider"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "Visible": { "alias": "Visible"; "required": false; }; }, { "Close": "Close"; }, never, never, true, never>;
}
//# sourceMappingURL=ps-operate-dialog.component.d.ts.map