/**
 * 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 { AccessLog } from '../model/AccessLog';
import { DocIdentifier } from '../model/DocIdentifier';
import { PaginatedListAccessLog } from '../model/PaginatedListAccessLog';
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';
import { AbstractFilterAccessLog } from '../model/AbstractFilterAccessLog';
import { TimingInfo } from '../model/TimingInfo';
export declare class IccAccesslogApi {
    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 Create an access log
     * @param body
     */
    createAccessLog(body?: AccessLog): Promise<AccessLog>;
    /**
     * @summary Deletes a batch of access logs.
     *
     * @param accessLogIds a ListOfIds containing the ids of the access logs to delete.
     * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted access logs.
     */
    deleteAccessLogs(accessLogIds: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @summary Deletes a single access log by id.
     *
     * @param accessLogId the id of the access log.
     */
    deleteAccessLog(accessLogId: string): Promise<DocIdentifier>;
    /**
     * @deprecated use {@link findAccessLogIdsByDataOwnerPatientDate} instead.
     * @summary List access logs found by Healthcare Party and secret foreign keyelementIds.
     * @param body
     * @param hcPartyId
     */
    findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array<string>): Promise<Array<AccessLog>>;
    /**
     * @summary List AccessLog ids by data owner and a set of secret foreign key. The ids will be sorted by AccessLog date, 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 access log ids since the beginning of time will be returned.
     * @param endDate a timestamp in epoch milliseconds. If undefined, all the access log ids until the end of time will be returned.
     * @param descending whether to return the ids ordered in ascending or descending order by AccessLog date
     * @return a promise that will resolve in an Array of AccessLog ids.
     */
    findAccessLogIdsByDataOwnerPatientDate(dataOwnerId: string, secretFKeys: string[], startDate?: number, endDate?: number, descending?: boolean): Promise<string[]>;
    /**
     * @deprecated use {@link findAccessLogIdsByDataOwnerPatientDate} instead
     * @summary List access logs found by Healthcare Party and secret foreign keyelementIds.
     * @param hcPartyId
     * @param secretFKeys
     */
    findAccessLogsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise<Array<AccessLog>>;
    /**
     *
     * @summary Get paginated list of Access Logs
     * @param userId A User ID
     * @param accessType The type of access (COMPUTER or USER)
     * @param startDate The start search epoch
     * @param startKey The start key for pagination
     * @param startDocumentId A patient document ID
     * @param limit Number of rows
     * @param descending Descending order
     */
    findByUserAfterDate(userId: string, accessType?: string, startDate?: number, startKey?: string, startDocumentId?: string, limit?: number, descending?: boolean): Promise<PaginatedListAccessLog>;
    /**
     * @summary Get an access log
     * @param accessLogId
     */
    getAccessLog(accessLogId: string): Promise<AccessLog>;
    /**
     * @summary Get a batch of Access Logs by their ids.
     * @param ids an array of ids.
     */
    getAccessLogs(ids: ListOfIds): Promise<AccessLog[]>;
    /**
     *
     * @summary Get paginated list of Access Logs
     * @param fromEpoch
     * @param toEpoch
     * @param startKey
     * @param startDocumentId
     * @param limit
     * @param descending
     */
    listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number, descending?: boolean): Promise<PaginatedListAccessLog>;
    /**
     *
     * @summary Get paginated list of Access Logs for a group
     * @param groupId
     * @param fromEpoch
     * @param toEpoch
     * @param startKey
     * @param startDocumentId
     * @param limit
     */
    listAccessLogsInGroup(groupId: string, fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): Promise<PaginatedListAccessLog>;
    /**
     *
     * @summary Modifies an access log
     * @param body
     */
    modifyAccessLog(body?: AccessLog): Promise<AccessLog>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareAccessLogs(request: BulkShareOrUpdateMetadataParams): Promise<EntityBulkShareResult<AccessLog>[]>;
    /**
     *
     * @summary Get ids of access logs matching the provided filter.
     * @param body an AbstractFilterAccessLog.
     * @param collectTiming if true, include server-side filter timing information in the response
     */
    matchAccessLogsBy(body: AbstractFilterAccessLog, collectTiming?: false): Promise<Array<string>>;
    matchAccessLogsBy(body: AbstractFilterAccessLog, collectTiming?: true): Promise<Array<string> & TimingInfo>;
    /**
     *
     * @summary Get ids of access logs matching the provided filter in a specific group.
     * @param groupId the id of the group where to perform the search.
     * @param body an AbstractFilterAccessLog.
     * @param collectTiming if true, include server-side filter timing information in the response
     */
    matchAccessLogsInGroupBy(groupId: string, body: AbstractFilterAccessLog, collectTiming?: false): Promise<Array<string>>;
    matchAccessLogsInGroupBy(groupId: string, body: AbstractFilterAccessLog, collectTiming?: true): Promise<Array<string> & TimingInfo>;
}
