/**
 * Billing handler for bundle purchases and subscription plan selection.
 *
 * This is deterministic bot code — the LLM agent is never involved in
 * payment flows. The handler manages:
 *
 * **Bundle flow** (`bundle_purchase` command):
 * 1. Admin dispatches bundle_purchase via heartbeat command
 * 2. Sends an amount selection prompt (inline keyboard) to the owner
 * 3. Listens for `billing_bundle_selected` events from Telegram
 * 4. Creates a one-time Stripe Checkout Session via the backend
 * 5. Sends the checkout URL to the owner
 *
 * **Subscription plan selection** (triggered by subscription gate, not a command):
 * The subscription gate sends the plan keyboard directly when the subscription
 * expires. This handler listens for `billing_plan_selected` events and creates
 * the corresponding Stripe Checkout Session.
 */
import type { CommandHandler } from "../agent/command-dispatcher.js";
import type { ChannelManager } from "../channels/manager.js";
import type { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
/**
 * Billing handler for bundle purchases and subscription plan selection.
 * Instantiated once at startup; event listeners are wired in the constructor.
 */
export declare class BillingHandler {
    private readonly channelManager;
    private readonly ownerChatId;
    private serviceClient;
    constructor(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null);
    /**
     * Update the service client reference (e.g. after the client is lazily created).
     */
    setServiceClient(client: OnboardingServiceClient): void;
    /**
     * Called when the owner selects a subscription plan from the inline keyboard.
     * The keyboard is sent by the subscription gate (subscription-gate.ts),
     * not by a command handler.
     */
    private handlePlanSelected;
    /**
     * CommandHandler for `bundle_purchase`: sends amount picker to the owner.
     */
    handleBundlePurchase: CommandHandler;
    /**
     * Called when the owner selects a bundle amount from the inline keyboard.
     */
    private handleBundleSelected;
}
//# sourceMappingURL=billing-handler.d.ts.map