/** The space type value used to identify project spaces in Solr */
export declare const PROJECT_SPACE_VARIANT = "project";
/**
 * Project data type (mapped from spacer service space data).
 */
export type ProjectData = {
    /** Space UID (unique identifier) */
    uid: string;
    /** Space ID (internal id used by spacer PUT endpoint) */
    id: string;
    /** Space handle (URL-friendly slug) */
    handle: string;
    /** Project name */
    name: string;
    /** Project description */
    description: string;
    /** Creation date */
    createdAt: Date;
    /** Whether the project is public */
    isPublic: boolean;
    /** Attached agent (runtime) pod name, if any */
    attachedAgentPodName?: string;
    /** Attached agent spec ID (e.g. 'data-acquisition'), if any */
    attachedAgentSpecId?: string;
};
/**
 * Request to create a new project.
 */
export type CreateProjectRequest = {
    /** Project name */
    name: string;
    /** Project description */
    description?: string;
    /** Agent spec to attach (creates agent on project creation) */
    agentSpecId?: string;
};
/**
 * Hook to fetch user's projects (spaces with type "project").
 *
 * Uses the spacer service's spaces endpoint filtered by type.
 */
export declare function useProjects(): {
    error: Error;
    isError: true;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: true;
    isSuccess: false;
    isPlaceholderData: false;
    status: "error";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<any, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<any>;
    data: ProjectData[];
} | {
    error: null;
    isError: false;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: true;
    isPlaceholderData: false;
    status: "success";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<any, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<any>;
    data: ProjectData[];
} | {
    error: Error;
    isError: true;
    isPending: false;
    isLoading: false;
    isLoadingError: true;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "error";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<any, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<any>;
    data: ProjectData[];
} | {
    error: null;
    isError: false;
    isPending: true;
    isLoading: true;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "pending";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<any, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<any>;
    data: ProjectData[];
} | {
    error: null;
    isError: false;
    isPending: true;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "pending";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isLoading: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<any, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<any>;
    data: ProjectData[];
} | {
    isError: false;
    error: null;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: true;
    isPlaceholderData: true;
    status: "success";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<any, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<any>;
    data: ProjectData[];
};
/**
 * Hook to fetch a single project by UID.
 */
export declare function useProject(uid: string | undefined): {
    error: Error;
    isError: true;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: true;
    isSuccess: false;
    isPlaceholderData: false;
    status: "error";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("..").IAnySpace, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<import("..").IAnySpace>;
    data: ProjectData | undefined;
} | {
    error: null;
    isError: false;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: true;
    isPlaceholderData: false;
    status: "success";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("..").IAnySpace, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<import("..").IAnySpace>;
    data: ProjectData | undefined;
} | {
    error: Error;
    isError: true;
    isPending: false;
    isLoading: false;
    isLoadingError: true;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "error";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("..").IAnySpace, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<import("..").IAnySpace>;
    data: ProjectData | undefined;
} | {
    error: null;
    isError: false;
    isPending: true;
    isLoading: true;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "pending";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("..").IAnySpace, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<import("..").IAnySpace>;
    data: ProjectData | undefined;
} | {
    error: null;
    isError: false;
    isPending: true;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "pending";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isLoading: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("..").IAnySpace, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<import("..").IAnySpace>;
    data: ProjectData | undefined;
} | {
    isError: false;
    error: null;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: true;
    isPlaceholderData: true;
    status: "success";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isFetching: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    isEnabled: boolean;
    refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("..").IAnySpace, Error>>;
    fetchStatus: import("@tanstack/query-core").FetchStatus;
    promise: Promise<import("..").IAnySpace>;
    data: ProjectData | undefined;
};
/**
 * Hook to create a new project.
 * Creates a space with type "project" via the spacer service.
 */
