import React from 'react';
import { AttributeType, AttributeValue, Crosswalk, ParticipationStatus, SurvivorStrategy } from '@reltio/mdm-sdk';
import { AddInlineAttributeEvent, DeleteInlineAttributeEvent, EditInlineAttributeEvent, IgnoreInlineAttributeEvent, PinInlineAttributeEvent } from '../../../types/inlineAttributes';
import { ColumnData, RenderRowCellProps } from '../../../types/basicTable';
import { CrosswalksMap } from '../../../types';
export type StrategyAdditionalFields = {
    primaryAttributeUri?: string;
    comparisonAttributeUri?: string;
    sourcesUriOrder?: string[];
};
export type AppliedSurvivorshipStrategy = {
    strategy: SurvivorStrategy;
} & StrategyAdditionalFields;
export type RuleTypeItem = {
    type: 'rule';
    data: AppliedSurvivorshipStrategy;
    valueUri: string;
} | {
    type: 'status';
    data: ParticipationStatus;
    valueUri: string;
};
export type RuleTypeValues = {
    ruleTypes: RuleTypeItem[];
};
export type OvValues = {
    attributeType: AttributeType;
    values: AttributeValue[];
};
export type AttributeValues = {
    attributeType: AttributeType;
    attributeValues: AttributeValue[];
    crosswalksMap: CrosswalksMap;
};
export type WinnerSources = {
    crosswalks: Crosswalk[];
};
export type AttributesTableRowValue = {
    count: number;
    ovValues: OvValues;
    rawValue: AttributeValue[];
    ruleType?: RuleTypeValues;
    values?: AttributeValues;
    winnerSources?: WinnerSources;
};
export type AttributesTableColumnData = ColumnData & {
    id: keyof AttributesTableRowValue;
};
export type GetRowCellKeyProps = {
    rowValue: AttributesTableRowValue;
    columnData: AttributesTableColumnData;
    cellIndex: number;
    rowIndex: number;
};
type CellValueRendererProps = {
    value: unknown;
    rowValue: AttributesTableRowValue;
    [key: string]: unknown;
};
export type RowCellRendererProps = RenderRowCellProps & {
    CellValueRenderer: (props: CellValueRendererProps) => React.ReactElement;
    columnData: AttributesTableColumnData;
    rowValue: AttributesTableRowValue;
};
export type AttributesRendererProps = {
    attributeValues?: AttributeValue[];
    attributeType: AttributeType;
    crosswalksMap: CrosswalksMap;
    parentUri: string;
    disableDelete?: boolean;
    disableEdit?: boolean;
    onDelete: (event: DeleteInlineAttributeEvent) => void;
    onEdit: (event: EditInlineAttributeEvent) => void;
    onPin: (event: PinInlineAttributeEvent) => void;
    onIgnore: (event: IgnoreInlineAttributeEvent) => void;
    onAdd: (event: AddInlineAttributeEvent) => void;
    emptyTempAttributeUris: string[];
};
export {};
