import Graph from 'graphology';
import { NodeDisplayData, EdgeDisplayData } from 'sigma/types';
import { Settings } from 'sigma/settings';
import { TRelationType } from '@reltio/mdm-sdk';
export type GraphEdgeAttributes = EdgeDisplayData & {
    loop: boolean;
    arrowSizeRatio?: number;
    selected?: boolean;
    labelColor?: string;
};
export type GraphNodeAttributes = NodeDisplayData & {
    secondaryLabel?: string;
    image?: string;
    hasBorder?: boolean;
    selected?: boolean;
    inactive?: boolean;
    labelColor?: string;
    secondaryLabelColor?: string;
};
export declare enum DataModelGraphNodeType {
    entityType = "entityType",
    interactionType = "interactionType"
}
export type DataModelGraphEdgeAttributes = GraphEdgeAttributes & {
    relationTypes: TRelationType[];
};
export type DataModelGraphNodeAttributes = GraphNodeAttributes & {
    nodeType: DataModelGraphNodeType;
};
export type GraphContainerSettings = Partial<Settings & {
    secondaryLabelColor: {
        attribute?: string;
        color?: string;
    };
}>;
export interface GraphologyLayout<T> {
    (graph: Graph, options: T): {
        [node: string]: {
            [dimension: string]: number;
        };
    };
    assign?(graph: Graph, options: T): void;
}
interface GraphologyWorkerLayout {
    stop: () => void;
    start: () => void;
    kill: () => void;
}
export interface GraphologyWorkerLayoutConstructor<T> {
    new (graph: Graph, settings: T): GraphologyWorkerLayout;
}
export {};
