/**
 * Schedule ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/schedule/wsdl/schedule.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { Capabilities, CreateSchedule, CreateScheduleResponse, CreateSpecialDayGroup, CreateSpecialDayGroupResponse, DeleteSchedule, DeleteSpecialDayGroup, GetScheduleInfo, GetScheduleInfoList, GetScheduleInfoListResponse, GetScheduleInfoResponse, GetScheduleList, GetScheduleListResponse, GetSchedules, GetSchedulesResponse, GetScheduleState, GetSpecialDayGroupInfo, GetSpecialDayGroupInfoList, GetSpecialDayGroupInfoListResponse, GetSpecialDayGroupInfoResponse, GetSpecialDayGroupList, GetSpecialDayGroupListResponse, GetSpecialDayGroups, GetSpecialDayGroupsResponse, ModifySchedule, ModifySpecialDayGroup, ScheduleState, SetSchedule, SetSpecialDayGroup } from './interfaces/schedule';
/**
 * Schedule service
 * @example
 * ```ts
 *  const list = await cam.schedule.getScheduleInfoList();
 *  const token = list.scheduleInfo![0].token;
 *  console.log((await cam.schedule.getScheduleState({ token })).active);
 * ```
 */
export default class Schedule extends Service {
    constructor(onvif: Onvif);
    private static timePeriodToBuild;
    private static specialDaysScheduleToBuild;
    private static scheduleInfoToBuild;
    private static scheduleToBuild;
    private static specialDayGroupInfoToBuild;
    private static specialDayGroupToBuild;
    /**
     * Returns the capabilities of the schedule service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Returns the current state of a schedule.
     * @param options
     */
    getScheduleState({ token }: GetScheduleState): Promise<ScheduleState>;
    /**
     * Returns schedule info items for the requested tokens.
     * @param options
     */
    getScheduleInfo({ token }: GetScheduleInfo): Promise<GetScheduleInfoResponse>;
    /**
     * Returns a list of schedule info items.
     * @param options
     */
    getScheduleInfoList(options?: GetScheduleInfoList): Promise<GetScheduleInfoListResponse>;
    /**
     * Returns schedule items for the requested tokens.
     * @param options
     */
    getSchedules({ token }: GetSchedules): Promise<GetSchedulesResponse>;
    /**
     * Returns a list of schedule items.
     * @param options
     */
    getScheduleList(options?: GetScheduleList): Promise<GetScheduleListResponse>;
    /**
     * Creates a new schedule.
     * @param options
     */
    createSchedule({ schedule }: CreateSchedule): Promise<CreateScheduleResponse['token']>;
    /**
     * Creates or replaces a schedule (requires ClientSuppliedTokenSupported).
     * @param options
     */
    setSchedule({ schedule }: SetSchedule): Promise<void>;
    /**
     * Modifies an existing schedule.
     * @param options
     */
    modifySchedule({ schedule }: ModifySchedule): Promise<void>;
    /**
     * Deletes a schedule.
     * @param options
     */
    deleteSchedule({ token }: DeleteSchedule): Promise<void>;
    /**
     * Returns special day group info items for the requested tokens.
     * @param options
     */
    getSpecialDayGroupInfo({ token }: GetSpecialDayGroupInfo): Promise<GetSpecialDayGroupInfoResponse>;
    /**
     * Returns a list of special day group info items.
     * @param options
     */
    getSpecialDayGroupInfoList(options?: GetSpecialDayGroupInfoList): Promise<GetSpecialDayGroupInfoListResponse>;
    /**
     * Returns special day group items for the requested tokens.
     * @param options
     */
    getSpecialDayGroups({ token }: GetSpecialDayGroups): Promise<GetSpecialDayGroupsResponse>;
    /**
     * Returns a list of special day group items.
     * @param options
     */
    getSpecialDayGroupList(options?: GetSpecialDayGroupList): Promise<GetSpecialDayGroupListResponse>;
    /**
     * Creates a new special day group.
     * @param options
     */
    createSpecialDayGroup({ specialDayGroup, }: CreateSpecialDayGroup): Promise<CreateSpecialDayGroupResponse['token']>;
    /**
     * Creates or replaces a special day group (requires ClientSuppliedTokenSupported).
     * @param options
     */
    setSpecialDayGroup({ specialDayGroup }: SetSpecialDayGroup): Promise<void>;
    /**
     * Modifies an existing special day group.
     * @param options
     */
    modifySpecialDayGroup({ specialDayGroup }: ModifySpecialDayGroup): Promise<void>;
    /**
     * Deletes a special day group.
     * @param options
     */
    deleteSpecialDayGroup({ token }: DeleteSpecialDayGroup): Promise<void>;
}
