File size: 625 Bytes
68d7816 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import { createDecorator } from '#/_base/di/instantiation';
export interface TowerRateLimitSnapshot {
readonly budget: number;
readonly inflight: number;
readonly blockedUntil: number | null;
}
export interface ITowerRateLimitService {
readonly _serviceBrand: undefined;
reportRateLimited(): void;
reportSuccess(): void;
budget(): number;
acquire(): { readonly ok: true } | { readonly ok: false; readonly reason: string };
release(): void;
snapshot(): TowerRateLimitSnapshot;
reset(): void;
}
export const ITowerRateLimitService =
createDecorator<ITowerRateLimitService>('towerRateLimitService');
|