import type { Kysely } from "kysely";
import type { EnvironmentStatus, EnvironmentPods, EnvironmentEvents, ObservabilityDB } from "./db/schema.js";
/**
 * Map the chart's `app.kubernetes.io/component` label to the
 * TenantService enum used by the GraphQL schema. Unrecognised
 * components (clint agents, registry, helper pods, pre-chart legacy
 * pods without the label) collapse to OTHER.
 */
export declare function classifyPodService(component: string | null | undefined): string;
export declare function upsertEnvironmentStatus(db: Kysely<ObservabilityDB>, row: EnvironmentStatus): Promise<void>;
export declare function upsertPod(db: Kysely<ObservabilityDB>, row: EnvironmentPods): Promise<void>;
export declare function insertEvent(db: Kysely<ObservabilityDB>, row: EnvironmentEvents): Promise<void>;
export declare function pruneEvents(db: Kysely<ObservabilityDB>, tenantId: string, keepCount?: number): Promise<void>;
export interface ReactorClient {
    addActions(documentId: string, actions: Array<{
        type: string;
        input: Record<string, unknown>;
    }>): Promise<void>;
}
export interface WatcherDeps {
    db: Kysely<ObservabilityDB>;
    /** Kysely handle for the processor's `vetra-cloud-environments` namespace —
     *  used to resolve each tenant's configured `customDomain` so the domain
     *  check targets the right ingress instead of guessing by name. */
    envDb: Kysely<any>;
    k8sToken: string;
    k8sApiUrl?: string;
    reactorClient?: ReactorClient;
    /** Map of tenantId → documentId for dispatching document actions */
    tenantDocumentMap?: Map<string, string>;
}
export interface WatcherHandle {
    stop(): void;
}
export declare function startWatchers(deps: WatcherDeps): WatcherHandle;
//# sourceMappingURL=watchers.d.ts.map