/**
 * ProjectManager API for TypeScript
 *
 * (c) ProjectManager.com, Inc.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @author     ProjectManager.com <support@projectmanager.com>
 * @copyright  ProjectManager.com, Inc.
 * @link       https://github.com/projectmgr/projectmanager-sdk-typescript
 */
import { ProjectManagerClient } from "../index.js";
import { AstroResult } from "../index.js";
import { RecurringTaskChangeSetDetailsChangeSetStatusDto } from "../index.js";
import { WeeklyRecurringSettingsDto } from "../index.js";
import { MonthlyRecurringSettingsDto } from "../index.js";
import { DailyRecurringSettingsDto } from "../index.js";
import { YearlyRecurringSettingsDto } from "../index.js";
import { ChangeSetStatusDto } from "../index.js";
import { RecurringTaskValidationResultDto } from "../index.js";
import { RecurringTaskSettingsDto } from "../index.js";
import { RecurringTaskChangeSetDetails } from "../index.js";
export declare class TaskRecurrencyClient {
    private readonly client;
    /**
     * Internal constructor for this client library
     */
    constructor(client: ProjectManagerClient);
    /**
     * Changes an existing Task into a Recurring Task, so that it will recur regularly given the specified rules.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param body The weekly recurring settings
     */
    createWeeklyRecurringTasks(taskId: string, body: WeeklyRecurringSettingsDto): Promise<AstroResult<RecurringTaskChangeSetDetailsChangeSetStatusDto>>;
    /**
     * Changes an existing Task into a Recurring Task, so that it will recur regularly given the specified rules.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param body The monthly recurring settings
     */
    createMonthlyRecurringTasks(taskId: string, body: MonthlyRecurringSettingsDto): Promise<AstroResult<RecurringTaskChangeSetDetailsChangeSetStatusDto>>;
    /**
     * Changes an existing Task into a Recurring Task, so that it will recur regularly given the specified rules.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param body The daily recurring settings
     */
    createDailyRecurringTasks(taskId: string, body: DailyRecurringSettingsDto): Promise<AstroResult<RecurringTaskChangeSetDetailsChangeSetStatusDto>>;
    /**
     * Changes an existing Task into a Recurring Task, so that it will recur regularly given the specified rules.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param body The yearly recurring settings
     */
    createYearlyRecurringTasks(taskId: string, body: YearlyRecurringSettingsDto): Promise<AstroResult<RecurringTaskChangeSetDetailsChangeSetStatusDto>>;
    /**
     * Removes one or more instances of a Recurring Task based on the `option` you specify: `this` means to remove
     * a single instance, `all` means to remove all instances, or `future` means to remove all future instances of
     * the Recurring Task.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param option Specify `this`, `all`, or `future` to indicate which task recurrnces to delete.
     */
    deleteRecurringTasks(taskId: string, option: string): Promise<AstroResult<ChangeSetStatusDto>>;
    /**
     * Reviews potential updates to a Recurring Task and report back on the list of changes that would occur if this
     * Recurring Task was updated with these settings.
     *
     * When making changes to a Recurring Task, you may want to investigate the consequences of your changes first
     * before finalizing the changes.  You can use the Validate Recurring Tasks API to examine these changes.  When
     * you are happy with the changes, call Update Recurring Tasks to complete them.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param body The new settings
     */
    validateRecurringTasks(taskId: string, body: RecurringTaskSettingsDto): Promise<AstroResult<RecurringTaskValidationResultDto>>;
    /**
     * Updates the settings for a Recurring Task and re-generates occurrences of the Recurring Task from the new rules.
     *
     * When making changes to a Recurring Task, you may want to investigate the consequences of your changes first
     * before finalizing the changes.  You can use the Validate Recurring Tasks API to examine these changes.  When
     * you are happy with the changes, call Update Recurring Tasks to complete them.
     *
     * A Recurring Task is one that must be completed on a specific regular frequency, such as Daily, Weekly, Monthly,
     * or Yearly.  To create a Recurring Task, you must first create a regular Task with the necessary information,
     * then call one of the Create Recurring Task APIs.  To remove an instance of a Recurring Task, call Delete
     * Recurring Task and specify one or more instances of the Recurring Task.
     *
     * @param taskId The unique identifier of the Task
     * @param body The new settings
     */
    updateRecurringTasks(taskId: string, body: RecurringTaskSettingsDto): Promise<AstroResult<RecurringTaskChangeSetDetails>>;
}
