import { Observable } from 'rxjs';
import { IDeliveryClientConfig } from '../../config';
import { ICloudResponse, IItemQueryConfig } from '../../interfaces';
import { ContentItem, ItemResponses } from '../../models';
import { QueryService } from '../../services';
import { BaseQuery } from '../common/base-query.class';
export declare abstract class BaseItemQuery<TItem extends ContentItem, TResponse extends ICloudResponse> extends BaseQuery<TResponse> {
    protected config: IDeliveryClientConfig;
    protected queryService: QueryService;
    protected _queryConfig: IItemQueryConfig;
    constructor(config: IDeliveryClientConfig, queryService: QueryService);
    /**
     * Used to configure query
     * @param queryConfig Query configuration
     */
    queryConfig(queryConfig: IItemQueryConfig): this;
    /**
     * Language codename
     * @param languageCodename Codename of the language
     */
    languageParameter(languageCodename: string): this;
    /**
     * Used to limit the number of elements returned by query.
     * @param elementCodenames Array of element codenames to fetch
     */
    elementsParameter(elementCodenames: string[]): this;
    /**
     * Indicates how deep nested modular content items are resolved.
     * @param depth Depth of the query (> 0)
     */
    depthParameter(depth: number): this;
    injectMultipleItems(body: string): ItemResponses.DeliveryItemListingResponse<TItem>;
    injectSingleItem(body: string): ItemResponses.DeliveryItemResponse<TItem>;
    protected getMultipleItemsQueryUrl(): string;
    protected getSingleItemQueryUrl(codename: string): string;
    protected runMultipleItemsQuery(): Observable<ItemResponses.DeliveryItemListingResponse<TItem>>;
    protected runSingleItemQuery(codename: string): Observable<ItemResponses.DeliveryItemResponse<TItem>>;
    private processDefaultLanguageParameter();
}
