import type { DatalayerClient } from '../index';
import { ItemDTO } from './ItemDTO';
/**
 * Represents a Jupyter notebook document
 * @interface NotebookData
 */
export interface NotebookData {
    id: string;
    uid: string;
    name_t: string;
    description_t: string;
    type_s: string;
    notebook_extension_s: string;
    s3_path_s: string;
    s3_url_s: string;
    cdn_url_s: string;
}
/**
 * Stable public interface for Notebook data.
 * This is the contract that Client consumers can rely on.
 * The raw API may change, but this interface remains stable.
 */
export interface NotebookJSON {
    /** uuid of the notebook */
    id: string;
    /** ulid for of the notebook */
    uid: string;
    /** Name of the notebook */
    name: string;
    /** Description of the notebook */
    description: string;
    /** Type of notebook */
    type: string;
    /** File extension of the notebook */
    extension: string;
    /** CDN URL for accessing the notebook */
    cdnUrl: string;
}
/**
 * Notebook domain model that extends the base Item class.
 * Provides notebook-specific functionality for managing Jupyter notebooks.
 *
 * @example
 * ```typescript
 * const notebook = await client.createNotebook(formData);
 * const kernelSpec = await notebook.getKernelSpec();
 * ```
 */
export declare class NotebookDTO extends ItemDTO<NotebookData> {
    /**
     * Create a Notebook instance.
     *
     * @param data - Notebook data from API
     * @param client - Client instance
     */
    constructor(data: NotebookData, client: DatalayerClient);
    /** Document type identifier. */
    get type(): string;
    /** The cached name of the notebook. */
    get name(): string;
    /** The cached content. */
    get content(): any;
    /** Get the current name from API. */
    getName(): Promise<string>;
    /** Get when the notebook was last updated from API. */
    getUpdatedAt(): Promise<Date>;
    /** Update the notebook. */
    update(name?: string, description?: string): Promise<this>;
    /** File path within the space. */
    get path(): string;
    /** Version number. */
    get version(): number;
    /** Notebook metadata. */
    get metadata(): Record<string, any>;
    /** Kernel specification (cached). */
    get kernelSpec(): any;
    /** Description of the notebook. */
    get description(): string;
    /** Get the notebook extension. */
    get extension(): string;
    /**
     * Get notebook data in camelCase format.
     * Returns only the core fields that consumers need.
     * This provides a stable interface regardless of API changes.
     *
     * @returns Core notebook data with camelCase properties
     */
    toJSON(): NotebookJSON;
    /**
     * Get the raw notebook data exactly as received from the API.
     * This preserves the original snake_case naming from the API response.
     *
     * @returns Raw notebook data from API
     */
    rawData(): NotebookData;
}
