/*!
 * Copyright Adaptavist 2022 (c) All rights reserved
 */
import { Response, Headers, BaseApiCore, ErrorStrategyOptionType, PlatformImplementation } from '@managed-api/commons-core';
import { CommonError, AdditionalErrorTypes, ErrorStrategyHandlers, ErrorStrategyOption } from './errorStrategy';
import { ErrorStrategyBuilder } from './builders/errorStrategy';
import { CreateContentRequest, CreateContentResponseOK, DeleteContentRequest, DeleteContentResponseOK, GetContentHistoryRequest, GetContentHistoryResponseOK, GetContentRequest, GetContentResponseOK, GetContentsRequest, GetContentsResponseOK, UpdateContentRequest, UpdateContentResponseOK } from './types/content';
import { GetChildrenResponseOK, GetChildrenRequest, GetChildrenOfTypeRequest, GetChildrenOfTypeResponseOK, GetCommentsRequest, GetCommentsResponseOK } from './types/content/child';
import { GetAttachmentsResponseOK, GetAttachmentsRequest } from './types/content/attachment';
import { GetLabelsResponseOK, GetLabelsRequest, AddLabelsRequest, AddLabelsResponseOK, DeleteLabelRequest, DeleteLabelResponseOK } from './types/content/label';
import { AddWatcherResponseOK, AddWatcherRequest, RemoveWatcherRequest, RemoveWatcherResponseOK } from './types/content/watcher';
import { GetSpacesRequest, CreateSpaceRequest, CreateSpaceResponseOK, UpdateSpaceRequest, UpdateSpaceResponseOK, DeleteSpaceRequest, DeleteSpaceResponseOK, GetSpacesResponseOK } from './types/space';
import { GetUserResponseOK, GetUserRequest } from './types/user';
export interface ConfluenceOnPremApiCoreOptions extends ErrorStrategyOption {
}
declare type GetGlobalErrorStrategy = () => ErrorStrategyOptionType<CommonError, AdditionalErrorTypes, ErrorStrategyHandlers, ErrorStrategyBuilder> | undefined;
export declare abstract class ConfluenceOnPremApiCore extends BaseApiCore {
    private options?;
    Content: ContentGroup;
    Space: SpaceGroup;
    User: UserGroup;
    All: AllGroup;
    constructor(options?: ConfluenceOnPremApiCoreOptions | undefined);
    setGlobalErrorStrategy(errorStrategy: ErrorStrategyOptionType<CommonError, AdditionalErrorTypes, ErrorStrategyHandlers, ErrorStrategyBuilder>): void;
    protected buildResponse(url: string, status: number, statusText: string, headers: Headers, body?: string | ArrayBuffer): Response<any>;
    private getGlobalErrorStrategy;
}
declare class AllGroup {
    private Content;
    private Space;
    private User;
    constructor(Content: ContentGroup, Space: SpaceGroup, User: UserGroup);
    /**
     * Creates a new piece of Content or publishes the draft if the content id is present. For the case publishing draft, a new piece of content will be created and all metadata from the draft will be transferred into the newly created content.
     * Alternative usage: Content.createContent
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-createContent
     * @param options Request options.
     */
    createContent<T = CreateContentResponseOK>(options: CreateContentRequest): Promise<CreateContentResponseOK | T>;
    /**
     * Returns a paginated list of Content.
     * Alternative usage: Content.getContents
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-getContent
     * @param options Request options.
     */
    getContents<T = GetContentsResponseOK>(options?: GetContentsRequest): Promise<GetContentsResponseOK | T>;
    /**
     * Updates a piece of Content, including changes to content status
     * Alternative usage: Content.updateContent
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-update
     * @param options Request options.
     */
    updateContent<T = UpdateContentResponseOK>(options: UpdateContentRequest): Promise<UpdateContentResponseOK | T>;
    /**
     * Returns a piece of Content.
     * Alternative usage: Content.getContent
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-getContentById
     * @param options Request options.
     */
    getContent<T = GetContentResponseOK>(options: GetContentRequest): Promise<GetContentResponseOK | T>;
    /**
     * Trashes or purges a piece of Content, based on its {@link ContentType} and {@link ContentStatus}.
     * Alternative usage: Content.deleteContent
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-delete
     * @param options Request options.
     */
    deleteContent<T = DeleteContentResponseOK>(options: DeleteContentRequest): Promise<DeleteContentResponseOK | T>;
    /**
     * Returns the history of a particular piece of content
     * Alternative usage: Content.getContentHistory
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-getHistory
     * @param options Request options.
     */
    getContentHistory<T = GetContentHistoryResponseOK>(options: GetContentHistoryRequest): Promise<GetContentHistoryResponseOK | T>;
    /**
     * Returns a map of the direct children of a piece of Content. Content can have multiple types of children - for example a Page can have children that are also Pages, but it can also have Comments and Attachments.
     * Alternative usage: Content.Child.getChildren
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child-children
     * @param options Request options.
     */
    getContentChildren<T = GetChildrenResponseOK>(options: GetChildrenRequest): Promise<GetChildrenResponseOK | T>;
    /**
     * Returns the direct children of a piece of Content, limited to a single child type. The {@link ContentType}(s) of the children returned is specified by the "type" path parameter in the request.
     * Alternative usage: Content.Child.getChildrenOfType
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child-childrenOfType
     * @param options Request options.
     */
    getContentChildrenOfType<T = GetChildrenOfTypeResponseOK>(options: GetChildrenOfTypeRequest): Promise<GetChildrenOfTypeResponseOK | T>;
    /**
     * Returns the comments of a content
     * Alternative usage: Content.Child.getComments
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child-commentsOfContent
     * @param options Request options.
     */
    getContentComments<T = GetCommentsResponseOK>(options: GetCommentsRequest): Promise<GetCommentsResponseOK | T>;
    /**
     * Returns a paginated list of attachment Content entities within a single container.
     * Alternative usage: Content.Attachment.getAttachments
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child/attachment-getAttachments
     * @param options Request options.
     */
    getContentAttachments<T = GetAttachmentsResponseOK>(options: GetAttachmentsRequest): Promise<GetAttachmentsResponseOK | T>;
    /**
     * Returns the list of labels on a piece of Content.
     * Alternative usage: Content.Label.getLabels
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/label-labels
     * @param options Request options.
     */
    getContentLabels<T = GetLabelsResponseOK>(options: GetLabelsRequest): Promise<GetLabelsResponseOK | T>;
    /**
     * Adds a list of labels to the specified content. The body is the json representation of the list.
     * Alternative usage: Content.Label.addLabels
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/label-addLabels
     * @param options Request options.
     */
    addContentLabels<T = AddLabelsResponseOK>(options: AddLabelsRequest): Promise<AddLabelsResponseOK | T>;
    /**
     * Deletes a labels to the specified content. When calling this method through REST the label parameter doesn't accept "/" characters in label names, because of security constraints. For this case please use the query parameter version of this method (/content/{id}/label?name={label}
     * Alternative usage: Content.Label.deleteLabel
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/label-deleteLabel
     * @param options Request options.
     */
    deleteContentLabel<T = DeleteLabelResponseOK>(options: DeleteLabelRequest): Promise<DeleteLabelResponseOK | T>;
    /**
     * Create a new watcher for the given user and content id. User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs to be a Confluence administrator.
     * Alternative usage: Content.Watcher.addWatcher
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/user/watch-addContentWatcher
     * @param options Request options.
     */
    addContentWatcher<T = AddWatcherResponseOK>(options: AddWatcherRequest): Promise<AddWatcherResponseOK | T>;
    /**
     * Delete an existing watcher for the given user and content id. User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs to be a Confluence administrator.
     * Alternative usage: Content.Watcher.removeWatcher
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/user/watch-removeContentWatcher
     * @param options Request options.
     */
    removeContentWatcher<T = RemoveWatcherResponseOK>(options: RemoveWatcherRequest): Promise<RemoveWatcherResponseOK | T>;
    /**
     * Returns information about a number of spaces.
     * Alternative usage: Space.getSpaces
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-spaces
     * @param options Request options.
     */
    getSpaces<T = GetSpacesResponseOK>(options?: GetSpacesRequest): Promise<GetSpacesResponseOK | T>;
    /**
     * Creates a new Space. The incoming Space does not include an id, but must include a Key and Name, and should include a Description.
     * Alternative usage: Space.createSpace
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-createSpace
     * @param options Request options.
     */
    createSpace<T = CreateSpaceResponseOK>(options: CreateSpaceRequest): Promise<CreateSpaceResponseOK | T>;
    /**
     * Updates a Space. Currently only the Space name, description and homepage can be updated.
     * Alternative usage: Space.updateSpace
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-update
     * @param options Request options.
     */
    updateSpace<T = UpdateSpaceResponseOK>(options: UpdateSpaceRequest): Promise<UpdateSpaceResponseOK | T>;
    /**
     * Deletes a Space. The space is deleted in a long running task, so the space cannot be considered deleted when this resource returns. Clients can follow the status link in the response and poll it until the task completes.
     * Alternative usage: Space.deleteSpace
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-delete
     * @param options Request options.
     */
    deleteSpace<T = DeleteSpaceResponseOK>(options: DeleteSpaceRequest): Promise<DeleteSpaceResponseOK | T>;
    /**
     * Get information about a user identified by either user key or username.
     * Alternative usage: User.getUser
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/user-getUser
     * @param options Request options.
     */
    getUser<T = GetUserResponseOK>(options: GetUserRequest): Promise<GetUserResponseOK | T>;
}
declare class ContentGroup {
    private implementation;
    private getGlobalErrorStrategy;
    Child: ContentChildGroup;
    Attachment: ContentAttachmentGroup;
    Label: ContentLabelGroup;
    Watcher: ContentWatcherGroup;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Creates a new piece of Content or publishes the draft if the content id is present. For the case publishing draft, a new piece of content will be created and all metadata from the draft will be transferred into the newly created content.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-createContent
     * @param options Request options.
     */
    createContent<T = CreateContentResponseOK>(options: CreateContentRequest): Promise<CreateContentResponseOK | T>;
    /**
     * Returns a paginated list of Content.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-getContent
     * @param options Request options.
     */
    getContents<T = GetContentsResponseOK>(options?: GetContentsRequest): Promise<GetContentsResponseOK | T>;
    /**
     * Updates a piece of Content, including changes to content status
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-update
     * @param options Request options.
     */
    updateContent<T = UpdateContentResponseOK>(options: UpdateContentRequest): Promise<UpdateContentResponseOK | T>;
    /**
     * Returns a piece of Content.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-getContentById
     * @param options Request options.
     */
    getContent<T = GetContentResponseOK>(options: GetContentRequest): Promise<GetContentResponseOK | T>;
    /**
     * Trashes or purges a piece of Content, based on its {@link ContentType} and {@link ContentStatus}.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-delete
     * @param options Request options.
     */
    deleteContent<T = DeleteContentResponseOK>(options: DeleteContentRequest): Promise<DeleteContentResponseOK | T>;
    /**
     * Returns the history of a particular piece of content
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content-getHistory
     * @param options Request options.
     */
    getContentHistory<T = GetContentHistoryResponseOK>(options: GetContentHistoryRequest): Promise<GetContentHistoryResponseOK | T>;
}
declare class ContentChildGroup {
    private implementation;
    private getGlobalErrorStrategy;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Returns a map of the direct children of a piece of Content. Content can have multiple types of children - for example a Page can have children that are also Pages, but it can also have Comments and Attachments.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child-children
     * @param options Request options.
     */
    getChildren<T = GetChildrenResponseOK>(options: GetChildrenRequest): Promise<GetChildrenResponseOK | T>;
    /**
     * Returns the direct children of a piece of Content, limited to a single child type. The {@link ContentType}(s) of the children returned is specified by the "type" path parameter in the request.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child-childrenOfType
     * @param options Request options.
     */
    getChildrenOfType<T = GetChildrenOfTypeResponseOK>(options: GetChildrenOfTypeRequest): Promise<GetChildrenOfTypeResponseOK | T>;
    /**
     * Returns the comments of a content
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child-commentsOfContent
     * @param options Request options.
     */
    getComments<T = GetCommentsResponseOK>(options: GetCommentsRequest): Promise<GetCommentsResponseOK | T>;
}
declare class ContentAttachmentGroup {
    private implementation;
    private getGlobalErrorStrategy;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Returns a paginated list of attachment Content entities within a single container.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/child/attachment-getAttachments
     * @param options Request options.
     */
    getAttachments<T = GetAttachmentsResponseOK>(options: GetAttachmentsRequest): Promise<GetAttachmentsResponseOK | T>;
}
declare class ContentLabelGroup {
    private implementation;
    private getGlobalErrorStrategy;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Returns the list of labels on a piece of Content.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/label-labels
     * @param options Request options.
     */
    getLabels<T = GetLabelsResponseOK>(options: GetLabelsRequest): Promise<GetLabelsResponseOK | T>;
    /**
     * Adds a list of labels to the specified content. The body is the json representation of the list.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/label-addLabels
     * @param options Request options.
     */
    addLabels<T = AddLabelsResponseOK>(options: AddLabelsRequest): Promise<AddLabelsResponseOK | T>;
    /**
     * Deletes a labels to the specified content. When calling this method through REST the label parameter doesn't accept "/" characters in label names, because of security constraints. For this case please use the query parameter version of this method (/content/{id}/label?name={label}
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/content/{id}/label-deleteLabel
     * @param options Request options.
     */
    deleteLabel<T = DeleteLabelResponseOK>(options: DeleteLabelRequest): Promise<DeleteLabelResponseOK | T>;
}
declare class ContentWatcherGroup {
    private implementation;
    private getGlobalErrorStrategy;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Create a new watcher for the given user and content id. User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs to be a Confluence administrator.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/user/watch-addContentWatcher
     * @param options Request options.
     */
    addWatcher<T = AddWatcherResponseOK>(options: AddWatcherRequest): Promise<AddWatcherResponseOK | T>;
    /**
     * Delete an existing watcher for the given user and content id. User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs to be a Confluence administrator.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/user/watch-removeContentWatcher
     * @param options Request options.
     */
    removeWatcher<T = RemoveWatcherResponseOK>(options: RemoveWatcherRequest): Promise<RemoveWatcherResponseOK | T>;
}
declare class SpaceGroup {
    private implementation;
    private getGlobalErrorStrategy;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Returns information about a number of spaces.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-spaces
     * @param options Request options.
     */
    getSpaces<T = GetSpacesResponseOK>(options?: GetSpacesRequest): Promise<GetSpacesResponseOK | T>;
    /**
     * Creates a new Space. The incoming Space does not include an id, but must include a Key and Name, and should include a Description.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-createSpace
     * @param options Request options.
     */
    createSpace<T = CreateSpaceResponseOK>(options: CreateSpaceRequest): Promise<CreateSpaceResponseOK | T>;
    /**
     * Updates a Space. Currently only the Space name, description and homepage can be updated.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-update
     * @param options Request options.
     */
    updateSpace<T = UpdateSpaceResponseOK>(options: UpdateSpaceRequest): Promise<UpdateSpaceResponseOK | T>;
    /**
     * Deletes a Space. The space is deleted in a long running task, so the space cannot be considered deleted when this resource returns. Clients can follow the status link in the response and poll it until the task completes.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/space-delete
     * @param options Request options.
     */
    deleteSpace<T = DeleteSpaceResponseOK>(options: DeleteSpaceRequest): Promise<DeleteSpaceResponseOK | T>;
}
declare class UserGroup {
    private implementation;
    private getGlobalErrorStrategy;
    constructor(implementation: PlatformImplementation, getGlobalErrorStrategy: GetGlobalErrorStrategy);
    /**
     * Get information about a user identified by either user key or username.
     * Documentation: https://docs.atlassian.com/ConfluenceServer/rest/7.11.1/#api/user-getUser
     * @param options Request options.
     */
    getUser<T = GetUserResponseOK>(options: GetUserRequest): Promise<GetUserResponseOK | T>;
}
export {};
//# sourceMappingURL=index.d.ts.map