import type { UpdateSpaceRequest } from '../../models/SpaceDTO';
import type { Constructor } from '../utils/mixins';
import { NotebookDTO } from '../../models/NotebookDTO';
import { LexicalDTO } from '../../models/LexicalDTO';
import { SpaceDTO } from '../../models/SpaceDTO';
import { ProjectDTO, type ProjectDefaultItems } from '../../models/ProjectDTO';
import { HealthCheck } from '../../models/HealthCheck';
/** Options for content loading with CDN support. */
export interface ContentLoadingOptions {
    /** Whether to try CDN first before API (default: true) */
    preferCDN?: boolean;
    /** CDN base URL (default: https://cdn.datalayer.run) */
    cdnBaseUrl?: string;
}
/** Spacer mixin providing workspace and content management. */
export declare function SpacerMixin<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /**
         * Get all workspaces for the authenticated user.
         * @returns Array of Space instances
         */
        getMySpaces(): Promise<SpaceDTO[]>;
        /**
         * Create a new workspace.
         * @param name - Space name
         * @param description - Space description
         * @param variant - Space variant type
         * @param spaceHandle - Unique handle for the space
         * @param organizationId - Organization ID
         * @param seedSpaceId - Seed space ID for initialization
         * @param isPublic - Whether the space is public
         * @returns Created Space instance
         */
        createSpace(name: string, description: string, variant: string, spaceHandle: string, organizationId: string, seedSpaceId: string, isPublic: boolean): Promise<SpaceDTO>;
        /**
         * Create a new notebook.
         * @param spaceId - ID of the space to create the notebook in
         * @param name - Name of the notebook
         * @param description - Description of the notebook
         * @param file - Optional file for notebook content
         * @returns Created Notebook instance
         */
        createNotebook(spaceId: string, name: string, description: string, file?: File | Blob): Promise<NotebookDTO>;
        /**
         * Get a notebook by ID.
         * @param id - Notebook ID
         * @returns Notebook instance
         */
        getNotebook(id: string): Promise<NotebookDTO>;
        /**
         * Update a notebook.
         * @param id - Notebook ID
         * @param name - Optional new name for the notebook
         * @param description - Optional new description for the notebook
         * @returns Updated Notebook instance
         */
        updateNotebook(id: string, name?: string, description?: string): Promise<NotebookDTO>;
        /**
         * Create a new lexical document.
         * @param spaceId - ID of the space to create the lexical document in
         * @param name - Name of the lexical document
         * @param description - Description of the lexical document
         * @param file - Optional file for document content
         * @returns Created Lexical instance
         */
        createLexical(spaceId: string, name: string, description: string, file?: File | Blob): Promise<LexicalDTO>;
        /**
         * Get a lexical document by ID.
         * @param id - Document ID
         * @returns Lexical instance
         */
        getLexical(id: string): Promise<LexicalDTO>;
        /**
         * Update a lexical document.
         * @param id - Document ID
         * @param name - Optional new name for the lexical document
         * @param description - Optional new description for the lexical document
         * @returns Updated Lexical instance
         */
        updateLexical(id: string, name?: string, description?: string): Promise<LexicalDTO>;
        /**
         * Get the items of a space as model instances.
         * @param spaceId - Space ID
         * @returns Array of Notebook and Lexical model instances
         */
        getSpaceItems(spaceId: string): Promise<(NotebookDTO | LexicalDTO)[]>;
        /**
         * Get a single item from a space.
         * @param itemId - Item ID to retrieve
         * @returns Notebook or Lexical model instance
         * @throws Error if item not found
         */
        getSpaceItem(itemId: string): Promise<NotebookDTO | LexicalDTO>;
        /**
         * Delete an item from a space.
         * @param itemId - Item ID to delete
         * @throws Error if deletion fails
         */
        deleteSpaceItem(itemId: string): Promise<void>;
        getContent(itemId: string): Promise<any>;
        /**
         * Check the health status of the Spacer service.
         * Performs a lightweight check to verify service accessibility.
         *
         * @returns Health check result with status and response time
         */
        checkSpacerHealth(): Promise<HealthCheck>;
        /**
         * Get collaboration session ID for a document
         */
        getCollaborationSessionId(documentId: string): Promise<string>;
        /**
         * Get a space by UID.
         * @param uid - Space UID
         * @returns Space instance
         */
        getSpace(uid: string): Promise<SpaceDTO>;
        /**
         * Update a space (owner updating their own space).
         * @param uid - Space UID
         * @param data - Update data (supports arbitrary Solr fields)
         * @returns Updated Space instance
         */
        updateSpace(uid: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
        /**
         * Update a user-specific space (e.g., org admin context).
         * @param uid - Space UID
         * @param userId - User ID
         * @param data - Update data (supports arbitrary Solr fields)
         * @returns Updated Space instance
         */
        updateUserSpace(uid: string, userId: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
        /**
         * Delete a space and all its contents.
         * @param uid - Space UID
         */
        deleteSpace(uid: string): Promise<void>;
        /**
         * Make a space public.
         * @param uid - Space UID
         * @returns Updated Space instance
         */
        makeSpacePublic(uid: string): Promise<SpaceDTO>;
        /**
         * Make a space private.
         * @param uid - Space UID
         * @returns Updated Space instance
         */
        makeSpacePrivate(uid: string): Promise<SpaceDTO>;
        /**
         * Export a space and its contents.
         * @param uid - Space UID
         * @returns Export data
         */
        exportSpace(uid: string): Promise<any>;
        /**
         * Clone a notebook.
         * @param id - Notebook ID to clone
         * @returns Cloned Notebook instance
         */
        cloneNotebook(id: string): Promise<NotebookDTO>;
        /**
         * Clone a lexical document.
         * @param id - Document ID to clone
         * @returns Cloned Lexical instance
         */
        cloneLexical(id: string): Promise<LexicalDTO>;
        /**
         * Get all projects for the authenticated user.
         * Projects are spaces with variant='project'.
         * @returns Array of Project instances
         */
        getProjects(): Promise<ProjectDTO[]>;
        /**
         * Get a project by UID.
         * @param uid - Project UID
         * @returns Project instance
         */
        getProject(uid: string): Promise<ProjectDTO>;
        /**
         * Create a new project.
         * @param name - Project name
         * @param description - Project description
         * @returns Created Project instance
         */
        createProject(name: string, description?: string): Promise<ProjectDTO>;
        /**
         * Update a project.
         * @param uid - Project UID
         * @param data - Update data (supports arbitrary Solr fields)
         * @returns Updated Project instance
         */
        updateProject(uid: string, data: UpdateSpaceRequest): Promise<ProjectDTO>;
        /**
         * Rename a project.
         * @param uid - Project UID
         * @param newName - New project name
         * @param description - Project description to preserve.
         * @param userId - Authenticated user ID for user-scoped update.
         * @returns Updated Project instance
         */
        renameProject(uid: string, newName: string, description?: string): Promise<ProjectDTO>;
        /**
         * Get default items (notebook UID and document UID) for a project.
         * @param uid - Project UID
         * @returns Default notebook and document UIDs
         */
        getProjectDefaultItems(uid: string): Promise<ProjectDefaultItems>;
    };
} & TBase;
