import { type OpenBlock, type AnswerRecord } from './feed/feed.js';
export type BlockClass = 'approval' | 'decision';
export interface ClassPolicy {
    timeoutMinutes: number;
    /** For approval class only: the answer to apply when the timeout fires. */
    safeDefault?: string;
}
export interface FeedPolicy {
    approval: ClassPolicy;
    decision: ClassPolicy;
    /** High-cost-of-delay blocks below this threshold do not page the phone. */
    phoneNotifyThreshold: 'low' | 'medium' | 'high';
}
export declare const DEFAULT_POLICY: FeedPolicy;
export declare function getPolicyPath(root?: string): string;
export declare function loadPolicy(root?: string): FeedPolicy;
export declare function blockClass(block: OpenBlock): BlockClass;
export declare function isPhoneUrgent(block: OpenBlock, policy: FeedPolicy): boolean;
export declare function minutesElapsed(block: OpenBlock, now: Date): number;
export declare function isTimedOut(block: OpenBlock, policy: FeedPolicy, now: Date): boolean;
export interface PolicyResult {
    blockId: string;
    action: 'none' | 'defaulted' | 'parked';
    answer?: AnswerRecord;
}
/**
 * Apply policy to a single open block. Returns the action taken (none/defaulted/parked).
 * Caller is responsible for persistence/logging side effects not owned by feed.ts.
 */
export declare function applyPolicyToBlock(block: OpenBlock, policy: FeedPolicy, now: Date, root?: string, mailboxRoot?: string): PolicyResult;
