import { ApiClient } from '../../client/index.js';
import { AddDeliverableParams, CloseDeliverableParams, CreateProjectParams, GetDeliverableParams, GetProjectParams, ListDeliverablesParams, UploadProofParams } from './requests.js';
import { AddDeliverableResult, CreateProjectResult, GetDeliverableResult, GetProjectResult, ListDeliverablesResult, GetSupportingFilesResult, UploadProofResult } from './responses.js';

declare class WorkflowApi {
    private _client;
    /**
     * Create an instance of the WorkflowApi class
     *
     * Workflow objects represent projects and deliverables stored in the Acquia Workflow system. The API allows you to retrieve, create, delete, and close deliverables and projects.
     *
     * @param client Provide an instance of ApiClient.
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects}
     */
    constructor(client: ApiClient);
    /**
     * Add a deliverable to a project
     * @param params Information about the request
     * @returns Promise containing information about the added deliverable
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deliverablesAddToProject}
     */
    addDeliverable(params: AddDeliverableParams): Promise<AddDeliverableResult>;
    /**
     * Close the deliverable. Optionally, provide a `filename` and `upload_profile` to move the deliverable over to Assets
     * @param params Information about the request
     * @returns Promise containing no information
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deliverablesCloseForProject}
     */
    closeDeliverable(params: CloseDeliverableParams): Promise<void>;
    /**
     * Create a new project
     * @param params Information about the request
     * @returns Promise containing the new project's ID
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/createProject}
     */
    createProject(params: CreateProjectParams): Promise<CreateProjectResult>;
    /**
     * Delete a deliverable
     * @param project_id Project ID
     * @param deliverable_id Deliverable ID
     * @returns Promise containing no information
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deliverablesDeleteForProject}
     */
    deleteDeliverable(project_id: string, deliverable_id: string): Promise<void>;
    /**
     * Delete a project
     * @param project_id Project ID
     * @returns Promise containing no information
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deleteProject}
     */
    deleteProject(project_id: string): Promise<void>;
    /**
     * Retrieve information about a deliverable
     * @param params Information about the request
     * @returns Promise containing information about the deliverable
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deliverablesRetrieveForProjectById}
     */
    getDeliverable(params: GetDeliverableParams): Promise<GetDeliverableResult>;
    /**
     * Retrieve information about a project
     * @param params Information about the request
     * @returns Promise containing information about the deliverable
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/retrieveProjectById}
     */
    getProject(params: GetProjectParams): Promise<GetProjectResult>;
    /**
     * Retrieve all deliverables for a project
     * @param params Information about the request
     * @returns Promise containing a list of deliverables
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deliverablesRetrieveForProject}
     */
    listDeliverables(params: ListDeliverablesParams): Promise<ListDeliverablesResult>;
    /**
     * Retrieve all supporting files for a project
     * @param project_id Project ID
     * @returns Promise containing a list of supporting files
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/retrieveProjectSupportFiles}
     */
    listSupportingFiles(project_id: string): Promise<GetSupportingFilesResult>;
    /**
     * Upload proof to a deliverable
     * @param params Information about the request
     * @returns Promise containing information about the deliverable
     * @see {@link https://docs.acquia.com/acquia-dam/api-v2#tag/Workflow-App-Projects/operation/deliverablesUploadProof}
     */
    uploadProof(params: UploadProofParams): Promise<UploadProofResult>;
}

export { WorkflowApi };
