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';
type StrategyAdditionalFields = {
    primaryAttributeUri?: string;
    comparisonAttributeUri?: string;
    sourcesUriOrder?: string[];
};
export type AppliedSurvivorshipStrategy = {
    strategy: SurvivorStrategy;
} & StrategyAdditionalFields;
export declare enum RuleItemType {
    Rule = "rule",
    Status = "status"
}
type SurvivorshipRuleItem = {
    type: RuleItemType.Rule;
    data: AppliedSurvivorshipStrategy;
};
type ParticipationStatusItem = {
    type: RuleItemType.Status;
    data: ParticipationStatus;
};
export type RuleTypeItem = SurvivorshipRuleItem | ParticipationStatusItem;
export type AttributeValueLite = Pick<AttributeValue, 'uri' | 'value' | 'ovDetails'>;
export type RuleTypeValues = {
    attributeType: AttributeType;
    attributeValues: AttributeValueLite[];
    getRuleTypeData: (attrType: AttributeType, attrValue?: AttributeValueLite) => RuleTypeItem;
};
export type OvValues = {
    attributeType: AttributeType;
    values: AttributeValue[] | undefined;
};
export type AttributeValues = {
    attributeType: AttributeType;
    attributeValues: AttributeValue[] | undefined;
    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 type SortAttributeValuesFn = (values: AttributeValue[]) => AttributeValue[];
export {};
