import { CrowdinApi, PaginationOptions, PatchRequest, ResponseList, ResponseObject } from '../core';
import { SourceStringsModel } from '../sourceStrings';
/**
 * Workflows are the sequences of steps that content in your project should go through (e.g. pre-translation, translation, proofreading).
 * You can use a default template or create the one that works best for you and assign it to the needed projects.
 *
 * Use API to get the list of workflow templates available in your organization and to check the details of a specific template.
 */
export declare class Workflows extends CrowdinApi {
    /**
     * @param projectId project identifier
     * @param options optional pagination parameters for the request
     * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.workflow-steps.getMany
     */
    listWorkflowSteps(projectId: number, options?: PaginationOptions): Promise<ResponseList<WorkflowModel.WorkflowStep>>;
    /**
     * @param projectId project identifier
     * @param limit maximum number of items to retrieve (default 25)
     * @param offset starting offset in the collection (default 0)
     * @deprecated optional parameters should be passed through an object
     * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.workflow-steps.getMany
     */
    listWorkflowSteps(projectId: number, limit?: number, offset?: number): Promise<ResponseList<WorkflowModel.WorkflowStep>>;
    /**
     * @param projectId project identifier
     * @param stepId workflow step identifier
     * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.workflow-steps.getMany
     */
    getWorkflowStep(projectId: number, stepId: number): Promise<ResponseObject<WorkflowModel.WorkflowStep>>;
    /**
     * @param projectId project identifier
     * @param stepId workflow step identifier
     * @param options optional parameters for the request
     * @see https://support.crowdin.com/developer/enterprise/api/v2/#tag/Workflows/operation/api.projects.workflow-steps.strings.getMany
     */
    listStringsOnTheWorkflowStep(projectId: number, stepId: number, options?: WorkflowModel.ListStringsOntheWorkflowStepOptions): Promise<ResponseList<SourceStringsModel.String>>;
    /**
     * @param options optional parameters for the request
     * @see https://support.crowdin.com/enterprise/api/#operation/api.workflow-templates.getMany
     */
    listWorkflowTemplates(options?: WorkflowModel.ListWorkflowTemplatesOptions): Promise<ResponseList<WorkflowModel.Workflow>>;
    /**
     * @param groupId group identifier
     * @param limit maximum number of items to retrieve (default 25)
     * @param offset starting offset in the collection (default 0)
     * @deprecated optional parameters should be passed through an object
     * @see https://support.crowdin.com/enterprise/api/#operation/api.workflow-templates.getMany
     */
    listWorkflowTemplates(groupId?: number, limit?: number, offset?: number): Promise<ResponseList<WorkflowModel.Workflow>>;
    /**
     * @param templateId workflow template identifier
     * @see https://support.crowdin.com/enterprise/api/#operation/api.workflow-templates.get
     */
    getWorkflowTemplateInfo(templateId: number): Promise<ResponseObject<WorkflowModel.Workflow>>;
    /**
     * @param projectId project identifier
     * @param stepId workflow step identifier
     * @param languageId language identifier
     * @param request request body
     * @internal
     * @see https://support.crowdin.com/developer/crowdin-apps-module-workflow-step-type/#api-methods
     */
    updateWorkflowStepStringStatus(projectId: number, stepId: number, languageId: string, request: PatchRequest[]): Promise<ResponseList<WorkflowModel.WorkflowStepStringStatus>>;
    /**
     * @param projectId project identifier
     * @param stepId workflow step identifier
     * @param languageId language identifier
     * @param options request options
     * @internal
     * @see https://support.crowdin.com/developer/crowdin-apps-module-workflow-step-type/#api-methods
     */
    getWorkflowStepStringStatus(projectId: number, stepId: number, languageId: string, options?: PaginationOptions): Promise<ResponseList<WorkflowModel.WorkflowStepStringStatus>>;
}
export declare namespace WorkflowModel {
    interface WorkflowStep {
        id: number;
        title: string;
        type: string;
        languages: string[];
        config: {
            assignees: {
                [language: string]: number[];
            };
        };
    }
    interface ListWorkflowTemplatesOptions extends PaginationOptions {
        groupId?: number;
    }
    interface ListStringsOntheWorkflowStepOptions extends PaginationOptions {
        languageIds?: string;
        orderBy?: string;
        status?: 'todo' | 'done' | 'pending' | 'incomplete' | 'need_review';
    }
    interface Workflow {
        id: number;
        title: string;
        description: string;
        groupId: number;
        isDefault: boolean;
        webUrl: string;
        steps: {
            id: number;
            languages: string[];
            assignees: number[];
            vendorId: number;
            config: {
                minRelevant: number;
                autoSubstitution: boolean;
            };
            mtId: number;
        }[];
    }
    interface WorkflowStepStringStatus {
        stringId: number;
        languageId: string;
        stepId: number;
        status: string;
        output: string;
    }
}
