import type { KeeperDb } from "./pool-db.js";
import type { CreatedStudioEnv } from "./create-env.js";
import type { PoolConfig } from "./config.js";
export interface KeeperLogger {
    info(m: string): void;
    warn(m: string): void;
    error(m: string): void;
}
export interface KeeperDeps {
    db: KeeperDb;
    createEnv: () => Promise<CreatedStudioEnv>;
    /**
     * Fully delete an env document (via `reactorClient.deleteDocument`). The
     * delete subscription then tears down the read-model row + gitops tenant dir,
     * and the namespace reaper releases the namespace + its TLS cert. Used for
     * recycling stale-version envs and cleaning up failed-seed orphans — NOT a
     * `terminateEnvironment` status flip, which leaves the pod + cert running.
     */
    deleteEnv: (documentId: string) => Promise<void>;
    cfg: PoolConfig;
    logger: KeeperLogger;
}
/**
 * In-process worker that keeps `cfg.size` warm envs AVAILABLE. Runs inside the
 * Switchboard reactor (a subgraph starts it in onSetup), so it creates envs via
 * the reactor client directly — no wallet, no separate service.
 */
export declare class PoolKeeper {
    private readonly d;
    private readonly intervalMs;
    private timer;
    constructor(d: KeeperDeps, intervalMs?: number);
    start(): void;
    stop(): void;
    reconcileOnce(): Promise<void>;
}
//# sourceMappingURL=keeper.d.ts.map