import { IUserRepository } from '../../Domain/IRepository/IUserRepository';
import { IOrganizationRepository } from '../../Domain/IRepository/IOrganizationRepository';
import { IDeckRepository } from '../../Domain/IRepository/IDeckRepository';
import { SearchQuery, SearchResult } from '../DTOs/SearchDto';
import { ShortUserDto } from '../DTOs/UserDto';
import { ShortOrganizationDto } from '../DTOs/OrganizationDto';
import { ShortDeckDto } from '../DTOs/DeckDto';
export type SearchType = 'users' | 'organizations' | 'decks';
export interface IGeneralSearchService {
    searchUsers(searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto>>;
    searchOrganizations(searchQuery: SearchQuery): Promise<SearchResult<ShortOrganizationDto>>;
    searchDecks(searchQuery: SearchQuery): Promise<SearchResult<ShortDeckDto>>;
    searchByType(searchType: SearchType, searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto | ShortOrganizationDto | ShortDeckDto>>;
}
export declare class GeneralSearchService implements IGeneralSearchService {
    private userRepo;
    private organizationRepo;
    private deckRepo;
    constructor(userRepo: IUserRepository, organizationRepo: IOrganizationRepository, deckRepo: IDeckRepository);
    static getSearchTypeFromUrl(url: string): SearchType;
    searchUsers(searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto>>;
    searchOrganizations(searchQuery: SearchQuery): Promise<SearchResult<ShortOrganizationDto>>;
    searchDecks(searchQuery: SearchQuery): Promise<SearchResult<ShortDeckDto>>;
    searchByType(searchType: SearchType, searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto | ShortOrganizationDto | ShortDeckDto>>;
    searchFromUrl(url: string, searchQuery: SearchQuery): Promise<SearchResult<ShortUserDto | ShortOrganizationDto | ShortDeckDto>>;
}
//# sourceMappingURL=Generalsearch.d.ts.map