import * as React from 'react';

export type CommonListProps = {
    isBlocked?: boolean;
    noResultsText?: string | React.ReactNode;
    blockedText?: string;
} & Partial<CommonListDefaultProps>;

export type CommonListDefaultProps = {
    isBlocked: boolean;
    noResultsText: string | React.ReactNode;
    blockedText: string;
}

export abstract class CommonList<P> extends React.Component<CommonListProps & P> {
    rowClickHandler(Function): (Event) => void;

    renderEmpty(): CommonListDefaultProps['noResultsText'];

    renderEmptyListMessage(): CommonListDefaultProps['noResultsText'] | void;

    renderBlockedMessage(): CommonListDefaultProps['blockedText'] | void;

    abstract renderItem(...args): any;

    render() : React.ReactNode;
}