import { DTODocumentationLinkPreviewRequest, DTODocumentationPageApprovalStateChangeInput, DTOPageRedirectCreateBody, DTOPageRedirectUpdateBody } from "@supernova-studio/client";
import { DesignSystemInvite, DesignSystemInviteUpdate, DesignSystemMemberUpdate, DesignSystemPendingMemberInvite, DesignSystemUserInvitation } from "@supernova-studio/model";
import { DesignSystem, DesignSystemAccessMode, DesignSystemSwitcher } from "../../model/base/SDKDesignSystem";
import { DesignSystemContactList } from "../../model/base/SDKDesignSystemContactList";
import { DesignSystemMemberList } from "../../model/base/SDKDesignSystemMemberList";
import { CustomDomain } from "../../model/support/SDKCustomDomain";
import { DataCore } from "../data/SDKDataCore";
export declare class AreaDesignSystems {
    /** Internal: Engine */
    private dataCore;
    constructor(dataCore: DataCore);
    /** Fetches all design systems belonging to the workspace
     * @param workspaceId - Workspace to fetch from
     * @returns All design systems in the specified version
     */
    designSystems(workspaceId: string): Promise<Array<DesignSystem>>;
    /** Fetches a specific design system by its id
     * @param designSystemId - Design system to fetch
     * @returns Design system with the specified id
     */
    designSystem(designSystemId: string): Promise<DesignSystem | null>;
    /** Retrieves custom domain information for a design system
     * @param designSystemId - ID of the design system
     * @returns custom domain information
     */
    designSystemCustomDomain(designSystemId: string): Promise<CustomDomain>;
    /** Fetches design system stats
     * @param dsId - Design system ID
     * @param versionId - Version ID
     * @param brandId - Brand ID to filter by
     * @returns Design system stats
     */
    designSystemStats(dsId: string, versionId: string, brandId?: string): Promise<import("../../model/base/SDKDesignSystemVersionStats").DesignSystemVersionStats>;
    /** Fetches specific design system's memberships
     * @param designSystemId - Design system's identifier
     * @returns Design system's memberships
     */
    designSystemMemberList(designSystemId: string): Promise<DesignSystemMemberList>;
    /** Fetches specific design system's contacts
     * @param designSystemId - Design system's identifier
     * @returns Design system's contacts
     */
    designSystemContactList(designSystemId: string): Promise<DesignSystemContactList>;
    /** Creates a new design system and retrieves the newly created DS object
     * @param workspaceId - Workspace to create the design system in
     * @param name - Name of the design system
     * @param description - Description of the design system
     * @param accessMode - Defines who can access the design system
     * @param usersToInvite - Existing users to invite
     * @param invitesToInvite - Pending memberships to invite
     * @param emailsToInvite - New emails to invite
     * @returns Newly created design system object
     */
    createDesignSystem(workspaceId: string, name: string, description?: string, accessMode?: DesignSystemAccessMode, usersToInvite?: Array<DesignSystemUserInvitation>, invitesToInvite?: Array<DesignSystemPendingMemberInvite>, emailsToInvite?: Array<DesignSystemInvite>): Promise<DesignSystem>;
    getBlockDefinitions(designSystemId: string, versionId: string): Promise<import("../..").DocsBlockDefinition[]>;
    getUrlPreview(designSystemId: string, versionId: string, request: DTODocumentationLinkPreviewRequest): Promise<{
        linkPreview?: {
            description?: string;
            title?: string;
            thumbnail?: {
                type?: "Resource" | "FigmaNode";
                resource?: {
                    url?: string;
                    resourceId?: string;
                };
                figmaNode?: {
                    sourceId?: string;
                    frameReferenceId?: string;
                };
            };
        };
    }>;
    /** Updates design system metadata for a specific design system
     * @param designSystemId - ID of the design system
     * @param name - New DS name
     * @param description - New DS description
     * @returns Nothing
     */
    updateDesignSystemMetadata(designSystemId: string, name: string, description?: string, iconFileId?: string | null): Promise<void>;
    /** Enabled or disables multibrand functionality for a specific design system
     * @param designSystem - design system to update
     * @param isMultibrand - Multibrand functionality enabled or disabled
     * @returns Nothing
     */
    updateDesignSystemIsMultibrand(designSystem: DesignSystem, isMultibrand: boolean): Promise<void>;
    /** Updates a design system approval feature
     * @param designSystemId - design system to update
     * @param payload - Approvals feature data
     * @returns Nothing
     */
    updateDesignSystemIsApprovalFeatureEnabled(designSystemId: string, payload: {
        isApprovalFeatureEnabled?: boolean;
        approvalRequiredForPublishing?: boolean;
    }): Promise<void>;
    /** Updates approval state of a page
     * @param designSystemId - design system of the page
     * @param versionId - version of the page
     * @param payload - approval state info
     * @returns Nothing
     */
    updateApprovalState(designSystemId: string, versionId: string, payload: DTODocumentationPageApprovalStateChangeInput): Promise<string>;
    /** Enabled or disables multibrand functionality for a specific design system
     * @param designSystem - design system to update
     * @param designSystemSwitcher - Design system switcher options
     * @returns Nothing
     */
    updateDesignSystemSwitcher(designSystem: DesignSystem, designSystemSwitcher: DesignSystemSwitcher): Promise<void>;
    /** Enabled or disables multibrand functionality for a specific design system
     * @param designSystem - design system to update
     * @param docExporterId - Design system doc exporter id
     * @returns Nothing
     */
    updateDesignSystemDocExporterId(designSystem: DesignSystem, docExporterId: string): Promise<void>;
    /** Changes documentation slug for design system
     * @param designSystem - design system to update
     * @param docUserSlug - Documentation slug
     * @returns Nothing
     */
    updateDesignSystemDocumentationSlug(designSystem: DesignSystem, docUserSlug: string): Promise<void>;
    /** Updates custom domain of a specific design system
     * @param designSystemId - ID of the design system
     * @param newDomain - new custom domain
     * @returns nothing
     */
    updateDesignSystemCustomDomain(designSystemId: string, newDomain: string): Promise<CustomDomain>;
    /** Updates design system's access mode and, if switching to invite-only, also the member list
     * @param designSystemId - ID of the design system
     * @param accessMode - new access mode
     * @param retainUserIds - which users to keep when switching to invite-only
     * @param retainInviteIds - which invites to keep when switching to invite-only
     * @returns nothing
     */
    updateDesignSystemAccessAndMemberList(designSystemId: string, accessMode: DesignSystemAccessMode, retainUserIds: Array<string>, retainInviteIds: Array<string>): Promise<void>;
    /** Updates design system's member list
     * @param designSystemId - ID of the design system
     * @param usersToInvite - Existing users to invite
     * @param invitesToInvite - Pending memberships to invite
     * @param emailsToInvite - New emails to invite
     * @param invitesToUpdate - Pending memberships to change dsRole
     * @param deleteInvitationIds - Pending memberships to delete
     * @param usersToUpdate - Existing users to change dsRole
     * @param removeUserIds - Existing users to remove
     * @returns nothing
     */
    updateDesignSystemMemberList(designSystemId: string, usersToInvite?: Array<DesignSystemUserInvitation>, invitesToInvite?: Array<DesignSystemPendingMemberInvite>, emailsToInvite?: Array<DesignSystemInvite>, invitesToUpdate?: Array<DesignSystemInviteUpdate>, deleteInvitationIds?: Array<string>, usersToUpdate?: Array<DesignSystemMemberUpdate>, removeUserIds?: Array<string>): Promise<void>;
    /** Deletes a design system. This action is irreversible, all data will be lost, and can only be performed by the admins of the workspace
     * @param designSystemId - ID of the design system
     * @returns Nothing. RIP design system.
     */
    deleteDesignSystem(designSystemId: string): Promise<void>;
    /** Deletes custom domain
     * @param designSystemId - ID of the design system
     * @returns nothing
     */
    deleteDesignSystemCustomDomain(designSystemId: string): Promise<void>;
    /** starts ssl generation for custom domain
     * @param designSystemId - ID of the design system
     * @returns nothing
     */
    startSslGenerationForCustomDomain(designSystemId: string): Promise<void>;
    getPageRedirects(designSystemId: string): Promise<{
        id?: string;
        path?: string;
        createdAt?: Date;
        updatedAt?: Date;
        designSystemId?: string;
        pagePersistentId?: string;
    }[]>;
    createPageRedirect(designSystemId: string, body: DTOPageRedirectCreateBody): Promise<void>;
    updatePageRedirect(designSystemId: string, redirectId: string, body: DTOPageRedirectUpdateBody): Promise<void>;
    deletePageRedirect(designSystemId: string, redirectId: string): Promise<void>;
}
