import { IDeliveryClientConfig } from '../config';
import { Contracts } from '../contracts';
import { Responses, IContentItem, ClientTypes } from '../models';
export interface IMappingService<TClientTypes extends ClientTypes> {
    listContentTypesResponse(data: Contracts.IListContentTypeContract): Responses.IListContentTypesResponse<TClientTypes['contentTypeCodenames']>;
    itemsFeedResponse<TContentItem extends IContentItem = TClientTypes['contentItemType']>(data: Contracts.IItemsFeedContract): Responses.IListItemsFeedResponse<TContentItem, TClientTypes['contentItemType']>;
    usedInResponse(data: Contracts.IUsedInItemsContract): Responses.IUsedInResponse<TClientTypes>;
    viewContentTypeResponse(data: Contracts.IViewContentTypeContract): Responses.IViewContentTypeResponse<TClientTypes['contentTypeCodenames']>;
    viewContentItemResponse<TContentItem extends IContentItem = TClientTypes['contentItemType']>(data: Contracts.IViewContentItemContract): Responses.IViewContentItemResponse<TContentItem, TClientTypes['contentItemType']>;
    listContentItemsResponse<TContentItem extends IContentItem = TClientTypes['contentItemType']>(data: Contracts.IListContentItemsContract): Responses.IListContentItemsResponse<TContentItem, TClientTypes['contentItemType']>;
    viewTaxonomyResponse(data: Contracts.IViewTaxonomyGroupContract): Responses.IViewTaxonomyResponse<TClientTypes['taxonomyCodenames']>;
    listTaxonomiesResponse(data: Contracts.IListTaxonomyGroupsContract): Responses.IListTaxonomiesResponse<TClientTypes['taxonomyCodenames']>;
    viewContentTypeElementResponse(data: Contracts.IViewContentTypeElementContract): Responses.IViewContentTypeElementResponse;
    listLanguagesResponse(data: Contracts.IListLanguagesContract): Responses.IListLanguagesResponse<TClientTypes['languageCodenames']>;
    initializeContentSync(data: Contracts.IInitializeSyncContract): Responses.IInitializeSyncResponse;
    syncChanges(data: Contracts.ISyncChangesContract): Responses.ISyncChangesResponse;
}
export declare class MappingService<TClientTypes extends ClientTypes> implements IMappingService<TClientTypes> {
    readonly config: IDeliveryClientConfig;
    private readonly typeMapper;
    private readonly languageMapper;
    private readonly itemMapper;
    private readonly taxonomyMapper;
    private readonly usedInMapper;
    private readonly genericElementMapper;
    private readonly syncMapper;
    constructor(config: IDeliveryClientConfig);
    usedInResponse(data: Contracts.IUsedInItemsContract): Responses.IUsedInResponse<TClientTypes>;
    /**
     * Gets response for list of languages
     * @param data Response data
     */
    listLanguagesResponse(data: Contracts.IListLanguagesContract): Responses.IListLanguagesResponse<TClientTypes['languageCodenames']>;
    /**
     * Gets response for getting a multiple type
     * @param data Response data
     */
    listContentTypesResponse(data: Contracts.IListContentTypeContract): Responses.IListContentTypesResponse<TClientTypes['contentTypeCodenames']>;
    /**
     * Gets response for single type
     * @param data Response data
     * @param options Options
     */
    viewContentTypeResponse(data: Contracts.IViewContentTypeContract): Responses.IViewContentTypeResponse<TClientTypes['contentTypeCodenames']>;
    itemsFeedResponse<TContentItem extends IContentItem = TClientTypes['contentItemType']>(data: Contracts.IItemsFeedContract): Responses.IListItemsFeedResponse<TContentItem, TClientTypes['contentItemType']>;
    /**
     * Gets response for getting single item
     * @param data Response data
     * @param queryConfig Query configuration
     */
    viewContentItemResponse<TContentItem extends IContentItem = TClientTypes['contentItemType']>(data: Contracts.IViewContentItemContract): Responses.IViewContentItemResponse<TContentItem, TClientTypes['contentItemType']>;
    /**
     * Gets response for getting multiple items
     * @param data Response data
     * @param queryConfig Query configuration
     */
    listContentItemsResponse<TContentItem extends IContentItem = TClientTypes['contentItemType']>(data: Contracts.IListContentItemsContract): Responses.IListContentItemsResponse<TContentItem, TClientTypes['contentItemType']>;
    /**
     * Gets response for getting single taxonomy item
     * @param data Response data
     */
    viewTaxonomyResponse(data: Contracts.IViewTaxonomyGroupContract): Responses.IViewTaxonomyResponse<TClientTypes['taxonomyCodenames']>;
    /**
     * Gets response for getting multiples taxonomies
     * @param data Response data
     */
    listTaxonomiesResponse(data: Contracts.IListTaxonomyGroupsContract): Responses.IListTaxonomiesResponse<TClientTypes['taxonomyCodenames']>;
    /**
     * Gets response for getting single content type element
     * @param data Response data
     */
    viewContentTypeElementResponse(data: Contracts.IViewContentTypeElementContract): Responses.IViewContentTypeElementResponse;
    initializeContentSync(data: Contracts.IInitializeSyncContract): Responses.IInitializeSyncResponse;
    syncChanges(data: Contracts.ISyncChangesContract): Responses.ISyncChangesResponse;
    private mapPagination;
}
