import { Contracts } from '../../contracts';
import { IDeliveryClientConfig } from '../../config';
import { IContentItem, IItemQueryConfig, IDeliveryNetworkResponse, Responses, ClientTypes } from '../../models';
import { QueryService } from '../../services';
import { BaseQuery } from '../common/base-query.class';
export declare class SingleItemQuery<TClientTypes extends ClientTypes, TContentItem extends IContentItem = IContentItem> extends BaseQuery<TClientTypes, Responses.IViewContentItemResponse<TContentItem, TClientTypes['contentItemType']>, IItemQueryConfig, Contracts.IViewContentItemContract> {
    protected config: IDeliveryClientConfig;
    protected queryService: QueryService<TClientTypes>;
    private codename;
    protected _queryConfig: IItemQueryConfig;
    constructor(config: IDeliveryClientConfig, queryService: QueryService<TClientTypes>, codename: string);
    /**
     * Indicates depth of query that affects loading of nested linked items.
     * @param depth Depth of the query (> 0)
     */
    depthParameter(depth: number): this;
    /**
     * Used to configure query
     * @param queryConfig Query configuration
     */
    queryConfig(queryConfig: IItemQueryConfig): this;
    /**
     * Language codename
     * @param languageCodename Codename of the language
     */
    languageParameter(languageCodename: TClientTypes['languageCodenames']): this;
    /**
     * Used to limit the number of elements returned by query.
     * @param elementCodenames Array of element codenames to fetch
     */
    elementsParameter(elementCodenames: TClientTypes['elementCodenames'][]): this;
    /**
     * Used to exclude elements returned by query.
     * @param elementCodenames Array of element codenames to exclude
     */
    excludeElementsParameter(elementCodenames: TClientTypes['elementCodenames'][]): this;
    toPromise(): Promise<IDeliveryNetworkResponse<Responses.IViewContentItemResponse<TContentItem, TClientTypes['contentItemType']>, Contracts.IViewContentItemContract>>;
    getUrl(): string;
    map(json: any): Responses.IViewContentItemResponse<TContentItem, TClientTypes['contentItemType']>;
}
