import { Node, Edge } from 'reactflow';
import { Actor, VerifiableCredential, Anchor } from '../../integrityTypes/types';
import { GovernanceStatement, MetadataStatement, Statement, StorageStatement, VcStatement, SigstoreBundle } from '../../integrityTypes/StatementTypes';
export type LineageEdge = Edge<EdgeData>;
export type EdgeData = {
    isInSubGraph: boolean;
};
export declare function createEdge(source: string, target: string): LineageEdge;
export type LineageNode = Node<NodeData>;
export type NodeData = {
    label: string;
    nodeShape: NodeShape;
    icon: string;
    displayType: string;
    size: NodeSize;
    customIcons?: Record<string, string>;
    sub_graph?: SubgraphInfo;
    hasSuccessorNode: boolean;
    hasPrecedingNode: boolean;
    isInSubGraph: boolean;
    sidebarData: DataNodeSidebarData | ComputeNodeSidebarData | null;
    isActive: boolean;
};
export type MetadataLineage = {
    statement: MetadataStatement;
    metadata: object;
    vc?: VerifiableCredential;
};
export type DataNodeRegistration = {
    statement: Statement;
    registeredByActor: Actor;
    anchors?: Anchor;
    vcs?: VcStatement[];
};
export type StorageLineage = {
    statement: StorageStatement;
    metadata: object;
};
export type DataNodeSidebarData = {
    registrations?: DataNodeRegistration[];
    metadata?: object[];
    metadataLineage?: MetadataLineage[];
    sourceData?: IrohData[] | string;
    storage?: StorageLineage;
    governance?: GovernanceStatement;
    sigstoreBundles?: SigstoreBundle[];
};
export type ComputeNodeSidebarData = {
    statement: Statement;
    metadata?: object;
    metadataLineage?: MetadataLineage[];
    vcStatement?: VcStatement[];
    registeredByActor: Actor;
    executedOnActor?: Actor;
    operatedByActor?: Actor;
    sourceData?: IrohData[] | string;
    anchor?: Anchor;
    governance?: GovernanceStatement;
};
export type IrohData = {
    path: string;
    cid: string;
    data: string | null;
};
export declare const defaultNodeSize: {
    width: number;
    height: number;
};
export type NodeShape = "round" | "square";
export type NodeUIComponent = "CustomNode" | "ComputationNode";
export type NodeSize = {
    width: number;
    height: number;
};
export type NodeConfig = {
    displayType: string;
    shape: NodeShape;
    icon: string;
    component: NodeUIComponent;
    size: NodeSize;
};
export declare function createDefaultNode(id: string, nodeConfig: NodeConfig, label: string, customIcons?: Record<string, string>, graph?: Subgraph): LineageNode;
export interface GraphManifest {
    graphs: Array<Subgraph>;
    blobs: Record<string, string>;
    anchors?: Anchor[];
}
export interface Subgraph extends SubgraphInfo {
    statements: Array<object>;
}
export interface SubgraphInfo {
    id: string;
    name: string;
    parent?: string;
}
