import type { Express } from 'express';
import type { SkillInfo } from './skills.js';
import type { DesignSystemSummary } from './design-systems.js';
import type { RoutineRoutesService } from './routine-routes.js';
export interface HttpDeps {
    createSseResponse: (...args: any[]) => any;
    isLocalSameOrigin: (...args: any[]) => boolean;
    requireLocalDaemonRequest: (...args: any[]) => any;
    resolvedPortRef: {
        current: number;
    };
    sendApiError: (...args: any[]) => any;
    sendLiveArtifactRouteError: (...args: any[]) => any;
    sendMulterError: (...args: any[]) => any;
}
export interface PathDeps {
    ARTIFACTS_DIR: string;
    BUNDLED_PETS_DIR: string;
    DESIGN_SYSTEMS_DIR: string;
    DESIGN_TEMPLATES_DIR: string;
    OD_BIN: string;
    PROJECT_ROOT: string;
    PROJECTS_DIR: string;
    PROMPT_TEMPLATES_DIR: string;
    RUNTIME_DATA_DIR: string;
    RUNTIME_DATA_DIR_CANONICAL: string;
    SKILLS_DIR: string;
    USER_DESIGN_SYSTEMS_DIR: string;
    USER_DESIGN_TEMPLATES_DIR: string;
    USER_SKILLS_DIR: string;
}
export interface ResourceDeps {
    listAllDesignSystems: () => Promise<Array<DesignSystemSummary & {
        source?: string;
    }>>;
    listAllSkills: () => Promise<Array<SkillInfo & {
        source?: string;
    }>>;
    listAllDesignTemplates: () => Promise<Array<SkillInfo & {
        source?: string;
    }>>;
    listAllSkillLikeEntries: () => Promise<Array<SkillInfo & {
        source?: string;
    }>>;
    mimeFor: (filePath: string) => string;
}
export interface RoutineDeps {
    routineService: RoutineRoutesService;
}
export interface TelemetryDeps {
    reportFinalizedMessage: (saved: any, body?: any) => void;
}
export interface ServerContext {
    db: any;
    design: any;
    http: HttpDeps;
    paths: PathDeps;
    ids: any;
    uploads: any;
    node: any;
    projectStore: any;
    projectFiles: any;
    conversations: any;
    templates: any;
    status: any;
    events: any;
    imports: any;
    exports: any;
    artifacts: any;
    documents: any;
    auth: any;
    liveArtifacts: any;
    deploy: any;
    media: any;
    appConfig: any;
    orbit: any;
    nativeDialogs: any;
    research: any;
    mcp: any;
    resources: ResourceDeps;
    routines: RoutineDeps;
    telemetry?: TelemetryDeps;
    validation: any;
    finalize: any;
    chat: any;
    agents: any;
    critique: any;
    lifecycle?: {
        isDaemonShuttingDown: () => boolean;
    };
}
export type RouteDeps<K extends keyof ServerContext> = Pick<ServerContext, K>;
export type RouteRegistrar = (app: Express, ctx: ServerContext) => void;
