/** Database methods needed by the maintenance graph (includes introducer discovery). */ export interface MaintenanceGraphDatabase { getOpportunitiesForUser(userId: string, options?: { limit?: number; }): Promise; status: string; [key: string]: unknown; }>>; getActiveIntents(userId: string): Promise>; /** Get the user's personal network ID (for introducer discovery). */ getPersonalIndexId(userId: string): Promise; /** Get contacts with intent freshness data from a personal network (for introducer discovery). */ getContactsWithIntentFreshness(personalIndexId: string, ownerId: string, limit: number): Promise>; } /** Cache methods needed by the maintenance graph. */ export interface MaintenanceGraphCache { get(key: string): Promise; set(key: string, value: unknown, options?: { ttl?: number; }): Promise; } /** Queue methods needed by the maintenance graph. */ export interface MaintenanceGraphQueue { addJob(data: { intentId: string; userId: string; indexIds?: string[]; contactUserId?: string; }, options?: { priority?: number; jobId?: string; }): Promise; } /** * Factory for the Maintenance Graph. * Accepts database, cache, and queue dependencies via constructor injection. */ export declare class MaintenanceGraphFactory { private database; private cache; private queue; constructor(database: MaintenanceGraphDatabase, cache: MaintenanceGraphCache, queue: MaintenanceGraphQueue); /** Compile and return the maintenance graph. */ createGraph(): import("@langchain/langgraph").CompiledStateGraph<{ userId: string; activeIntents: { id: string; payload: string; }[]; currentOpportunities: import("../index.js").Opportunity[]; expiredCount: number; lastRediscoveryAt: number | null; healthResult: import("../opportunity/radar/radar.health.js").RadarHealthResult | null; rediscoveryJobsEnqueued: number; connectorFlowCount: number; introducerDiscoveryJobsEnqueued: number; error: string | undefined; }, { userId?: string | import("@langchain/langgraph").OverwriteValue | undefined; activeIntents?: { id: string; payload: string; }[] | import("@langchain/langgraph").OverwriteValue<{ id: string; payload: string; }[]> | undefined; currentOpportunities?: import("../index.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue | undefined; expiredCount?: number | import("@langchain/langgraph").OverwriteValue | undefined; lastRediscoveryAt?: number | import("@langchain/langgraph").OverwriteValue | null | undefined; healthResult?: import("../opportunity/radar/radar.health.js").RadarHealthResult | import("@langchain/langgraph").OverwriteValue | null | undefined; rediscoveryJobsEnqueued?: number | import("@langchain/langgraph").OverwriteValue | undefined; connectorFlowCount?: number | import("@langchain/langgraph").OverwriteValue | undefined; introducerDiscoveryJobsEnqueued?: number | import("@langchain/langgraph").OverwriteValue | undefined; error?: string | import("@langchain/langgraph").OverwriteValue | undefined; }, "__start__" | "loadCurrentRadar" | "scoreRadarHealth" | "rediscover" | "introducerDiscovery" | "logMaintenance", { userId: import("@langchain/langgraph").BaseChannel, unknown>; activeIntents: import("@langchain/langgraph").BaseChannel<{ id: string; payload: string; }[], { id: string; payload: string; }[] | import("@langchain/langgraph").OverwriteValue<{ id: string; payload: string; }[]>, unknown>; currentOpportunities: import("@langchain/langgraph").BaseChannel, unknown>; expiredCount: import("@langchain/langgraph").BaseChannel, unknown>; lastRediscoveryAt: import("@langchain/langgraph").BaseChannel | null, unknown>; healthResult: import("@langchain/langgraph").BaseChannel | null, unknown>; rediscoveryJobsEnqueued: import("@langchain/langgraph").BaseChannel, unknown>; connectorFlowCount: import("@langchain/langgraph").BaseChannel, unknown>; introducerDiscoveryJobsEnqueued: import("@langchain/langgraph").BaseChannel, unknown>; error: import("@langchain/langgraph").BaseChannel | undefined, unknown>; }, { userId: import("@langchain/langgraph").BaseChannel, unknown>; activeIntents: import("@langchain/langgraph").BaseChannel<{ id: string; payload: string; }[], { id: string; payload: string; }[] | import("@langchain/langgraph").OverwriteValue<{ id: string; payload: string; }[]>, unknown>; currentOpportunities: import("@langchain/langgraph").BaseChannel, unknown>; expiredCount: import("@langchain/langgraph").BaseChannel, unknown>; lastRediscoveryAt: import("@langchain/langgraph").BaseChannel | null, unknown>; healthResult: import("@langchain/langgraph").BaseChannel | null, unknown>; rediscoveryJobsEnqueued: import("@langchain/langgraph").BaseChannel, unknown>; connectorFlowCount: import("@langchain/langgraph").BaseChannel, unknown>; introducerDiscoveryJobsEnqueued: import("@langchain/langgraph").BaseChannel, unknown>; error: import("@langchain/langgraph").BaseChannel | undefined, unknown>; }, import("@langchain/langgraph").StateDefinition, { loadCurrentRadar: import("@langchain/langgraph").UpdateType<{ userId: import("@langchain/langgraph").BaseChannel, unknown>; activeIntents: import("@langchain/langgraph").BaseChannel<{ id: string; payload: string; }[], { id: string; payload: string; }[] | import("@langchain/langgraph").OverwriteValue<{ id: string; payload: string; }[]>, unknown>; currentOpportunities: import("@langchain/langgraph").BaseChannel, unknown>; expiredCount: import("@langchain/langgraph").BaseChannel, unknown>; lastRediscoveryAt: import("@langchain/langgraph").BaseChannel | null, unknown>; healthResult: import("@langchain/langgraph").BaseChannel | null, unknown>; rediscoveryJobsEnqueued: import("@langchain/langgraph").BaseChannel, unknown>; connectorFlowCount: import("@langchain/langgraph").BaseChannel, unknown>; introducerDiscoveryJobsEnqueued: import("@langchain/langgraph").BaseChannel, unknown>; error: import("@langchain/langgraph").BaseChannel | undefined, unknown>; }>; scoreRadarHealth: { healthResult?: undefined; connectorFlowCount?: undefined; error?: undefined; } | { healthResult: import("../opportunity/radar/radar.health.js").RadarHealthResult; connectorFlowCount: number; error?: undefined; } | { error: string; healthResult?: undefined; connectorFlowCount?: undefined; }; rediscover: { rediscoveryJobsEnqueued: number; error?: undefined; } | { error: string; rediscoveryJobsEnqueued?: undefined; }; introducerDiscovery: { introducerDiscoveryJobsEnqueued?: undefined; } | { introducerDiscoveryJobsEnqueued: number; }; logMaintenance: {}; }, unknown, unknown, []>; }