import type { TlsOptions } from '../types.js'; export type AiBudgetHardLimitAction = 'BLOCK' | 'PAUSE' | 'FAIL'; export type AiBudgetUnknownPriceAction = 'DENY' | 'ALLOW_WITH_AUDIT'; export interface AiBudgetLimit { soft?: bigint; hard?: bigint; } export interface AiBudgetLimits { totalTokens?: AiBudgetLimit; costNanos?: AiBudgetLimit; wallClockMs?: AiBudgetLimit; modelCalls?: AiBudgetLimit; toolCalls?: AiBudgetLimit; } export interface AiBudgetPolicy { schemaVersion: 1; currency?: string; priceSource?: string; priceVersion?: string; limits: AiBudgetLimits; onHardLimit: AiBudgetHardLimitAction; unknownPrice: AiBudgetUnknownPriceAction; reservationTtlSeconds: number; } export interface AiBudgetAccount { budgetAccountId: string; namespace: string; workflowId?: string; runId?: string; policyVersion: bigint; policy: AiBudgetPolicy; createdAt: Date; updatedAt: Date; } export interface AiBudgetClientOptions { serverAddress: string; apiKey?: string; tls?: TlsOptions; defaultRpcTimeoutMs?: number; } export interface PutAiBudgetPolicyInput { budgetAccountId: string; namespace: string; workflowId?: string; runId?: string; expectedPolicyVersion: bigint; policy: AiBudgetPolicy; overrideHierarchy?: boolean; overrideReason?: string; } export interface GetAiBudgetPolicyInput { namespace: string; workflowId?: string; runId?: string; } export interface AiBudgetReconciliation { reservationId: string; budgetAccountId: string; namespace: string; workflowId: string; runId: string; stepSeq: number; taskGeneration: bigint; attempt: number; reserved: { totalTokens: bigint; costNanos: bigint; wallClockMs: bigint; modelCalls: bigint; toolCalls: bigint; }; createdAt: Date; expiresAt: Date; uncertainAt: Date; } export interface ListAiBudgetReconciliationsInput { namespace: string; workflowId?: string; runId?: string; pageSize?: number; } export interface ReconcileAiBudgetReservationInput { namespace: string; reservationId: string; decision: 'RELEASE_PROVIDER_CALL_NOT_STARTED' | 'SETTLE_TERMINAL_INVOCATION'; invocationId?: string; evidenceSha256: string; reason: string; decisionId: string; decidedAt: Date; } export declare class AiBudgetClient { private readonly client; constructor(options: AiBudgetClientOptions); private unary; putPolicy(input: PutAiBudgetPolicyInput): Promise; getPolicy(input: GetAiBudgetPolicyInput): Promise; listPolicies(namespace: string): Promise; listReconciliations(input: ListAiBudgetReconciliationsInput): Promise<{ reconciliations: AiBudgetReconciliation[]; truncated: boolean; }>; reconcile(input: ReconcileAiBudgetReservationInput): Promise; close(): void; }