import { ClientConfig } from '../client-config.model';
import { HttpService } from '../http/http-service';
import { OAuthService } from '../oauth/oauth.service';
import { Activity, UdfValue, UnifiedIdentifier } from './service-management.model';
export declare type BulkResponse<T> = {
    hasErrors: boolean;
    results: Array<T & Partial<{
        status: number;
        id: string;
        error: {
            type: string;
            title: string;
            detail: string;
        };
    }>>;
};
export declare class ActivityBulkAPI {
    private _config;
    private _http;
    private _auth;
    constructor(_config: Readonly<ClientConfig>, _http: Readonly<HttpService>, _auth: Readonly<OAuthService>);
    /**
     * Constructs the API URL for activity bulk operations.
     *
     * @param {string} path - Path to append to the base URL.
     * @returns {string} The complete API URL.
     * @see https://api.sap.com/api/service_management_ext/resource/Service_API_V2
     */
    getApiUrl(path?: string): string;
    /**
     * Cancels multiple activities in bulk.
     *
     * @param {Array} activities - Array of activity objects to cancel.
     * @param {UnifiedIdentifier | string} activities[].activityId - Activity identifier.
     * @param {UnifiedIdentifier | string} activities[].id - Alternative activity identifier.
     * @param {boolean} activities[].cancelServiceCallConfirmed - Whether service call cancellation is confirmed.
     * @param {string} activities[].cancellationReason - Reason for cancellation.
     * @param {UdfValue[]} activities[].udfValues - User-defined field values.
     * @param {object} params - Optional query parameters.
     * @param {string} params.fieldsMode - Fields mode: 'INCLUDE', 'EXCLUDE', or 'ADD'.
     * @param {string} params.fields - Comma-separated list of fields.
     * @returns {Promise<BulkResponse<{ newActivity: Activity }>>} A promise resolving to bulk operation response.
     */
    cancel(activities: Array<Partial<{
        activityId: UnifiedIdentifier | string;
        id: UnifiedIdentifier | string;
        cancelServiceCallConfirmed: boolean;
        cancellationReason: string;
        udfValues: UdfValue[];
    }>>, params?: Partial<{
        fieldsMode: 'INCLUDE' | 'EXCLUDE' | 'ADD';
        fields: string;
    }>): Promise<BulkResponse<{
        newActivity: Activity;
    }>>;
    /**
     * Duplicates multiple activities in bulk.
     *
     * @param {Array} activities - Array of activity objects to duplicate.
     * @param {UnifiedIdentifier | string} activities[].activityId - Activity identifier.
     * @param {UnifiedIdentifier | string} activities[].id - Alternative activity identifier.
     * @param {object} activities[].duplicateActivityRequest - Duplication request parameters.
     * @param {string} activities[].duplicateActivityRequest.crew - Crew identifier.
     * @param {string[]} activities[].duplicateActivityRequest.responsibles - Array of responsible persons.
     * @param {string} activities[].duplicateActivityRequest.startDateTime - Start date/time in ISO 8601 format.
     * @param {string} activities[].duplicateActivityRequest.unit - Unit identifier.
     * @param {UdfValue[]} activities[].duplicateActivityRequest.udfValues - User-defined field values.
     * @param {object} params - Optional query parameters.
     * @param {string} params.fieldsMode - Fields mode: 'INCLUDE', 'EXCLUDE', or 'ADD'.
     * @param {string} params.fields - Comma-separated list of fields.
     * @returns {Promise<BulkResponse<{ newActivity: Activity }>>} A promise resolving to bulk operation response.
     */
    duplicate(activities: Array<Partial<{
        activityId: UnifiedIdentifier | string;
        id: UnifiedIdentifier | string;
        duplicateActivityRequest: Partial<{
            crew: string;
            responsibles: string[];
            startDateTime: string;
            unit: string;
            udfValues: UdfValue[];
        }>;
    }>>, params?: Partial<{
        fieldsMode: 'INCLUDE' | 'EXCLUDE' | 'ADD';
        fields: string;
    }>): Promise<BulkResponse<{
        newActivity: Activity;
    }>>;
    /**
     * Plans multiple activities in bulk.
     *
     * @param {Array} activities - Array of activity objects to plan.
     * @param {UnifiedIdentifier | string} activities[].activityId - Activity identifier.
     * @param {UnifiedIdentifier | string} activities[].id - Alternative activity identifier.
     * @param {string} activities[].crew - Crew identifier.
     * @param {UnifiedIdentifier | string} activities[].technician - Technician identifier.
     * @param {string} activities[].startDateTime - Start date/time in ISO 8601 format.
     * @param {boolean} activities[].startDateTimeFixed - Whether start date/time is fixed.
     * @param {number} activities[].plannedDurationInMinutes - Planned duration in minutes.
     * @param {number} activities[].travelTimeFromInMinutes - Travel time from in minutes.
     * @param {number} activities[].travelTimeToInMinutes - Travel time to in minutes.
     * @param {string} activities[].endDateTime - End date/time in ISO 8601 format.
     * @param {boolean} activities[].endDateTimeFixed - Whether end date/time is fixed.
     * @param {UdfValue[]} activities[].udfValues - User-defined field values.
     * @param {object} params - Optional query parameters.
     * @param {string} params.fieldsMode - Fields mode: 'INCLUDE', 'EXCLUDE', or 'ADD'.
     * @param {string} params.fields - Comma-separated list of fields.
     * @returns {Promise<BulkResponse<{ newActivity: Activity }>>} A promise resolving to bulk operation response.
     */
    plan(activities: Array<Partial<{
        activityId: UnifiedIdentifier | string;
        id: UnifiedIdentifier | string;
        crew: string;
        technician: UnifiedIdentifier | string;
        startDateTime: string;
        startDateTimeFixed: boolean;
        plannedDurationInMinutes: number;
        travelTimeFromInMinutes: number;
        travelTimeToInMinutes: number;
        endDateTime: string;
        endDateTimeFixed: boolean;
        udfValues: UdfValue[];
    }>>, params?: Partial<{
        fieldsMode: 'INCLUDE' | 'EXCLUDE' | 'ADD';
        fields: string;
    }>): Promise<BulkResponse<{
        newActivity: Activity;
    }>>;
}
