import { OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { Emission, ITermJSONLD, Product, Input as HestiaInput, Property, SchemaType } from '@hestia-earth/schema';
import { INodeTermLogs, INodeTermLog } from '../node.service';
import { HeEngineService, IModel } from '../../engine/engine.service';
import { HeSearchService } from '../../search/search.service';
import * as i0 from "@angular/core";
declare type blankNode = Emission | Product | HestiaInput | Property;
interface IConfigModel {
    methodId: string;
    model?: IModel;
}
interface IBlankNodeLogSubValue {
    key: string;
    originalValue: number | string | boolean;
    recalculatedValue: number | string | boolean;
    isRecalculated: boolean;
    id?: any;
    configModels?: IConfigModel[];
}
interface IBlankNodeLog {
    isOpen: boolean;
    canOpen: boolean;
    term: ITermJSONLD;
    termId: string;
    type?: SchemaType;
    configModels: (IConfigModel | IConfigModel[])[];
    original: blankNode[];
    originalValue: number;
    originalValueByMethodId?: {
        [methodId: string]: number;
    };
    recalculated: blankNode[];
    recalculatedValue: number;
    recalculatedValueByMethodId?: {
        [methodId: string]: number;
    };
    isOriginal: boolean;
    isRecalculated: boolean;
    hasData: boolean;
    isRequired: boolean;
    logs?: INodeTermLogs;
    keys: IBlankNodeLogSubValue[];
    subValues: IBlankNodeLogSubValue[];
    allParallel?: boolean;
}
declare enum LogStatus {
    success = "successful",
    error = "failed",
    skipHierarchy = "not run (model higher up hierarchy run instead)",
    dataProvided = "not run (user provided data retained)",
    notRequired = "not relevant"
}
export declare class NodeLogsModelsComponent implements OnInit {
    private searchService;
    private engineService;
    private config?;
    private models;
    private allTerms;
    private allBlankNodes;
    private nodeType?;
    /**
     * Restrict models by key.
     */
    private nodeKey?;
    private includeAllModels;
    logsUrl?: string;
    originalValues: blankNode[];
    private recalculatedValues;
    private terms;
    private logs?;
    private filterTermTypes?;
    baseUrl: string;
    isExternal: boolean;
    hasLog: (log: INodeTermLog, withOrchestrator?: boolean) => boolean;
    propertyValue: (value: string | number | (string | number)[], termId?: string) => number;
    loading: boolean;
    blankNodes: IBlankNodeLog[];
    methodModelsCount: number;
    rowsCount: number;
    methodsById?: any;
    onlyRequired: boolean;
    showLegend: boolean;
    LogStatus: typeof LogStatus;
    logIcon: {
        successful: string | string[];
        failed: string | string[];
        "not run (model higher up hierarchy run instead)": string | string[];
        "not run (user provided data retained)": string | string[];
        "not relevant": string | string[];
    };
    logColor: {
        successful: string;
        failed: string;
        "not run (model higher up hierarchy run instead)": string;
        "not run (user provided data retained)": string;
        "not relevant": string;
    };
    term?: string;
    suggestTerm: (text$: Observable<string>) => Observable<string[]>;
    constructor(searchService: HeSearchService, engineService: HeEngineService);
    ngOnInit(): Promise<void>;
    private fetchAllTerms;
    private suggestByTerm;
    trackByBlankNode(_index: number, node: IBlankNodeLog): string;
    keyValue(blankNodes: blankNode[], key: string): any;
    openPopover(popover: any, { blankNode, methodId, subValue, logs }: {
        blankNode: any;
        methodId: any;
        subValue: any;
        logs: any;
    }): any;
    get filteredType(): string;
    filterResults(): void;
    /** Logs **/
    private getSubvalueLogs;
    getLogs(node: IBlankNodeLog, methodId: string, subValue?: IBlankNodeLogSubValue): any;
    private isBackground;
    private isUserProvided;
    getModelsAt(node: IBlankNodeLog, index: number, subValue?: IBlankNodeLogSubValue): IConfigModel | IConfigModel[];
    methodName(node: IBlankNodeLog, methodId: string, subValue?: IBlankNodeLogSubValue): any;
    hasLogDetails(node: IBlankNodeLog, methodId: string, subValue?: IBlankNodeLogSubValue): any;
    logStatus(node: IBlankNodeLog, methodId: string, subValue?: IBlankNodeLogSubValue): LogStatus;
    requirementKeys(requirements: {
        [key: string]: any;
    }): string[];
    requirementColor(value: any): "danger" | "white";
    static ɵfac: i0.ɵɵFactoryDeclaration<NodeLogsModelsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NodeLogsModelsComponent, "he-node-logs-models", never, { "nodeType": "nodeType"; "nodeKey": "nodeKey"; "includeAllModels": "includeAllModels"; "logsUrl": "logsUrl"; "originalValues": "originalValues"; "recalculatedValues": "recalculatedValues"; "terms": "terms"; "logs": "logs"; "filterTermTypes": "filterTermTypes"; }, {}, never, never>;
}
export {};
