import type { ExtensionContext } from '../extensions/types.js';
import { runForkedAgent } from '../session/forked-agent.js';
import { type ProposalRoots } from './proposal-fs.js';
type RunForkedAgentFn = typeof runForkedAgent;
export interface SkillProposalBackgroundOptions {
    roots?: ProposalRoots;
    runForkedAgent?: RunForkedAgentFn;
}
/** Return the process-wide singleton skill-proposal background runner, creating it on first use. */
export declare function getSharedSkillProposalBackground(): SkillProposalBackground;
export declare class SkillProposalBackground {
    private running;
    private abortController;
    private scanToken;
    private readonly roots;
    private readonly runForkedAgent;
    /** Construct a runner with optional overridden roots and forked-agent runner (for tests). */
    constructor(options?: SkillProposalBackgroundOptions);
    /** Ensure proposal roots exist on disk and emit the initial status count. */
    initialize(): void;
    /** Abort any in-flight scan and reset the runner so a new session can start fresh. */
    reset(): void;
    /** Kick off a scan if the daily cooldown has elapsed and none is currently running. */
    startDailyScanIfDue(ctx: ExtensionContext): void;
    /** Begin a user-initiated scan; returns false if a scan is already running or no model is available. */
    startManualScan(ctx: ExtensionContext, manualRequest?: string): boolean;
    /** Mark a scan running and delegate to executeScan; clears the running flag in `finally`. */
    private runScan;
    /** Run the forked skill-proposal agent against recent session JSONLs and emit status events. */
    private executeScan;
}
export {};
//# sourceMappingURL=background.d.ts.map