export declare function useCreateProject(): {
    createProject: (request: CreateProjectRequest) => Promise<any>;
    data: undefined;
    variables: undefined;
    error: null;
    isError: false;
    isIdle: true;
    isPending: false;
    isSuccess: false;
    status: "idle";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
} | {
    createProject: (request: CreateProjectRequest) => Promise<any>;
    data: undefined;
    variables: {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    };
    error: null;
    isError: false;
    isIdle: false;
    isPending: true;
    isSuccess: false;
    status: "pending";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
} | {
    createProject: (request: CreateProjectRequest) => Promise<any>;
    data: undefined;
    error: Error;
    variables: {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    };
    isError: true;
    isIdle: false;
    isPending: false;
    isSuccess: false;
    status: "error";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
} | {
    createProject: (request: CreateProjectRequest) => Promise<any>;
    data: any;
    error: null;
    variables: {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    };
    isError: false;
    isIdle: false;
    isPending: false;
    isSuccess: true;
    status: "success";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, {
        space: Partial<import("..").IAnySpace>;
        organization?: import("..").IAnyOrganization;
    }, unknown>;
};
/**
 * Hook to update a project (e.g. persist the attached agent pod name).
 * Uses the spacer PUT endpoint via useUpdateSpace.
 */
export declare function useUpdateProject(): {
    assignAgent: (project: ProjectData, agentPodName: string, agentSpecId?: string) => Promise<any>;
    unassignAgent: (project: ProjectData) => Promise<any>;
    renameProject: (project: ProjectData, newName: string) => Promise<any>;
    data: undefined;
    variables: undefined;
    error: null;
    isError: false;
    isIdle: true;
    isPending: false;
    isSuccess: false;
    status: "idle";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
} | {
    assignAgent: (project: ProjectData, agentPodName: string, agentSpecId?: string) => Promise<any>;
    unassignAgent: (project: ProjectData) => Promise<any>;
    renameProject: (project: ProjectData, newName: string) => Promise<any>;
    data: undefined;
    variables: Partial<import("..").IAnySpace> & Record<string, unknown>;
    error: null;
    isError: false;
    isIdle: false;
    isPending: true;
    isSuccess: false;
    status: "pending";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
} | {
    assignAgent: (project: ProjectData, agentPodName: string, agentSpecId?: string) => Promise<any>;
    unassignAgent: (project: ProjectData) => Promise<any>;
    renameProject: (project: ProjectData, newName: string) => Promise<any>;
    data: undefined;
    error: Error;
    variables: Partial<import("..").IAnySpace> & Record<string, unknown>;
    isError: true;
    isIdle: false;
    isPending: false;
    isSuccess: false;
    status: "error";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
} | {
    assignAgent: (project: ProjectData, agentPodName: string, agentSpecId?: string) => Promise<any>;
    unassignAgent: (project: ProjectData) => Promise<any>;
    renameProject: (project: ProjectData, newName: string) => Promise<any>;
    data: any;
    error: null;
    variables: Partial<import("..").IAnySpace> & Record<string, unknown>;
    isError: false;
    isIdle: false;
    isPending: false;
    isSuccess: true;
    status: "success";
    mutate: import("@tanstack/react-query").UseMutateFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
    reset: () => void;
    context: unknown;
    failureCount: number;
    failureReason: Error | null;
    isPaused: boolean;
    submittedAt: number;
    mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<any, Error, Partial<import("..").IAnySpace> & Record<string, unknown>, unknown>;
};
/**
 * Hook to refresh the projects list.
 */
export declare function useRefreshProjects(): import("@tanstack/react-query").UseMutationResult<any, Error, void, unknown>;
/**
 * Hook to delete a project (space) and all its contents.
 */
export declare function useDeleteProject(): import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>;
export type { ProjectDefaultItems } from '../models/ProjectDTO';
/**
 * Hook to fetch the default notebook and document UIDs for a project.
 *
 * This calls the spacer `GET /spaces/:uid/default-items` endpoint which
 * returns the UID of the first notebook and first document in the space.
 */
export declare function useProjectDefaultItems(projectUid: string | undefined): import("@tanstack/react-query").UseQueryResult<{
    defaultNotebookUid: string | null;
    defaultDocumentUid: string | null;
}, Error>;
