import { AuthConfig } from '@sasjs/utils/types';
import { Job, PollOptions } from '../..';
import { RequestClient } from '../../request/RequestClient';
import { WriteStream, JobSessionManager } from '../../types';
export declare enum JobState {
    Completed = "completed",
    Running = "running",
    Pending = "pending",
    Unavailable = "unavailable",
    NoState = "",
    Failed = "failed",
    Error = "error"
}
/**
 * Polls job status using default or provided poll options.
 * @param requestClient - the pre-configured HTTP request client.
 * @param postedJob - the relative or absolute path to the job.
 * @param debug - sets the _debug flag in the job arguments.
 * @param authConfig - an access token, refresh token, client and secret for an authorized user.
 * @param pollOptions - an object containing maxPollCount, pollInterval, streamLog and logFolderPath. It will override the first default poll options in poll strategy if provided.
 * Example pollOptions:
 * {
 *    maxPollCount: 200,
 *    pollInterval: 300,
 *    streamLog: true, // optional, equals to false by default.
 *    pollStrategy?: // optional array of poll options that should be applied after 'maxPollCount' of the provided poll options is reached. If not provided the default (see example below) poll strategy will be used.
 * }
 * Example pollStrategy (values used from default poll strategy):
 * [
 *    { maxPollCount: 200, pollInterval: 300 }, // approximately ~2 mins (including time to get response (~300ms))
 *    { maxPollCount: 300, pollInterval: 3000 }, // approximately ~5.5 mins (including time to get response (~300ms))
 *    { maxPollCount: 500, pollInterval: 30000 }, // approximately ~50.5 mins (including time to get response (~300ms))
 *    { maxPollCount: 3400, pollInterval: 60000 } // approximately ~3015 mins (~125 hours) (including time to get response (~300ms))
 * ]
 * @param jobSessionManager - job session object containing session object and an instance of Session Manager. Job session object is used to periodically (every 10th job state poll) check parent session state.
 * @returns - a promise which resolves with a job state
 */
export declare function pollJobState(requestClient: RequestClient, postedJob: Job, debug: boolean, authConfig?: AuthConfig, pollOptions?: PollOptions, jobSessionManager?: JobSessionManager): Promise<JobState>;
/**
 * Polls job state.
 * @param requestClient - the pre-configured HTTP request client.
 * @param postedJob - the relative or absolute path to the job.
 * @param currentState - current job state.
 * @param debug - sets the _debug flag in the job arguments.
 * @param pollCount - current poll count.
 * @param pollOptions - an object containing maxPollCount, pollInterval, streamLog and logFolderPath.
 * @param authConfig - an access token, refresh token, client and secret for an authorized user.
 * @param streamLog - indicates if job log should be streamed.
 * @param logStream - job log stream.
 * @param jobSessionManager - job session object containing session object and an instance of Session Manager. Job session object is used to periodically (every 10th job state poll) check parent session state. Session state is considered healthy if it is equal to 'running' or 'idle'.
 * @returns - a promise which resolves with a job state
 */
export declare const doPoll: (requestClient: RequestClient, postedJob: Job, currentState: JobState, debug: boolean, pollCount: number, pollOptions: PollOptions, authConfig?: AuthConfig, streamLog?: boolean, logStream?: WriteStream, jobSessionManager?: JobSessionManager) => Promise<{
    state: JobState;
    pollCount: number;
}>;
