/**
 * 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 { DocIdentifier } from '../model/DocIdentifier';
import { TimeTable } from '../model/TimeTable';
import { AuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider';
import { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult';
import { ListOfIds } from '../model/ListOfIds';
import { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams';
export declare class IccTimeTableApi {
    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 timeTable
     * @param body
     */
    createTimeTable(body?: TimeTable): Promise<TimeTable>;
    /**
     * @summary Deletes a batch of timeTables.
     *
     * @param timeTableIds a ListOfIds containing the ids of the timeTables to delete.
     * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted timeTables.
     */
    deleteTimeTables(timeTableIds: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @summary Deletes a single timeTable by id.
     *
     * @param timeTableId the id of the timeTable to delete.
     * @return a Promise that will resolve in the DocIdentifier of the deleted timeTable.
     */
    deleteTimeTable(timeTableId: string): Promise<DocIdentifier>;
    /**
     *
     * @summary Gets a timeTable
     * @param timeTableId
     */
    getTimeTable(timeTableId: string): Promise<TimeTable>;
    /**
     *
     * @summary Get TimeTables by AgendaId
     * @param agendaId
     */
    getTimeTablesByAgendaId(agendaId: string): Promise<Array<TimeTable>>;
    /**
     *
     * @summary Get TimeTables by Period and AgendaId
     * @param startDate
     * @param endDate
     * @param agendaId
     */
    getTimeTablesByPeriodAndAgendaId(startDate: number, endDate: number, agendaId: string): Promise<Array<TimeTable>>;
    /**
     *
     * @summary Modifies an timeTable
     * @param body
     */
    modifyTimeTable(body?: TimeTable): Promise<TimeTable>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareTimeTable(request: BulkShareOrUpdateMetadataParams): Promise<EntityBulkShareResult<TimeTable>[]>;
}
