import { CrowdinApi, PaginationOptions, PatchRequest, ResponseList, ResponseObject } from '../core';
/**
 * Screenshots provide translators with additional context for the source strings.
 * Screenshot tags allow specifying which source strings are displayed on each screenshot.
 *
 * Use API to manage screenshots and their tags.
 */
export declare class Screenshots extends CrowdinApi {
    /**
     * @param projectId project identifier
     * @param options search options
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.getMany
     */
    listScreenshots(projectId: number, options?: ScreenshotsModel.ListScreenshotParams): Promise<ResponseList<ScreenshotsModel.Screenshot>>;
    /**
     * @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.screenshots.getMany
     */
    listScreenshots(projectId: number, limit?: number, offset?: number): Promise<ResponseList<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.post
     */
    addScreenshot(projectId: number, request: ScreenshotsModel.CreateScreenshotRequest): Promise<ResponseObject<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.get
     */
    getScreenshot(projectId: number, screenshotId: number): Promise<ResponseObject<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.put
     */
    updateScreenshot(projectId: number, screenshotId: number, request: ScreenshotsModel.UpdateScreenshotRequest): Promise<ResponseObject<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.delete
     */
    deleteScreenshot(projectId: number, screenshotId: number): Promise<void>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.patch
     */
    editScreenshot(projectId: number, screenshotId: number, request: PatchRequest[]): Promise<ResponseObject<ScreenshotsModel.Screenshot>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param options optional pagination parameters for the request
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.getMany
     */
    listScreenshotTags(projectId: number, screenshotId: number, options?: PaginationOptions): Promise<ResponseList<ScreenshotsModel.Tag>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot 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.screenshots.tags.getMany
     */
    listScreenshotTags(projectId: number, screenshotId: number, limit?: number, offset?: number): Promise<ResponseList<ScreenshotsModel.Tag>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.putMany
     */
    replaceTags(projectId: number, screenshotId: number, request: ScreenshotsModel.ReplaceTagRequest[] | ScreenshotsModel.AutoTagRequest): Promise<void>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.post
     */
    addTag(projectId: number, screenshotId: number, request: ScreenshotsModel.ReplaceTagRequest[]): Promise<ResponseObject<ScreenshotsModel.Tag>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.deleteMany
     */
    clearTags(projectId: number, screenshotId: number): Promise<void>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param tagId tag identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.get
     */
    getTag(projectId: number, screenshotId: number, tagId: number): Promise<ResponseObject<ScreenshotsModel.Tag>>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param tagId tag identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.delete
     */
    deleteTag(projectId: number, screenshotId: number, tagId: number): Promise<void>;
    /**
     * @param projectId project identifier
     * @param screenshotId screenshot identifier
     * @param tagId tag identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.screenshots.tags.patch
     */
    updateTag(projectId: number, screenshotId: number, tagId: number, request: PatchRequest[]): Promise<ResponseObject<ScreenshotsModel.Screenshot>>;
}
export declare namespace ScreenshotsModel {
    interface ListScreenshotParams extends PaginationOptions {
        stringIds?: number[];
        /**
         * @deprecated use stringIds instead
         */
        stringId?: number;
        labelIds?: string;
        excludeLabelIds?: string;
        orderBy?: string;
    }
    interface Screenshot {
        id: number;
        userId: number;
        url: string;
        webUrl: string;
        name: string;
        size: Size;
        tagsCount: number;
        tags: Tag[];
        labels: number[];
        labelIds: number[];
        createdAt: string;
        updatedAt: string;
    }
    interface CreateScreenshotRequest {
        storageId: number;
        name: string;
        autoTag?: boolean;
        fileId?: number;
        branchId?: number;
        directoryId?: number;
        labelIds?: number[];
    }
    interface UpdateScreenshotRequest {
        storageId: number;
        name: string;
    }
    interface Tag {
        id: number;
        screenshotId: number;
        stringId: number;
        position: Position;
        createdAt: string;
    }
    interface ReplaceTagRequest {
        stringId: number;
        position?: Position;
    }
    interface AutoTagRequest {
        autoTag: boolean;
        fileId?: number;
        branchId?: number;
        directoryId?: number;
    }
    interface Size {
        width: number;
        height: number;
    }
    interface Position {
        x: number;
        y: number;
        width: number;
        height: number;
    }
}
