import { IHubSchedule, IHubScheduleResponse } from "../core/types/IHubSchedule";
import type { IUserRequestOptions } from "@esri/arcgis-rest-request";
import { IHubRequestOptions } from "../hub-types";
import { IHubEditableContent } from "../core/types/IHubEditableContent";
import { AccessLevel } from "../core/types/types";
/**
 * Get the schedule for an item. If no schedule is found, returns null.
 * @param itemId The item to get the schedule for
 * @param requestOptions The request options needed to get the HubApiUrl
 * @returns The schedule for the item OR null if no schedule is set
 */
export declare const getSchedule: (itemId: string, requestOptions: IUserRequestOptions) => Promise<IHubScheduleResponse>;
/**
 * Set the schedule for an item
 * @param itemId The item to set the schedule for
 * @param schedule The schedule to set
 * @param requestOptions The request options needed to get the HubApiUrl
 */
export declare const setSchedule: (itemId: string, schedule: IHubSchedule, requestOptions: IUserRequestOptions) => Promise<IHubScheduleResponse>;
/**
 * Delete the schedule for an item
 * @param itemId The item to delete the schedule for
 * @param requestOptions The request options needed to get the HubApiUrl
 */
export declare const deleteSchedule: (itemId: string, requestOptions: IUserRequestOptions) => Promise<IHubScheduleResponse>;
/**
 * Checks if the content schedule should be updated and updates it if necessary
 * @param content The content to check and update the schedule for (should include any new schedule information)
 * @param requestOptions The request options needed to get the HubApiUrl
 */
export declare const maybeUpdateSchedule: (content: IHubEditableContent, requestOptions: IUserRequestOptions) => Promise<IHubScheduleResponse>;
/**
 * To be used before calling any of the schedule functions in order to prevent fetch
 * requests to scheduler API from portal/enterprise
 *
 * Note: After a discussion w/ Dave, we decided this check is preferred to passing the context
 * into functions that would need checkPermission
 * @param requestOptions The request options needed to get the HubApiUrl
 * @returns Whether or not the scheduling feature is available
 */
export declare const isDownloadSchedulingAvailable: (requestOptions: IHubRequestOptions, access: AccessLevel) => boolean;
