/**
 * Subscription gate — blocks the agent when the subscription has expired.
 *
 * Follows the same pattern as onboarding-gate.ts:
 *  1. Show the payment prompt (inline keyboard with plans) to the owner
 *  2. Poll heartbeat every 10s (no Claude API calls)
 *  3. Once status is "active" or "skip", return so the agent can resume
 *
 * The agent never checks Stripe directly — it trusts the backend's
 * `subscriptionStatus` field in the heartbeat response.
 */
import type { VisionClawConfig } from "../config/types.js";
import type { ChannelManager } from "../channels/manager.js";
import type { HeartbeatManager } from "./heartbeat-manager.js";
/**
 * Run the subscription gate. Blocks until the subscription is renewed
 * (status returns to "active" or "skip").
 *
 * Called from the main loop when `heartbeat.lastSubscriptionStatus === "expired"`.
 */
export declare function runSubscriptionGate(config: VisionClawConfig, channelManager: ChannelManager, heartbeat: HeartbeatManager): Promise<void>;
//# sourceMappingURL=subscription-gate.d.ts.map