import { Workflows } from '../schemas/workflows';
import { Outcome } from '../schemas/outcome';
import { Authentication } from '../networking/auth';
import { NetworkSession } from '../networking/network';
import { CancellationToken } from '../internal/utils';
import { SerializedData } from '../serialization/json';
export declare class GetWorkflowsOptionals {
    readonly headers: GetWorkflowsHeaders;
    readonly cancellationToken?: CancellationToken;
    constructor(fields: Omit<GetWorkflowsOptionals, 'headers' | 'cancellationToken'> & Partial<Pick<GetWorkflowsOptionals, 'headers' | 'cancellationToken'>>);
}
export interface GetWorkflowsOptionalsInput {
    readonly headers?: GetWorkflowsHeaders;
    readonly cancellationToken?: CancellationToken;
}
export declare class StartWorkflowOptionals {
    readonly headers: StartWorkflowHeaders;
    readonly cancellationToken?: CancellationToken;
    constructor(fields: Omit<StartWorkflowOptionals, 'headers' | 'cancellationToken'> & Partial<Pick<StartWorkflowOptionals, 'headers' | 'cancellationToken'>>);
}
export interface StartWorkflowOptionalsInput {
    readonly headers?: StartWorkflowHeaders;
    readonly cancellationToken?: CancellationToken;
}
export interface GetWorkflowsQueryParams {
    /**
     * The unique identifier that represent a folder.
     *
     * The ID for any folder can be determined
     * by visiting this folder in the web application
     * and copying the ID from the URL. For example,
     * for the URL `https://*.app.box.com/folder/123`
     * the `folder_id` is `123`.
     *
     * The root folder of a Box account is
     * always represented by the ID `0`. */
    readonly folderId: string;
    /**
     * Type of trigger to search for. */
    readonly triggerType?: string;
    /**
     * The maximum number of items to return per page. */
    readonly limit?: number;
    /**
     * Defines the position marker at which to begin returning results. This is
     * used when paginating using marker-based pagination.
     *
     * This requires `usemarker` to be set to `true`. */
    readonly marker?: string;
}
export declare class GetWorkflowsHeaders {
    /**
     * Extra headers that will be included in the HTTP request. */
    readonly extraHeaders?: {
        readonly [key: string]: undefined | string;
    };
    constructor(fields: Omit<GetWorkflowsHeaders, 'extraHeaders'> & Partial<Pick<GetWorkflowsHeaders, 'extraHeaders'>>);
}
export interface GetWorkflowsHeadersInput {
    /**
     * Extra headers that will be included in the HTTP request. */
    readonly extraHeaders?: {
        readonly [key: string]: undefined | string;
    };
}
export type StartWorkflowRequestBodyTypeField = 'workflow_parameters';
export interface StartWorkflowRequestBodyFlowField {
    /**
     * The type of the flow object. */
    readonly type?: string;
    /**
     * The id of the flow. */
    readonly id?: string;
    readonly rawData?: SerializedData;
}
export type StartWorkflowRequestBodyFilesTypeField = 'file';
export interface StartWorkflowRequestBodyFilesField {
    /**
     * The type of the file object. */
    readonly type?: StartWorkflowRequestBodyFilesTypeField;
    /**
     * The id of the file. */
    readonly id?: string;
    readonly rawData?: SerializedData;
}
export type StartWorkflowRequestBodyFolderTypeField = 'folder';
export interface StartWorkflowRequestBodyFolderField {
    /**
     * The type of the folder object. */
    readonly type?: StartWorkflowRequestBodyFolderTypeField;
    /**
     * The id of the folder. */
    readonly id?: string;
    readonly rawData?: SerializedData;
}
export interface StartWorkflowRequestBody {
    /**
     * The type of the parameters object. */
    readonly type?: StartWorkflowRequestBodyTypeField;
    /**
     * The flow that will be triggered. */
    readonly flow: StartWorkflowRequestBodyFlowField;
    /**
     * The array of files for which the workflow should start. All files
     * must be in the workflow's configured folder. */
    readonly files: readonly StartWorkflowRequestBodyFilesField[];
    /**
     * The folder object for which the workflow is configured. */
    readonly folder: StartWorkflowRequestBodyFolderField;
    /**
     * A configurable outcome the workflow should complete. */
    readonly outcomes?: readonly Outcome[];
    readonly rawData?: SerializedData;
}
export declare class StartWorkflowHeaders {
    /**
     * Extra headers that will be included in the HTTP request. */
    readonly extraHeaders?: {
        readonly [key: string]: undefined | string;
    };
    constructor(fields: Omit<StartWorkflowHeaders, 'extraHeaders'> & Partial<Pick<StartWorkflowHeaders, 'extraHeaders'>>);
}
export interface StartWorkflowHeadersInput {
    /**
     * Extra headers that will be included in the HTTP request. */
    readonly extraHeaders?: {
        readonly [key: string]: undefined | string;
    };
}
export declare class WorkflowsManager {
    readonly auth?: Authentication;
    readonly networkSession: NetworkSession;
    constructor(fields: Omit<WorkflowsManager, 'networkSession' | 'getWorkflows' | 'startWorkflow'> & Partial<Pick<WorkflowsManager, 'networkSession'>>);
    /**
     * Returns list of workflows that act on a given `folder ID`, and
     * have a flow with a trigger type of `WORKFLOW_MANUAL_START`.
     *
     * You application must be authorized to use the `Manage Box Relay` application
     * scope within the developer console in to use this endpoint.
     * @param {GetWorkflowsQueryParams} queryParams Query parameters of getWorkflows method
     * @param {GetWorkflowsOptionalsInput} optionalsInput
     * @returns {Promise<Workflows>}
     */
    getWorkflows(queryParams: GetWorkflowsQueryParams, optionalsInput?: GetWorkflowsOptionalsInput): Promise<Workflows>;
    /**
       * Initiates a flow with a trigger type of `WORKFLOW_MANUAL_START`.
       *
       * You application must be authorized to use the `Manage Box Relay` application
       * scope within the developer console.
       * @param {string} workflowId The ID of the workflow.
      Example: "12345"
       * @param {StartWorkflowRequestBody} requestBody Request body of startWorkflow method
       * @param {StartWorkflowOptionalsInput} optionalsInput
       * @returns {Promise<undefined>}
       */
    startWorkflow(workflowId: string, requestBody: StartWorkflowRequestBody, optionalsInput?: StartWorkflowOptionalsInput): Promise<undefined>;
}
export interface WorkflowsManagerInput {
    readonly auth?: Authentication;
    readonly networkSession?: NetworkSession;
}
export declare function serializeStartWorkflowRequestBodyTypeField(val: StartWorkflowRequestBodyTypeField): SerializedData;
export declare function deserializeStartWorkflowRequestBodyTypeField(val: SerializedData): StartWorkflowRequestBodyTypeField;
export declare function serializeStartWorkflowRequestBodyFlowField(val: StartWorkflowRequestBodyFlowField): SerializedData;
export declare function deserializeStartWorkflowRequestBodyFlowField(val: SerializedData): StartWorkflowRequestBodyFlowField;
export declare function serializeStartWorkflowRequestBodyFilesTypeField(val: StartWorkflowRequestBodyFilesTypeField): SerializedData;
export declare function deserializeStartWorkflowRequestBodyFilesTypeField(val: SerializedData): StartWorkflowRequestBodyFilesTypeField;
export declare function serializeStartWorkflowRequestBodyFilesField(val: StartWorkflowRequestBodyFilesField): SerializedData;
export declare function deserializeStartWorkflowRequestBodyFilesField(val: SerializedData): StartWorkflowRequestBodyFilesField;
export declare function serializeStartWorkflowRequestBodyFolderTypeField(val: StartWorkflowRequestBodyFolderTypeField): SerializedData;
export declare function deserializeStartWorkflowRequestBodyFolderTypeField(val: SerializedData): StartWorkflowRequestBodyFolderTypeField;
export declare function serializeStartWorkflowRequestBodyFolderField(val: StartWorkflowRequestBodyFolderField): SerializedData;
export declare function deserializeStartWorkflowRequestBodyFolderField(val: SerializedData): StartWorkflowRequestBodyFolderField;
export declare function serializeStartWorkflowRequestBody(val: StartWorkflowRequestBody): SerializedData;
export declare function deserializeStartWorkflowRequestBody(val: SerializedData): StartWorkflowRequestBody;
//# sourceMappingURL=workflows.d.ts.map