import { CrowdinApi, PaginationOptions, PatchRequest, ResponseList, ResponseObject } from '../core';
import { ScreenshotsModel } from '../screenshots';
import { SourceStringsModel } from '../sourceStrings';
export declare class Labels extends CrowdinApi {
    /**
     * @param projectId project identifier
     * @param options optional pagination parameters for the request
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.getMany
     */
    listLabels(projectId: number, options?: LabelsModel.ListLabelsParams): Promise<ResponseList<LabelsModel.Label>>;
    /**
     * @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://developer.crowdin.com/api/v2/#operation/api.projects.labels.getMany
     */
    listLabels(projectId: number, limit?: number, offset?: number): Promise<ResponseList<LabelsModel.Label>>;
    /**
     * @param projectId project identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.post
     */
    addLabel(projectId: number, request: LabelsModel.AddLabelRequest): Promise<ResponseObject<LabelsModel.Label>>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.get
     */
    getLabel(projectId: number, labelId: number): Promise<ResponseObject<LabelsModel.Label>>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.delete
     */
    deleteLabel(projectId: number, labelId: number): Promise<void>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.patch
     */
    editLabel(projectId: number, labelId: number, request: PatchRequest[]): Promise<ResponseObject<LabelsModel.Label>>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.screenshots.post
     */
    assignLabelToScreenshots(projectId: number, labelId: number, request: LabelsModel.AssignLabelToScreenshotsRequet): Promise<ResponseList<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @param screenshotIds screenshot identifiers
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.screenshots.deleteMany
     */
    unassignLabelFromScreenshots(projectId: number, labelId: number, screenshotIds: string): Promise<ResponseList<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.strings.post
     */
    assignLabelToString(projectId: number, labelId: number, request: LabelsModel.AssignLabelToStringsRequet): Promise<ResponseList<SourceStringsModel.String>>;
    /**
     * @param projectId project identifier
     * @param labelId label identifier
     * @param stringIds string identifiers
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.labels.strings.deleteMany
     */
    unassignLabelFromString(projectId: number, labelId: number, stringIds: string): Promise<ResponseList<SourceStringsModel.String>>;
}
export declare namespace LabelsModel {
    interface ListLabelsParams extends PaginationOptions {
        orderBy?: string;
    }
    interface Label {
        id: number;
        title: string;
        isSystem?: boolean;
    }
    interface AddLabelRequest {
        title: string;
    }
    interface AssignLabelToStringsRequet {
        stringIds: number[];
    }
    interface AssignLabelToScreenshotsRequet {
        screenshotIds: number[];
    }
}
