openvibe-sdk/govern
Generated at from
openvibe-contracts v0.79.0 and
openvibe-sdk v0.25.0.
From types/govern.d.ts (server only). Declarations are shown verbatim.
type CostUnit
export type CostUnit = 'browser-second' | 'ai-token' | 'ai-usd' | 'gpu-second' | 'video-minute' | 'bandwidth-byte' | 'storage-byte-day' | 'event'
| 'watch-check' | 'bot-control-second' | 'job-run' | 'upload-byte' | 'download-byte';type Windowed
export type Windowed = { minute?: number; hour?: number; day?: number; month?: number };type GovernPolicy
{ [unit]: { [tier]: { minute?, hour?, day?, month? } } }: a missing tier or window is unlimited, 0 refuses.
export type GovernPolicy = Partial<Record<CostUnit, Record<string, Windowed>>>;type Reserved
export type Reserved = { ok: true; id: string; replay: boolean } | { ok: false; unit: CostUnit; window: string; limit: number; used: number; retryAfterS: number };interface Governor
export interface Governor {
reserve(o: { subject: string; tier?: string; unit: CostUnit; amount: number; key: string; project?: string | null }): Promise<Reserved>;
commit(id: string, actual: number): Promise<boolean>;
release(id: string): Promise<boolean>;
usage(o: { subject: string; tier?: string; unit: CostUnit; project?: string | null }): Promise<Record<string, { used: number; limit: number }>>;
lease(o: { subject: string; kind: string; max: number; ttlMs?: number }): Promise<{ ok: true; id: string; release(): Promise<void> } | { ok: false; retryAfterS: number }>;
policy: GovernPolicy;
}function createGovernor
export declare function createGovernor(opts?: { policy?: GovernPolicy; valkey?: Valkey | null; now?: () => number; reservationTtlMs?: number;
onRefused?: (e: object) => void; onUsage?: (e: object) => void }): Governor;const WINDOWS
export declare const WINDOWS: Record<'minute' | 'hour' | 'day' | 'month', number>;const UNITS
export declare const UNITS: CostUnit[];