/**
 * Project domain model for the Datalayer Client.
 *
 * Projects are spaces with variant='project' that can have attached agents.
 * This is a standalone model (no inheritance from SpaceDTO) to avoid
 * circular dependency issues in the module graph.
 *
 * @module models/ProjectDTO
 */
import type { SpaceData } from './SpaceDTO';
/**
 * Stable public interface for Project data.
 */
export interface ProjectJSON {
    uid: string;
    id: string;
    handle: string;
    name: string;
    description: string;
    variant: string;
    isPublic: boolean;
    createdAt: string;
    attachedAgentPodName: string | null;
    attachedAgentSpecId: string | null;
    attachedAgentGivenName: string | null;
    hasAgent: boolean;
}
/**
 * Default items (notebook UID and document UID) for a project.
 */
export interface ProjectDefaultItems {
    defaultNotebookUid: string | null;
    defaultDocumentUid: string | null;
}
/**
 * Project domain model wrapping raw space data with project-specific accessors.
 *
 * @example
 * ```typescript
 * const projects = await client.getProjects();
 * const project = projects[0];
 * console.log(project.hasAgent); // false
 * await client.assignAgent(project.uid, 'my-agent-pod');
 * ```
 */
export declare class ProjectDTO {
    private _data;
    private _deleted;
    private _createdAt;
    constructor(data: SpaceData);
    /** Unique identifier for the project. */
    get uid(): string;
    /** Internal numeric/string ID from the backend. Falls back to UID when not present. SDK client methods accept `uid` directly. */
    get id(): string;
    /** URL-friendly handle. */
    get handle(): string;
    /** Project name. */
    get name(): string;
    /** Project description. */
    get description(): string;
    /** Space variant (should be 'project'). */
    get variant(): string;
    /** Whether the project is public. */
    get isPublic(): boolean;
    /** Creation date (stable across calls). */
    get createdAt(): Date;
    /** Attached agent runtime pod name, if any. */
    get attachedAgentPodName(): string | undefined;
    /** Attached agent spec ID (e.g., 'data-acquisition'), if any. */
    get attachedAgentSpecId(): string | undefined;
    /** Human-readable name of the attached agent runtime, if any. */
    get attachedAgentGivenName(): string | undefined;
    /** Whether an agent is currently attached to this project. */
    get hasAgent(): boolean;
    /** Mark this project as deleted. */
    markDeleted(): void;
    /** Whether this project has been deleted. */
    get isDeleted(): boolean;
    /**
     * Get project data in camelCase format.
     * @returns Project data with camelCase properties
     */
    toJSON(): ProjectJSON;
    /** Get raw space data as received from the API. */
    rawData(): SpaceData;
    /** String representation of the project. */
    toString(): string;
    private _checkDeleted;
}
