import { IHttpService } from '@kontent-ai/core-sdk';
import { IDeliveryClientConfig } from '../config';
import { Contracts } from '../contracts';
import { Responses, IContentItem, IContentTypeQueryConfig, IGroupedNetworkResponse, IItemQueryConfig, IDeliveryNetworkResponse, ILanguagesQueryConfig, ITaxonomyQueryConfig, ISyncInitQueryConfig, ClientTypes } from '../models';
import { IKontentListAllResponse, IKontentListResponse, IListAllQueryConfig, ISDKInfo } from '../models/common/common-models';
import { BaseDeliveryQueryService } from './base-delivery-query.service';
import { IMappingService } from './mapping.service';
export declare class QueryService<TClientTypes extends ClientTypes> extends BaseDeliveryQueryService<TClientTypes> {
    constructor(config: IDeliveryClientConfig, httpService: IHttpService<any>, sdkInfo: ISDKInfo, mappingService: IMappingService<TClientTypes>);
    /**
     * Gets single item from given url
     * @param url Url used to get single item
     * @param queryConfig Query configuration
     */
    getSingleItemAsync<TContentItem extends IContentItem = TClientTypes['contentItemType']>(url: string, queryConfig: IItemQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IViewContentItemResponse<TContentItem, TClientTypes['contentItemType']>, Contracts.IViewContentItemContract>>;
    /**
     * Gets single feed response. Might not contain all items in your environment.
     * @param url Url
     * @param queryConfig Query configuration
     */
    getItemsFeed<TContentItem extends IContentItem = TClientTypes['contentItemType']>(url: string, queryConfig: IItemQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IListItemsFeedResponse<TContentItem, TClientTypes['contentItemType']>, Contracts.IItemsFeedContract>>;
    /**
     * Gets single used in response. Might not contain all used in references.
     * @param url Url
     * @param queryConfig Query configuration
     */
    getUsedIn(url: string, queryConfig: IItemQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IUsedInResponse<TClientTypes>, Contracts.IUsedInItemsContract>>;
    /**
     * Gets multiple items from given url
     * @param url Url used to get multiple items
     * @param queryConfig Query configuration
     */
    getMultipleItems<TContentItem extends IContentItem = TClientTypes['contentItemType']>(url: string, queryConfig: IItemQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IListContentItemsResponse<TContentItem, TClientTypes['contentItemType']>, Contracts.IListContentItemsContract>>;
    /**
     * Gets single content type from given url
     * @param url Url used to get single type
     * @param queryConfig Query configuration
     */
    getSingleType(url: string, queryConfig: IContentTypeQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IViewContentTypeResponse<TClientTypes['contentTypeCodenames']>, Contracts.IViewContentTypeContract>>;
    /**
     * Gets multiple content types from given url
     * @param url Url used to get multiple types
     * @param queryConfig Query configuration
     */
    getMultipleTypes(url: string, queryConfig: IContentTypeQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IListContentTypesResponse<TClientTypes['contentTypeCodenames']>, Contracts.IListContentTypeContract>>;
    /**
     * Initializes synchronization of changes in content items based on the specified parameters. After the initialization,
     * you'll get an X-Continuation token in the response.
     * Use the token to synchronize changes in the content items matching the initialization criteria.
     * @param url Url
     * @param queryConfig Query configuration
     */
    initializeSync(url: string, queryConfig: ISyncInitQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IInitializeSyncResponse, Contracts.IInitializeSyncContract>>;
    /**
     * Retrieve a list of delta updates to recently changed content items in the specified environment.
     * The types of items you get is determined by the X-Continuation token you use.
     * @param url Url used to get multiple types
     * @param queryConfig Query configuration
     */
    syncChanges(url: string, queryConfig: IContentTypeQueryConfig): Promise<IDeliveryNetworkResponse<Responses.ISyncChangesResponse, Contracts.ISyncChangesContract>>;
    /**
     * Gets languages
     * @param url Url
     * @param queryConfig Query configuration
     */
    getLanguages(url: string, queryConfig: ILanguagesQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IListLanguagesResponse<TClientTypes['languageCodenames']>, Contracts.IListLanguagesContract>>;
    /**
     * Gets single taxonomy from given url
     * @param url Url used to get single taxonomy
     * @param queryConfig Query configuration
     */
    getTaxonomy(url: string, queryConfig: ITaxonomyQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IViewTaxonomyResponse<TClientTypes['taxonomyCodenames']>, Contracts.IViewTaxonomyGroupContract>>;
    /**
     * Gets multiple taxonomies from given url
     * @param url Url used to get multiple taxonomies
     * @param queryConfig Query configuration
     */
    getTaxonomies(url: string, queryConfig: ITaxonomyQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IListTaxonomiesResponse<TClientTypes['taxonomyCodenames']>, Contracts.IListTaxonomyGroupsContract>>;
    /**
     * Gets single content type element from given url
     * @param url Url used to get single content type element
     * @param queryConfig Query configuration
     */
    getElementAsync(url: string, queryConfig: ITaxonomyQueryConfig): Promise<IDeliveryNetworkResponse<Responses.IViewContentTypeElementResponse, Contracts.IViewContentTypeElementContract>>;
    getListAllResponse<TResponse extends IKontentListResponse, TAllResponse extends IKontentListAllResponse, TContract>(data: {
        page: number;
        getResponse: (nextPageUrl?: string, continuationToken?: string) => Promise<IDeliveryNetworkResponse<TResponse, TContract>>;
        allResponseFactory: (items: any[], responses: IDeliveryNetworkResponse<TResponse, TContract>[]) => IGroupedNetworkResponse<TAllResponse>;
        listQueryConfig?: IListAllQueryConfig<TResponse, TContract>;
    }): Promise<IGroupedNetworkResponse<TAllResponse>>;
    private getListAllResponseInternalAsync;
    private sleep;
}
