import { Observable } from 'rxjs';
import { EventEmitter } from '@angular/core';
export declare class AbstractHttpTypeAheadService<T> {
    key: keyof T;
    options: T[];
    placeholder: string;
    selected: T[];
    itemAdded$: EventEmitter<T>;
    itemRemoved$: EventEmitter<T>;
    limit: number;
    search: (term: string) => Observable<T[]>;
    formatter(item: T): string;
    add(item: T): void;
    /**
     * This uses the `key` member property to remove an item from `selected`
     */
    remove(toRemove: T): void;
    /**
     * This uses the `key` member property to assess the presence of an item `selected`
     */
    isSelected(newItem: T): boolean;
    /**
     * Performs a very simple substring search on the given item for the given term
     */
    matches(item: T, term: string): boolean;
    /**
     * Filters this.options by the supplied term, and also filters out the selected items.
     */
    filter(term?: string): Observable<T[]>;
    setPlaceholder(text: string): void;
}
