import { Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, ITermJSONLD, Completeness, Infrastructure, Emission, Measurement, Practice, Product, Input, Property, Indicator } from '@hestia-earth/schema';
export declare const isMethodModelAllowed: (filterMethod?: Term) => (node: Indicator) => boolean;
export declare enum NodeKeyState {
    added = "added",
    updated = "updated",
    aggregated = "aggregated",
    deleted = "deleted",
    unchanged = "unchanged"
}
export declare type blankNode = Completeness | Infrastructure | Input | Emission | Measurement | Practice | Product | Property;
export declare const isState: (node: blankNode, key: string, state: NodeKeyState) => any;
export interface IGroupedNode<T> {
    node: T;
    nodes: T[];
    index: number;
    value: number[];
    dates?: any[];
    sd?: number[];
    min?: number[];
    max?: number[];
    inputs?: any[];
    depthUpper?: number[];
    depthLower?: number[];
    startDate?: string[];
    endDate?: string[];
}
export interface IGroupedNodesValues<T> {
    [nodeId: string]: IGroupedNode<T>;
}
export interface IGroupedNodesValue<T> {
    term: ITermJSONLD;
    /**
     * Enable ordering ny methodTier
     */
    methodTierOrder: number;
    values: IGroupedNodesValues<T>;
    originalValues: {
        [nodeId: string]: {
            value: number;
        };
    };
}
export interface IGroupedNodes<T> {
    [termId: string]: IGroupedNodesValue<T>;
}
export interface IGroupedKeys<T> {
    key: string;
    value: IGroupedNodesValue<T>;
}
export declare const grouppedKeys: <T>(values: IGroupedNodes<T>) => IGroupedKeys<T>[];
export declare const grouppedValueKeys: string[];
export declare const groupNodesByTerm: <T extends IImpactAssessmentJSONLD | ISiteJSONLD | ICycleJSONLD, R>(nodes: T[], key: 'endpoints' | 'impacts' | 'emissionsResourceUse' | 'inputs' | 'products' | 'practices' | 'emissions' | 'measurements', originalValues?: T[], includeNode?: (node: any) => boolean) => IGroupedNodes<R>;
