import React from 'react';
import { type IProfileFormProps } from '../../form';
import { IBadgesObject } from '../badge';
import { IBadgesOption } from '../badges';
export type MemberDetailsProps = {
    /** The user's unique ID */
    id?: string;
    /** The user's name */
    name?: string;
    /** The user's profile URL; we usually get this from the ID, but we won't if `false` is passed in */
    link?: false | string;
    /** The user's job title */
    jobTitle?: string;
    /** The organisation the user works for */
    organization?: string;
    /** The user's location */
    location?: {
        en?: string;
    };
    /** The user's profile picture */
    image?: {
        thumbnail?: string;
    };
    /** An error, shown if the user doesn't exist */
    error?: string;
    /** The user's badges */
    badges?: IBadgesObject;
};
export type MemberProps = 'apolitical' | 'community' | 'deleted' | MemberDetailsProps;
export declare enum ConnectionStatusType {
    Accepted = "accepted",
    Cancelled = "cancelled",
    Declined = "declined",
    Pending = "pending",
    Removed = "removed"
}
export type ConnectionType = ConnectionStatusType.Accepted | ConnectionStatusType.Cancelled | ConnectionStatusType.Declined | ConnectionStatusType.Pending | ConnectionStatusType.Removed;
export declare enum ConnectionDirectionType {
    In = "in",
    Out = "out"
}
export interface IMemberComponentProps {
    /** The element to render around the content */
    element?: 'li' | 'div';
    /** Details about the Apolitical member */
    member?: MemberProps;
    /** The alt text for the image */
    alt?: string;
    /** Additional content to show with the member details */
    additionalContent?: false | {
        createdAt?: Date | string;
        didEdit?: boolean;
        customMessage?: {
            text?: string;
            link?: {
                text: string;
                url: string;
            };
        };
    };
    /** Whether to show badges and the scope of the badge */
    badges?: IBadgesOption;
    connection?: {
        status: ConnectionStatusType | null;
        direction: ConnectionDirectionType | null;
    };
    /**  Optional styling */
    styling?: {
        /** The size of the component */
        size?: 'medium' | 'large';
        /** The type of component to render, e.g. with card styling */
        variant?: 'inline' | 'card';
        /** Whether the user details should be condensed into one line */
        isCondensed?: boolean;
        /** Whether to shift the additional content onto a new line after the badges. Hide the Job title + Organisation */
        additionalContentNewLine?: boolean;
    };
    /** Optional functions for the wrapper */
    functions?: {
        /** Optional onclick function */
        onClick?: (e: React.MouseEvent) => void;
        /** Props for the profile modal */
        profile?: IProfileFormProps;
        connections?: {
            onAccept: () => Promise<boolean | void>;
            onDecline?: () => Promise<boolean | void>;
            onCancel?: () => Promise<boolean | void>;
            onRemove?: () => Promise<boolean | void>;
            onRequest: () => Promise<boolean | void>;
        };
    };
    /** The optional test ID for Jest */
    'data-testid'?: string;
    /** The GTM context to use */
    gtmContext?: string;
    /** The GTM event to use */
    gtmType?: string;
    /** Additional classes */
    className?: string;
}
