/**
 * GCPolicy — garbage collection thresholds for the current WARP state.
 *
 * Instances are immutable value objects. `evaluate()` checks a set of
 * runtime metrics against the thresholds and returns a frozen
 * `GCShouldRunResult` naming every threshold that was exceeded.
 *
 * @module domain/services/GCPolicy
 */
import GCShouldRunResult from './GCShouldRunResult.ts';
/**
 * Runtime measurements supplied to `evaluate()`. This is a parameter
 * bag — a value object named `GCInputMetrics` would be overkill for a
 * single evaluation boundary with four numeric fields.
 */
export type GCPolicyInput = {
    readonly tombstoneRatio: number;
    readonly totalEntries: number;
    readonly patchesSinceCompaction: number;
    readonly ticksSinceCompaction: number;
};
/**
 * Partial configuration accepted at the API boundary
 * (`RuntimeHost.open({ gcPolicy })`). Any fields the caller omits are
 * filled from `GCPolicy.DEFAULT`.
 */
export type GCPolicyConfig = {
    readonly enabled?: boolean;
    readonly tombstoneRatioThreshold?: number;
    readonly entryCountThreshold?: number;
    readonly minPatchesSinceCompaction?: number;
    readonly maxTicksSinceCompaction?: number;
    readonly compactOnCheckpoint?: boolean;
};
export default class GCPolicy {
    /** When false, automatic GC is disabled even if thresholds are met. */
    readonly enabled: boolean;
    /** Tombstone ratio (0..1) that triggers GC. */
    readonly tombstoneRatioThreshold: number;
    /** Total entry count that triggers GC. */
    readonly entryCountThreshold: number;
    /** Minimum patches between GCs. */
    readonly minPatchesSinceCompaction: number;
    /** Maximum lamport ticks between GCs. */
    readonly maxTicksSinceCompaction: number;
    /** Whether to auto-compact on checkpoint. */
    readonly compactOnCheckpoint: boolean;
    constructor(fields: {
        readonly enabled: boolean;
        readonly tombstoneRatioThreshold: number;
        readonly entryCountThreshold: number;
        readonly minPatchesSinceCompaction: number;
        readonly maxTicksSinceCompaction: number;
        readonly compactOnCheckpoint: boolean;
    });
    /** Default policy — conservative, GC disabled by default (opt-in). */
    static readonly DEFAULT: GCPolicy;
    /**
     * Evaluates runtime metrics against this policy's thresholds.
     * Returns a `GCShouldRunResult` naming every threshold exceeded;
     * `shouldRun` is true iff any threshold tripped.
     */
    evaluate(input: GCPolicyInput): GCShouldRunResult;
}
