import type { SupabaseClient } from '@supabase/supabase-js'; import type { StepUsage } from './types.js'; export type BillingOperationType = 'screenshot' | 'clip'; type BillingOperationOutcome = 'succeeded' | 'failed' | 'cancelled'; interface BillingOperationContext { runId: string; userId: string; projectId?: string | null; presetId?: string | null; captureId?: string | null; videoId?: string | null; clipRecordId?: string | null; operationType: BillingOperationType; captureType?: 'fullpage' | 'element' | null; lang?: string | null; theme?: 'light' | 'dark' | string | null; elementName?: string; targetId?: string; viewportWidth?: number | null; viewportHeight?: number | null; deviceFrame?: string | null; } interface BillingOperationParams { outcome: BillingOperationOutcome; outcomeReason?: string | null; billable: boolean; creditsCharged: number; costLogIds: string[]; usage: StepUsage[]; metadata?: Record; } export declare function insertBillingOperationLog(supabase: SupabaseClient, ctx: BillingOperationContext, params: BillingOperationParams): Promise; export declare function insertScreenshotOperationLog(supabase: SupabaseClient, ctx: Omit, params: BillingOperationParams): Promise; export declare function insertClipOperationLog(supabase: SupabaseClient, ctx: Omit, params: BillingOperationParams): Promise; export declare function cancelScreenshotOperationLogsForCapture(supabase: SupabaseClient, captureId: string, reason: string): Promise; export declare function reconcilePendingBillingOperationCosts(supabase: SupabaseClient, operationIds?: string[]): Promise; export {};