import { type IntegrationScopeAccess, type IntegrationScopeKey } from "./scope-store.js"; export declare const INTEGRATION_BUDGET_COST_UNIT: "currency_micros"; export type IntegrationBudgetPeriod = "day" | "month"; export type IntegrationBudgetSubject = { type: "org"; orgId: string; } | { type: "user"; userEmail: string; } | { type: "scope"; scope: IntegrationScopeKey; }; export interface IntegrationUsageBudget { id: string; subjectType: IntegrationBudgetSubject["type"]; subjectId: string; period: IntegrationBudgetPeriod; limitMicros: number; thresholdBps: number; ownerEmail: string; orgId: string | null; createdAt: number; updatedAt: number; } export interface IntegrationBudgetSnapshot { budget: IntegrationUsageBudget; windowStart: number; windowEnd: number; usedMicros: number; reservedMicros: number; remainingMicros: number; costUnit: typeof INTEGRATION_BUDGET_COST_UNIT; } export type IntegrationReservationStatus = "pending" | "reserved" | "denied" | "settled" | "released"; export interface IntegrationBudgetReservationResult { allowed: boolean; reservationId: string; status: IntegrationReservationStatus; estimatedCostMicros: number; settledCostMicros: number | null; thresholdEventEmitted: boolean; snapshot: IntegrationBudgetSnapshot; } export interface IntegrationBudgetThresholdEvent { id: string; budgetId: string; windowStart: number; thresholdBps: number; observedMicros: number; createdAt: number; } export declare const usageBudgetsStore: import("../db/store-registry.js").Store; export declare function ensureTables(): Promise; export declare function saveIntegrationUsageBudget(input: { subject: IntegrationBudgetSubject; period: IntegrationBudgetPeriod; limitMicros: number; thresholdBps?: number; }, accessInput: IntegrationScopeAccess): Promise; export declare function getIntegrationUsageBudget(budgetIdInput: string, accessInput: IntegrationScopeAccess): Promise; export declare function listIntegrationUsageBudgets(accessInput: IntegrationScopeAccess): Promise; export declare function getIntegrationBudgetSnapshot(budgetIdInput: string, accessInput: IntegrationScopeAccess, timestamp?: number): Promise; export declare function reserveIntegrationUsageBudget(input: { budgetId: string; reservationId: string; estimatedCostMicros: number; timestamp?: number; }, accessInput: IntegrationScopeAccess): Promise; export declare function settleIntegrationUsageBudget(input: { budgetId: string; reservationId: string; actualCostMicros: number; }, accessInput: IntegrationScopeAccess): Promise; export declare function releaseIntegrationUsageBudget(input: { budgetId: string; reservationId: string; }, accessInput: IntegrationScopeAccess): Promise; export declare function listIntegrationBudgetThresholdEvents(budgetIdInput: string, accessInput: IntegrationScopeAccess): Promise; export declare function _resetIntegrationUsageBudgetStoreForTests(): void;