import { Observable } from 'rxjs/Rx';
import Account from '../repository/models/Account';
import OfferSearch, { OfferResultAction } from '../repository/models/OfferSearch';
import OfferSearchResultItem from '../repository/models/OfferSearchResultItem';
import { Page } from '../repository/models/Page';
import SearchRequest from '../repository/models/SearchRequest';
import { OfferSearchRepository, OfferSearchRequestInterestMode } from '../repository/search/OfferSearchRepository';
import { SearchRequestRepository } from '../repository/search/SearchRequestRepository';
import { SearchManager, SortOfferSearch } from './SearchManager';
export declare class SearchManagerImpl implements SearchManager {
    private account;
    private requestRepository;
    private offerSearchRepository;
    constructor(requestRepository: SearchRequestRepository, offerSearchRepository: OfferSearchRepository, authAccountBehavior: Observable<Account>);
    createRequest(searchRequest: SearchRequest): Promise<SearchRequest>;
    updateRequest(searchRequest: SearchRequest): Promise<SearchRequest>;
    cloneRequest(searchRequest: SearchRequest): Promise<SearchRequest>;
    cloneOfferSearch(id: number, searchRequest: SearchRequest): Promise<Array<OfferSearch>>;
    getMyRequests(id?: number): Promise<Array<SearchRequest>>;
    getRequestsByOwnerAndId(owner: string, id?: number): Promise<Array<SearchRequest>>;
    getAllRequests(): Promise<Array<SearchRequest>>;
    deleteRequest(id: number): Promise<number>;
    createSearchResultByQuery(query: string, searchRequestId: number, page?: number, size?: number, interests?: Array<string>, mode?: OfferSearchRequestInterestMode): Promise<Page<OfferSearchResultItem>>;
    getCountBySearchRequestIds(searchRequestIds: Array<number>): Promise<Map<number, number>>;
    getSearchResult(searchRequestId: number): Promise<Page<OfferSearchResultItem>>;
    getUserOfferSearches(page?: number, size?: number, unique?: boolean, searchIds?: Array<number>, state?: Array<OfferResultAction>, sort?: SortOfferSearch): Promise<Page<OfferSearchResultItem>>;
    getSearchResultByOfferSearchId(offerSearchId: number): Promise<Page<OfferSearchResultItem>>;
    complainToSearchItem(searchResultId: number): Promise<void>;
    rejectSearchItem(searchResultId: number): Promise<void>;
    evaluateSearchItem(searchResultId: number): Promise<void>;
    confirmSearchItem(searchResultId: number): Promise<void>;
    claimPurchaseForSearchItem(searchResultId: number): Promise<void>;
    addResultItem(offerSearch: OfferSearch): Promise<void>;
    addEventToOfferSearch(event: string, offerSearchId: number): Promise<void>;
    getSearchRequestsByOwnerAndTag(owner: string, tag: string): Promise<Array<SearchRequest>>;
    getMySearchRequestsByTag(tag: string): Promise<Array<SearchRequest>>;
    private onChangeAccount;
}
