import type { VisionClawConfig } from "../../config/types.js";
import type { ChannelManager } from "../../channels/manager.js";
import type { HeartbeatManager } from "../heartbeat-manager.js";
import type { UsageStatus } from "./usage-report-types.js";
export declare const USAGE_GATE_MESSAGE = "Your WorkUnit (WU) allowance for this period has been used up. Please upgrade your plan or buy a WU bundle to continue.";
/**
 * Determine whether the usage gate should block new Claude wake cycles.
 *
 * The usage gate is subordinate to the billing/subscription gate:
 *  - If billing is "skip" (disabled), the usage gate is never enforced,
 *    regardless of metered usage.
 *  - If billing is "expired", the subscription gate takes priority; the
 *    usage gate should not fire until the subscription is resolved.
 *
 * Enforcement requires ALL of:
 *  - subscriptionStatus is "active" (billing is on and subscription valid)
 *  - status is "exhausted" (WU used >= available WU)
 *  - coverage is "complete" or "cutover" — meaning the server has
 *    sufficient data to trust the metering result. "partial" coverage
 *    is intentionally excluded because historical data may be incomplete
 *    and gating the user on inaccurate numbers would be wrong.
 */
export declare function shouldEnforceUsageGate(usageStatus: UsageStatus | undefined, subscriptionStatus?: string): boolean;
export declare function runUsageGate(config: VisionClawConfig, channelManager: ChannelManager, heartbeat: HeartbeatManager): Promise<void>;
//# sourceMappingURL=usage-gate.d.ts.map