import { DTOCreateDocumentationGroupInput, DTOCreateDocumentationPageInputV2, DTOUpdateDocumentationGroupInput, DTOUpdateDocumentationPageInputV2, DTODuplicateDocumentationGroupInput, DTODuplicateDocumentationPageInputV2, DTODeleteDocumentationGroupInput, DTOMoveDocumentationPageInputV2, DTOMoveDocumentationGroupInput, DTOCreateDocumentationTabInput, DTODocumentationPageAnchor, DTODesignElementsDataDiffResponse, DTOPublishDocumentationRequest, DTOElementActionInput, DTOElementActionOutput, DTODocumentationPageDependenciesGetResponse } from "@supernova-studio/client";
import { DocumentationLegacy, DocumentationLegacyModel } from "../../model/base/SDKDocumentationLegacy";
import { DocsBlockDefinition } from "../../model/docs/blocks/definition/SDKDocsBlockDefinition";
import { DocsBlock } from "../../model/docs/blocks/usage/SDKDocsBlock";
import { DocsEntity } from "../../model/docs/entities/SDKDocsEntity";
import { DocsEntityGroupModel } from "../../model/docs/entities/SDKDocsEntityGroup";
import { DocsEntityPageModel } from "../../model/docs/entities/SDKDocsEntityPage";
import { DocsSection } from "../../model/docs/sections/SDKDocsSection";
import { DocumentationLegacyGroup } from "../../model/documentation/SDKDocumentationLegacyGroup";
import { DocumentationLegacyPage } from "../../model/documentation/SDKDocumentationLegacyPage";
import { DocsPublishStatus } from "../../model/enums/SDKDocsPublishStatus";
import { DocumentationEnvironment } from "../../model/enums/SDKDocumentationEnvironment";
import { ExportBuild, ExportBuildStatus } from "../../model/exporters/exporter_builds/SDKExportBuild";
import { DataCore } from "../data/SDKDataCore";
import { RemoteVersionIdentifier, RemoteWorkspaceVersionIdentifier } from "./SDKRemoteIdentifiers";
export declare class AreaDocumentation {
    /** Internal: Engine */
    private dataCore;
    constructor(dataCore: DataCore);
    /** Fetches object containing the main information about the docs. This does not contain structure or content of the documentation
     * @param from - Remote version to fetch from
     * @returns Documentation object
     */
    getDocumentation(from: RemoteWorkspaceVersionIdentifier): Promise<DocumentationLegacy>;
    getDocumentationStructure(from: RemoteWorkspaceVersionIdentifier): Promise<(DocsEntityPageModel | DocsEntityGroupModel)[]>;
    /**
     * Fetches the differences in elements, such as design tokens and assets, that have occurred since the documentation was published.
     * @param from Remote version to fetch from
     * @returns Documentation elements diff
     */
    getDocumentationElementsDiff(from: RemoteWorkspaceVersionIdentifier, environment: DocumentationEnvironment): Promise<DTODesignElementsDataDiffResponse>;
    /** Fetches url string where to find documentation
     * @param from - Remote version to fetch from
     * @returns documentation url string
     */
    getDocumentationUrl(from: RemoteVersionIdentifier): Promise<string>;
    /** Retrieve information for an ongoing publishing build if any exists. */
    isPublishing(to: RemoteWorkspaceVersionIdentifier, environment: DocumentationEnvironment): Promise<{
        status: DocsPublishStatus.inProgress;
        job: ExportBuild;
    } | {
        status: DocsPublishStatus.idle;
        job: null;
    }>;
    /** Fetches a documentation build.
     * @param workspaceId - Identifier of the workspace associated with the build.
     * @param buildId - Identifier of the build.
     */
    getDocumentationBuild(workspaceId: string, buildId: string): Promise<ExportBuild>;
    /** Fetches documentation builds filtered according to the params.
     * @param workspaceId - Identifier of the workspace associated with the builds.
     * @param versionId - Identifier of the design system version associated with the builds.
     * @param environment - Environment of the builds.
     * @param status - Status of the builds.
     * @param createdByUserId - Identifier of the user who created the builds.
     * @param limit - Number of builds to return.
     */
    getDocumentationBuilds(workspaceId: string, versionId: string, environment: DocumentationEnvironment, status?: ExportBuildStatus, createdByUserId?: string, limit?: number): Promise<Array<ExportBuild>>;
    /** Updates documentation structure
     * @param from - Remote version to fetch from
     * @param model - documentation legacy model
     * @returns nothing
     */
    updateDocumentationStructure(from: RemoteVersionIdentifier, model: DocumentationLegacyModel): Promise<void>;
    /** Creates a documentation page within documentation group
     * @param from - Remote version to fetch from
     * @param payload - The update model
     * @returns Newly created documentation page
     */
    createDocumentationPage(from: RemoteWorkspaceVersionIdentifier, payload: Omit<DTOCreateDocumentationPageInputV2, "persistentId">): Promise<string>;
    /** General element action */
    elementAction(from: RemoteWorkspaceVersionIdentifier, payload: DTOElementActionInput): Promise<DTOElementActionOutput>;
    /** Creates a documentation group within documentation group
     * @param from - Remote version to fetch from
     * @param parentItemPersistentId - Peristent ID of the parent group
     * @param data - The update model
     * @returns Newly created documentation group
     */
    createDocumentationGroup(from: RemoteWorkspaceVersionIdentifier, payload: Omit<DTOCreateDocumentationGroupInput, "persistentId">): Promise<string>;
    /** Creates a documentation tab group within documentation group
     * @param from - Remote version to fetch from
     * @param data - The update model
     * @returns Newly created documentation group
     */
    createDocumentationTab(from: RemoteWorkspaceVersionIdentifier, payload: Omit<DTOCreateDocumentationTabInput, "persistentId">): Promise<string>;
    /** Updates a documentation group within documentation group
     * @param from - Remote version to fetch from
     * @param group - Group to update
     * @param updateModel - Group update model with optional fields
     * @returns Newly created documentation group
     */
    updateDocumentationGroup(from: RemoteWorkspaceVersionIdentifier, payload: DTOUpdateDocumentationGroupInput): Promise<any>;
    /** Moves a documentation page
     * @param from - Remote version to fetch from
     * @param payload - The update model
     * @returns nothing
     */
    moveDocumentationPage(from: RemoteWorkspaceVersionIdentifier, payload: DTOMoveDocumentationPageInputV2): Promise<any>;
    /** Moves a documentation group
     * @param from - Remote version to fetch from
     * @param payload - The update model
     * @returns nothing
     */
    moveDocumentationGroup(from: RemoteWorkspaceVersionIdentifier, payload: DTOMoveDocumentationGroupInput): Promise<any>;
    /** Deletes a documentation group
     * @param from - Remote version to fetch from
     * @param group - Group to delete
     * @returns nothing
     */
    deleteDocumentationGroup(from: RemoteWorkspaceVersionIdentifier, payload: DTODeleteDocumentationGroupInput): Promise<void>;
    /** Deletes a documentation group and its tree
     * @param from - Remote version to fetch from
     * @param group - Group to delete
     * @returns nothing
     */
    deleteDocumentationGroupAndTree(from: RemoteWorkspaceVersionIdentifier, id: string): Promise<void>;
    /** Deletes a documentation page
     * @param from - Remote version to fetch from
     * @param page - Page to delete
     * @returns nothing
     */
    deleteDocumentationPage(from: RemoteWorkspaceVersionIdentifier, id: string): Promise<void>;
    /** Restores a documentation page
     * @param from - Remote version to fetch from
     * @param persistentId - persistentId of a page to restore
     * @param snapshotId - Identifier of a snapshot of a page we want to restore to.
     * @returns nothing
     */
    restoreDocumentationPage(from: RemoteWorkspaceVersionIdentifier, persistentId: string, snapshotId?: string): Promise<void>;
    /** Restores a documentation group
     * @param from - Remote version to fetch from
     * @param persistentId - persistentId of a group to restore
     * @param snapshotId - Identifier of a snapshot of a group we want to restore to.
     * @returns nothing
     */
    restoreDocumentationGroup(from: RemoteWorkspaceVersionIdentifier, persistentId: string, snapshotId?: string): Promise<void>;
    /** Deletes a documentation tab group
     * @param from - Remote version to fetch from
     * @param page - Page to delete
     * @returns nothing
     */
    deleteDocumentationTabGroup(from: RemoteWorkspaceVersionIdentifier, id: string): Promise<void>;
    /** Updates a documentation tab or page
     * @param from - Remote version to fetch from
     * @param page - page to update
     * @param updateModel - data to update page with
     * @returns page
     */
    updateDocumentationPageOrTab(from: RemoteWorkspaceVersionIdentifier, payload: DTOUpdateDocumentationPageInputV2): Promise<any>;
    /** Duplicates a documentation tab or page
     * @param from - Remote version to fetch from
     * @param idInVersion - id of page or tab to be duplicated
     * @param newPersistentId - suggested persistent id of a new page or tab
     * @returns Promise<DocumentationLegacyPage>
     */
    duplicateDocumentationPageOrTab(from: RemoteWorkspaceVersionIdentifier, payload: Omit<DTODuplicateDocumentationPageInputV2, "persistentId">): Promise<string>;
    /** Duplicates a documentation group or tabbed page
     * @param from - Remote version to fetch from
     * @param idInVersion - id of page or tab to be duplicated
     * @param newPersistentId - suggested persistent id of a new group or tabbed page
     * @returns duplicated group persistent id
     */
    duplicateDocumentationGroupOrTabbedPage(from: RemoteWorkspaceVersionIdentifier, payload: Omit<DTODuplicateDocumentationGroupInput, "persistentId">): Promise<string>;
    /** Ungroups a documentation group
     * @param from - Remote version to fetch from
     * @param idInVersion - id of a group
     * @returns nothing
     */
    ungroupDocumentationGroup(from: RemoteWorkspaceVersionIdentifier, payload: DTODeleteDocumentationGroupInput): Promise<void>;
    /** Fetches entire documentation including content in the legacy format
     * @param from - Remote version to fetch from
     * @returns All documentation items
     */
    getFullDocumentationLegacyRepresentation(from: RemoteWorkspaceVersionIdentifier): Promise<{
        rootGroup: DocumentationLegacyGroup;
        allPages: Array<DocumentationLegacyPage>;
        allGroups: Array<DocumentationLegacyGroup>;
    }>;
    /** Get ID of the multiplayer room for a given documentation page
     * @param from - Remote version to fetch from
     * @param pageId - ID of the documentation page
     * @returns Room ID that can be immediately used to join the multiplayer room
     */
    getDocumentationPageRoomId(from: RemoteWorkspaceVersionIdentifier, pageId: string): Promise<string>;
    /** Get id of the room for a specific design system and version. This room contains doc structure
     * @param from - Remote version to fetch from
     * @returns Room ID that can be immediately used to join the multiplayer room
     */
    getDocumentationVersionRoomId(from: RemoteWorkspaceVersionIdentifier): Promise<string>;
    /** Get id of the room for a specific workspace. This rooms contains comments.
     * @param from - Remote version to fetch from
     * @returns Room ID that can be immediately used to join the multiplayer room
     */
    getDocumentationWorkspaceRoomId(from: Pick<RemoteWorkspaceVersionIdentifier, "workspaceId">): Promise<string>;
    /** Publish documentation. This queues a build on Supernova's server that will be processed by the asynchronous CI/CD pipeline.
     * You can request status of the build with associated `isPublishing` method.
     * @param to - Remote version where the build should be created
     * @param environment - Environment to publish to
     * @param isForcing - If true, a new build will be created regardless if an in-progress build already exists.
     * */
    publish(to: RemoteWorkspaceVersionIdentifier, environment: DocumentationEnvironment, isForcing?: boolean): Promise<ExportBuild>;
    /** Publish documentation drafts. This queues a build on Supernova's server that will be processed by the asynchronous CI/CD pipeline.
     * You can request status of the build with associated `isPublishing` method. New endpoint supports publishing drafts.
     * @param to - Remote version where the build should be created
     * @param environment - Environment to publish to
     * @param changes - Specific page/group ids that needs to be published
     * @param isForcing - If true, a new build will be created regardless if an in-progress build already exists.
     * */
    publishDrafts(to: RemoteWorkspaceVersionIdentifier, environment: DocumentationEnvironment, changes: DTOPublishDocumentationRequest["changes"], isForcing?: boolean): Promise<ExportBuild>;
    getDocumentationPageAnchors(from: RemoteWorkspaceVersionIdentifier, pageId: string): Promise<Array<DTODocumentationPageAnchor>>;
    getDocumentationDependencies(from: RemoteVersionIdentifier): Promise<DTODocumentationPageDependenciesGetResponse["dependencies"]>;
    getDocumentationMockedStructure(): Array<DocsEntity>;
    getDocumentationMockedPageContent(pageId: string): Array<DocsBlock | DocsSection>;
    getDocumentationMockedEditorBlockDefinitions(): Array<DocsBlockDefinition>;
    getPortalMockedEditorBlockDefinitions(): Array<DocsBlockDefinition>;
}
