import type { ApiRoute } from '@mastra/core/server'; import type { SessionRetirementCoordinator } from '../sandbox/session-retirement.js'; import type { FactoryProjectsStorage } from '../storage/domains/projects/base.js'; import type { ProjectRepository, SourceControlRepository, SourceControlStorage } from '../storage/domains/source-control/base.js'; import type { WorkItemsStorage } from '../storage/domains/work-items/base.js'; import type { RouteDependencies } from './route.js'; import { Route } from './route.js'; export interface ProjectRoutesDeps extends RouteDependencies { /** Factory projects domain backing the CRUD surface. */ projects: FactoryProjectsStorage; /** Source-control domain the connection/repository routes fan out over. */ sourceControl: SourceControlStorage; /** Integration ids allowed as source-control connection targets. */ versionControlIntegrationIds?: string[]; /** Validate and persist a repository selected from a provider-backed listing. */ resolveRepository?: (input: { integrationId: string; orgId: string; installationId: string; externalId: string; slug: string; }) => Promise; /** * Fire-and-forget hook invoked after a repository is linked to a project — * kicks the initial base-checkpoint build. Must never throw. */ onProjectRepositoryLinked?: (args: { orgId: string; projectRepository: ProjectRepository; }) => void; /** Shared lifecycle for retiring sessions before their owning records are deleted. */ sessionRetirement?: SessionRetirementCoordinator; /** Work-items domain — retired sessions drop the refs work items hold on them. */ workItems?: Pick; } export declare class ProjectRoutes extends Route { #private; constructor(deps: ProjectRoutesDeps); routes(): ApiRoute[]; } //# sourceMappingURL=projects.d.ts.map