import { DTODesignSystem } from "@supernova-studio/client";
import { DesignSystemRole } from "../enums/SDKDesignSystemRole";
export type DesignSystemSwitcher = {
    isEnabled: boolean;
    designSystemIds: Array<string>;
};
export type DesignSystemAccessMode = "Open" | "InviteOnly";
export type DesignSystemTransportModel = Pick<DesignSystem, "id" | "name" | "description" | "isPublic" | "isMultiBrand" | "documentationSlug" | "documentationUserSlug" | "documentationExporterId" | "designSystemSwitcher" | "workspaceId">;
export declare class DesignSystem {
    /** Unique identifier of design system */
    id: string;
    /** Unique identifier of workspace that contains the design system */
    workspaceId: string;
    /** Design system name */
    name: string;
    /** Design system description */
    description: string;
    /** Identifier of the uploaded icon file. Null when no icon is set */
    iconFileId: string | null;
    /** Public URL of the design system icon. Null when no icon is set */
    iconUrl: string | null;
    /** If enabled, parts of the design system can be accessed by public (for example, documentation site) */
    isPublic: boolean;
    /** If set, signals that multibrand functionality is enabled for this design system */
    isMultiBrand: boolean;
    /** If set, signals that approval feature is enabled */
    isApprovalFeatureEnabled: boolean;
    /** If set, restricts publishing to only pages with ready to publish state */
    approvalRequiredForPublishing: boolean;
    /** Unique identifier of exporter package used for the documentation */
    documentationExporterId: string;
    /** DocumentationLegacy URL slug */
    documentationSlug: string;
    /** DocumentationLegacy URL slug - user override */
    documentationUserSlug: string | null;
    /** Binding multiple design systems together */
    designSystemSwitcher: DesignSystemSwitcher;
    /** Access mode of the design system */
    accessMode: DesignSystemAccessMode;
    /** Effective role of the user in the design system.
     * Is `null` the DS role is inherited from the WS. */
    effectiveRole: DesignSystemRole | null;
    /** Flag which determines if the design system is available to the user.
     * If `false` then the user doesn't have access to the design system, but knows about its existence (e.g. Owners). */
    isAvailableToUser: boolean;
    /** Unique identifier of the shared draft version of the design system */
    sharedDraftId: string;
    constructor(model: Omit<DTODesignSystem, "isPublic"> & {
        isPublic: boolean;
    });
    /** Constructs representation that can be used to transport the instantiated object as JSON, for example for SSR <> Client use-cases. Reconstruct to class instance using `fromTransport` */
    toTransport(): DesignSystemTransportModel;
    /** Reconstructs class from the transport model */
    static fromTransport(model: DesignSystemTransportModel): DesignSystem;
}
