import React from 'react';
import { Values, Value, Property as FTMProperty, Entity as FTMEntity } from "@alephdata/followthemoney";
import './Property.scss';
interface IPropertyCommonProps {
    prop: FTMProperty;
}
declare class PropertyName extends React.PureComponent<IPropertyCommonProps> {
    render(): string;
}
interface IPropertyValueProps extends IPropertyCommonProps {
    value: Value;
    resolveEntityReference?: (entityId: string) => FTMEntity | undefined;
    getEntityLink?: (entity: FTMEntity) => any;
}
declare class PropertyValue extends React.PureComponent<IPropertyValueProps> {
    render(): any;
}
interface IPropertyValuesProps extends IPropertyCommonProps {
    values: Values;
    separator?: string;
    missing?: string;
    resolveEntityReference?: (entityId: string) => FTMEntity | undefined;
    getEntityLink?: (entity: FTMEntity) => any;
}
declare class PropertyValues extends React.PureComponent<IPropertyValuesProps> {
    render(): JSX.Element;
}
declare class Property extends React.Component {
    static Name: typeof PropertyName;
    static Reverse: {
        new (props: Readonly<any>): {
            render(): JSX.Element;
            context: any;
            setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<any>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
            forceUpdate(callback?: (() => void) | undefined): void;
            readonly props: Readonly<any> & Readonly<{
                children?: React.ReactNode;
            }>;
            state: Readonly<{}>;
            refs: {
                [key: string]: React.ReactInstance;
            };
            componentDidMount?(): void;
            shouldComponentUpdate?(nextProps: Readonly<any>, nextState: Readonly<{}>, nextContext: any): boolean;
            componentWillUnmount?(): void;
            componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
            getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<{}>): any;
            componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<{}>, snapshot?: any): void;
            componentWillMount?(): void;
            UNSAFE_componentWillMount?(): void;
            componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
            UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
            componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<{}>, nextContext: any): void;
            UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<{}>, nextContext: any): void;
        };
        new (props: any, context?: any): {
            render(): JSX.Element;
            context: any;
            setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<any>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
            forceUpdate(callback?: (() => void) | undefined): void;
            readonly props: Readonly<any> & Readonly<{
                children?: React.ReactNode;
            }>;
            state: Readonly<{}>;
            refs: {
                [key: string]: React.ReactInstance;
            };
            componentDidMount?(): void;
            shouldComponentUpdate?(nextProps: Readonly<any>, nextState: Readonly<{}>, nextContext: any): boolean;
            componentWillUnmount?(): void;
            componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
            getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<{}>): any;
            componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<{}>, snapshot?: any): void;
            componentWillMount?(): void;
            UNSAFE_componentWillMount?(): void;
            componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
            UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
            componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<{}>, nextContext: any): void;
            UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<{}>, nextContext: any): void;
        };
        contextType?: React.Context<any> | undefined;
    };
    static getSortValue: ({ prop, resolveEntityReference, value }: IPropertyValueProps) => string | number | FTMEntity;
    static Value: typeof PropertyValue;
    static Values: typeof PropertyValues;
}
export default Property;
