import { Contracts } from '../contracts';
import { IDeliveryNetworkResponse } from './common/base-responses';
import { IKontentListAllResponse, IKontentListResponse, IKontentResponse } from './common/common-models';
import { IPagination } from './common/pagination.class';
import { IContentType } from './content-type-models';
import { IGenericElementOption } from './element-models';
import { IContentItem, IContentItemsContainer, IUsedInItemRecord } from './item-models';
import { ILanguage } from './language-models';
import { IContentItemDelta } from './sync-models';
import { ITaxonomyGroup } from './taxonomy-models';
import { ClientTypes } from './item-models';
export declare namespace Responses {
    interface IListContentTypesResponse<TContentTypeCodename extends string> extends IKontentListResponse {
        items: IContentType<TContentTypeCodename>[];
        pagination: IPagination;
    }
    interface IListContentTypesAllResponse<TContentTypeCodename extends string> extends IKontentListAllResponse {
        items: IContentType<TContentTypeCodename>[];
        responses: IDeliveryNetworkResponse<IListContentTypesResponse<TContentTypeCodename>, Contracts.IListContentTypeContract>[];
    }
    interface IViewContentTypeResponse<TContentTypeCodename extends string> extends IKontentResponse {
        type: IContentType<TContentTypeCodename>;
    }
    interface IViewContentTypeElementResponse extends IKontentResponse {
        codename?: string;
        type: string;
        name: string;
        taxonomyGroup?: string;
        options: IGenericElementOption[];
    }
    interface IUsedInResponse<TClientTypes extends ClientTypes> extends IKontentListResponse {
        items: IUsedInItemRecord<TClientTypes>[];
    }
    interface IUsedInAllResponse<TClientTypes extends ClientTypes> extends IKontentListAllResponse {
        items: IUsedInItemRecord<TClientTypes>[];
        responses: IDeliveryNetworkResponse<IUsedInResponse<TClientTypes>, Contracts.IUsedInItemsContract>[];
    }
    interface IListItemsFeedResponse<TContentItem extends IContentItem = IContentItem, TLinkedItemType extends IContentItem = IContentItem> extends IKontentListResponse {
        items: TContentItem[];
        linkedItems: IContentItemsContainer<TLinkedItemType>;
    }
    interface IListItemsFeedAllResponse<TContentItem extends IContentItem = IContentItem, TLinkedItemType extends IContentItem = IContentItem> extends IKontentListAllResponse {
        items: TContentItem[];
        responses: IDeliveryNetworkResponse<IListItemsFeedResponse<TContentItem, TLinkedItemType>, Contracts.IItemsFeedContract>[];
    }
    interface IListContentItemsResponse<TContentItem extends IContentItem = IContentItem, TLinkedItemType extends IContentItem = IContentItem> extends IKontentListResponse {
        items: TContentItem[];
        pagination: IPagination;
        linkedItems: IContentItemsContainer<TLinkedItemType>;
    }
    interface IListContentItemsAllResponse<TContentItem extends IContentItem = IContentItem, TLinkedItemType extends IContentItem = IContentItem> extends IKontentListAllResponse {
        items: TContentItem[];
        responses: IDeliveryNetworkResponse<IListContentItemsResponse<TContentItem, TLinkedItemType>, Contracts.IListContentItemsContract>[];
    }
    interface IViewContentItemResponse<TContentItem extends IContentItem = IContentItem, TLinkedItemType extends IContentItem = IContentItem> extends IKontentResponse {
        item: TContentItem;
        linkedItems: IContentItemsContainer<TLinkedItemType>;
    }
    interface IInitializeSyncResponse extends IKontentResponse {
        items: IContentItemDelta[];
    }
    interface ISyncChangesResponse extends IKontentResponse {
        items: IContentItemDelta[];
    }
    interface ISyncChangesAllResponse extends IKontentListAllResponse {
        items: IContentItemDelta[];
        responses: IDeliveryNetworkResponse<ISyncChangesResponse, Contracts.ISyncChangesContract>[];
    }
    interface IListLanguagesResponse<TLanguageCodenames extends string> extends IKontentListResponse {
        items: ILanguage<TLanguageCodenames>[];
        pagination: IPagination;
    }
    interface IListLanguagesAllResponse<TLanguageCodenames extends string> extends IKontentListAllResponse {
        items: ILanguage<TLanguageCodenames>[];
        responses: IDeliveryNetworkResponse<IListLanguagesResponse<TLanguageCodenames>, Contracts.IListLanguagesContract>[];
    }
    interface IViewTaxonomyResponse<TaxonomyCodename extends string> extends IKontentResponse {
        taxonomy: ITaxonomyGroup<TaxonomyCodename>;
    }
    interface IListTaxonomiesResponse<TaxonomyCodename extends string> extends IKontentListResponse {
        items: ITaxonomyGroup<TaxonomyCodename>[];
        pagination: IPagination;
    }
    interface IListTaxonomiesAllResponse<TaxonomyCodename extends string> extends IKontentListAllResponse {
        items: ITaxonomyGroup<TaxonomyCodename>[];
        responses: IDeliveryNetworkResponse<IListTaxonomiesResponse<TaxonomyCodename>, Contracts.IListTaxonomyGroupsContract>[];
    }
}
