/**
 * Cloud-inference billing flow helpers.
 *
 * Wrap a single hosted-inference run in the Studiograph Cloud
 * reserve → settle/release lifecycle. Shared by every server route that
 * drives the agent (chat + quick capture + the import pipeline that calls
 * capture), so hosted inference is metered consistently — not just on chat.
 *
 * Semantics (unchanged from the original chat.ts implementation):
 *  - reserve: on failure, throw only when billing is REQUIRED; otherwise log
 *    and proceed unmetered (best-effort).
 *  - settle: report actual usage; release the reservation when there was no
 *    billable usage.
 *  - release: return an unsettled reservation (error/abort path).
 *
 * When Cloud billing isn't configured (self-hosted / non-managed), the client
 * is not configured: reserve() returns null and settle/release no-op, so local
 * behavior is unchanged.
 */
import { createCloudInferenceBillingClient, type CloudInferenceReservation, type InferenceUsageSummary } from '../services/cloud-inference-billing.js';
type CloudBillingClient = ReturnType<typeof createCloudInferenceBillingClient>;
/** Minimal structural view of the orchestrator — avoids a circular import. */
interface ModelSelector {
    getModelSelection(): {
        provider: string;
        modelId: string;
    };
}
export declare function reserveCloudInference(cloudBilling: CloudBillingClient, agent: ModelSelector, description: string): Promise<CloudInferenceReservation | null>;
export declare function settleCloudInference(cloudBilling: CloudBillingClient, reservation: CloudInferenceReservation | null, usage: InferenceUsageSummary | undefined): Promise<void>;
export declare function releaseCloudInference(cloudBilling: CloudBillingClient, reservation: CloudInferenceReservation | null, reason: string): Promise<void>;
export {};
