/**
 * iCure Data Stack API Documentation
 * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
import { XHR } from './XHR';
import { CalendarItem } from '../model/CalendarItem';
import { DocIdentifier } from '../model/DocIdentifier';
import { ListOfIds } from '../model/ListOfIds';
import { AuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider';
import { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult';
import { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult';
import { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams';
import { PaginatedListCalendarItem } from '../model/PaginatedListCalendarItem';
export declare class IccCalendarItemApi {
    host: string;
    _headers: Array<XHR.Header>;
    authenticationProvider: AuthenticationProvider;
    fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
    get headers(): Promise<Array<XHR.Header>>;
    constructor(host: string, headers: any, authenticationProvider?: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
    setHeaders(h: Array<XHR.Header>): void;
    handleError(e: XHR.XHRError): never;
    /**
     *
     * @summary Creates a calendarItem
     * @param body
     */
    createCalendarItem(body?: CalendarItem): Promise<CalendarItem>;
    /**
     * @summary Deletes a calendarItem by id.
     *
     * @summary Deletes an calendarItem
     * @param calendarItemId the id of calendarItem to delete.
     * @return a Promise that will resolve in the DocIdentifier of the deleted calendarItem.
     */
    deleteCalendarItem(calendarItemId: string): Promise<DocIdentifier>;
    /**
     * @summary Deletes a batch of calendarItems by id.
     *
     * @summary Deletes calendarItems
     * @param body a ListOfIds containing the ids of the calendarItems to delete.
     * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted calendarItems.
     */
    deleteCalendarItems(body?: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @deprecated use {@link findCalendarItemIdsByDataOwnerPatientStartTime} instead.
     * @summary Find CalendarItems by hcparty and patient
     * @param body
     * @param hcPartyId
     */
    findCalendarItemsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array<string>): Promise<Array<CalendarItem>>;
    /**
     * @deprecated use {@link findCalendarItemIdsByDataOwnerPatientStartTime} instead.
     * @summary Find CalendarItems by hcparty and patient
     * @param hcPartyId
     * @param secretFKeys
     */
    findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise<Array<CalendarItem>>;
    /**
     * @deprecated use {@link findCalendarItemsByRecurrenceIdWithPagination} instead.
     *
     * @summary Find CalendarItems by recurrenceId
     * @param recurrenceId
     */
    findCalendarItemsByRecurrenceId(recurrenceId: string): Promise<Array<CalendarItem>>;
    /**
     *
     * @summary Find CalendarItems by recurrenceId
     * @param recurrenceId the recurrence id.
     * @param startKey the startKey provided by the previous page or undefined for the first page.
     * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.
     * @param limit the number of elements that the page should contain.
     * @return a promise that will resolve in a PaginatedListAccessLog.
     */
    findCalendarItemsByRecurrenceIdWithPagination(recurrenceId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListCalendarItem>;
    /**
     *
     * @summary Gets a calendarItem
     * @param calendarItemId
     */
    getCalendarItem(calendarItemId: string): Promise<CalendarItem>;
    /**
     * @deprecated use {@link getCalendarItemsWithPagination} instead
     *
     * @summary Gets all calendarItems
     */
    getCalendarItems(): Promise<Array<CalendarItem>>;
    /**
     * @summary gets all Calendar Items with pagination.
     *
     * @param startDocumentId the startDocumentId provided by the previous page or null if it's the first page.
     * @param limit the size of the page
     * @return a promise that will resolve in a PaginatedListCalendarItem.
     */
    getCalendarItemsWithPagination(startDocumentId?: string, limit?: number): Promise<PaginatedListCalendarItem>;
    /**
     *
     * @summary Get CalendarItems by Period and HcPartyId
     * @param startDate
     * @param endDate
     * @param hcPartyId
     */
    getCalendarItemsByPeriodAndHcPartyId(startDate: number, endDate: number, hcPartyId: string): Promise<Array<CalendarItem>>;
    /**
     *
     * @summary Get calendarItems by id
     * @param body
     */
    getCalendarItemsWithIds(body?: ListOfIds): Promise<Array<CalendarItem>>;
    /**
     *
     * @summary Get CalendarItems by Period and AgendaId
     * @param startDate
     * @param endDate
     * @param agendaId
     */
    getCalendarsByPeriodAndAgendaId(startDate: number, endDate: number, agendaId: string): Promise<Array<CalendarItem>>;
    /**
     *
     * @summary Modifies an calendarItem
     * @param body
     */
    modifyCalendarItem(body?: CalendarItem): Promise<CalendarItem>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareCalendarItems(request: BulkShareOrUpdateMetadataParams): Promise<EntityBulkShareResult<CalendarItem>[]>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareCalendarItemsMinimal(request: BulkShareOrUpdateMetadataParams): Promise<MinimalEntityBulkShareResult[]>;
    /**
     * @summary List CalendarItem ids by data owner and a set of secret foreign key. The ids will be sorted by CalendarItem startTime, in ascending or descending
     * order according to the specified parameter value.
     *
     * @param dataOwnerId the data owner id.
     * @param secretFKeys an array of secret foreign keys.
     * @param startDate a timestamp in epoch milliseconds. If undefined, all the calendar item ids since the beginning of time will be returned.
     * @param endDate a timestamp in epoch milliseconds. If undefined, all the calendar item ids until the end of time will be returned.
     * @param descending whether to return the ids ordered in ascending or descending order by CalendarItem startTime
     * @return a promise that will resolve in an Array of CalendarItem ids.
     */
    findCalendarItemIdsByDataOwnerPatientStartTime(dataOwnerId: string, secretFKeys: string[], startDate?: number, endDate?: number, descending?: boolean): Promise<string[]>;
}
