import type { OpenBlock, FeedAskStats } from './feed/feed.js';
import type { Classification } from './ask-classifier.js';
import type { ActiveSession } from './session/active.js';
import type { SessionMeta } from './session/types.js';
export interface FeedSessionSignal {
    sessionId?: string;
    mailboxId?: string;
    kind?: string;
    host?: string;
    context?: ActiveSession['context'];
    runtime?: string;
    pid?: number;
    cwd?: string;
    project?: string;
    startedAtMs?: number;
    status?: ActiveSession['status'];
    tokPerSec?: number;
    costUsd?: number;
    durationMs?: number;
    cloudProvider?: string;
    cloudTaskId?: string;
}
export interface RankedFeedBlock extends OpenBlock {
    delayRank: NonNullable<OpenBlock['delayRank']>;
}
export declare function buildSessionSignals(active: ActiveSession[], metas?: SessionMeta[]): FeedSessionSignal[];
export declare function decisionIrreducibility(c: Classification): number;
export declare function burnUsdPerHour(signal: FeedSessionSignal | undefined, block: OpenBlock): number;
export declare function rankFeedBlocks(blocks: OpenBlock[], signals?: FeedSessionSignal[], now?: Date): RankedFeedBlock[];
export declare function recentAskCount(stats: FeedAskStats, now?: Date): number;
export declare function needyControlCards(stats: FeedAskStats[], signals?: FeedSessionSignal[], now?: Date, threshold?: number): OpenBlock[];
export declare function runawayControlCards(signals: FeedSessionSignal[], now?: Date): OpenBlock[];
export declare function synthesizeControlCards(signals: FeedSessionSignal[], stats: FeedAskStats[], now?: Date): OpenBlock[];
