import { Message } from "../message";
/**
 * Abstract base class for classes used to filter messages.
 *
 * <uml>
 *  hide members
 *  hide circle
 *  MessageFilter <|-- AddressMessageFilter
 *  MessageFilter <|-- RegExpAddressMessageFilter
 * </uml>
 */
export declare abstract class MessageFilter {
    /**
     * When overridden in a derived class, tests whether or not the message satisfies the criteria of the filter.
     * @param message The message to match.
     */
    abstract match(message: Message): boolean;
    /**
     * Returns a new filter that is the logical AND of the current filter and the 'other' filter.
     * @param other The filter to combine with the current filter.
     */
    and(other: MessageFilter): MessageFilter;
    /**
     * Returns a new filter that is the logical OR of the current filter and the 'other' filter.
     * @param other The filter to combine with the current filter.
     */
    or(other: MessageFilter): MessageFilter;
    /**
     * Returns a new filter that is the logical NOT of the current filter.
     */
    not(): MessageFilter;
}
