import { PaginationConfig } from "../../types/utility.js";
import { AgentsRunDatabaseClient } from "../../db/runtime/runtime-client.js";
import { ProjectMetadataInsert, ProjectMetadataSelect } from "../../types/entities.js";

//#region src/data-access/runtime/projects.d.ts
interface ProjectMetadataPaginatedResult {
  data: ProjectMetadataSelect[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    pages: number;
  };
}
/**
 * Get a project from the runtime DB by ID
 */
declare const getProjectMetadata: (db: AgentsRunDatabaseClient) => (params: {
  tenantId: string;
  projectId: string;
}) => Promise<ProjectMetadataSelect | null>;
/**
 * List all runtimeProjects for a tenant from the runtime DB
 */
declare const listProjectsMetadata: (db: AgentsRunDatabaseClient) => (params: {
  tenantId: string;
}) => Promise<ProjectMetadataSelect[]>;
/**
 * List runtimeProjects with pagination from the runtime DB
 * @param projectIds - Optional array of project IDs to filter by. If undefined, returns all projects.
 */
declare const listProjectsMetadataPaginated: (db: AgentsRunDatabaseClient) => (params: {
  tenantId: string;
  pagination?: PaginationConfig;
  projectIds?: string[];
}) => Promise<ProjectMetadataPaginatedResult>;
/**
 * Create a project in the runtime DB
 */
declare const createProjectMetadata: (db: AgentsRunDatabaseClient) => (params: ProjectMetadataInsert) => Promise<ProjectMetadataSelect>;
/**
 * Delete a project from the runtime DB
 */
declare const deleteProjectMetadata: (db: AgentsRunDatabaseClient) => (params: {
  tenantId: string;
  projectId: string;
}) => Promise<boolean>;
/**
 * Check if a project exists in the runtime DB
 */
declare const projectsMetadataExists: (db: AgentsRunDatabaseClient) => (params: {
  tenantId: string;
  projectId: string;
}) => Promise<boolean>;
/**
 * Count runtimeProjects for a tenant
 */
declare const countProjectsInRuntime: (db: AgentsRunDatabaseClient) => (params: {
  tenantId: string;
}) => Promise<number>;
//#endregion
export { ProjectMetadataPaginatedResult, countProjectsInRuntime, createProjectMetadata, deleteProjectMetadata, getProjectMetadata, listProjectsMetadata, listProjectsMetadataPaginated, projectsMetadataExists };