'use client'; import { FunctionReference } from "convex/server"; //#region src/plugins/ratelimit/types.d.ts type RateLimitSnapshot = { value: number; ts: number; shard: number; config: ResolvedAlgorithm; }; type FixedWindowAlgorithm = { kind: 'fixedWindow'; limit: number; window: number; capacity: number; start?: number; maxReserved?: number; shards: number; }; type SlidingWindowAlgorithm = { kind: 'slidingWindow'; limit: number; window: number; maxReserved?: number; shards: number; }; type TokenBucketAlgorithm = { kind: 'tokenBucket'; refillRate: number; interval: number; maxTokens: number; maxReserved?: number; shards: number; }; type ResolvedAlgorithm = FixedWindowAlgorithm | SlidingWindowAlgorithm | TokenBucketAlgorithm; type HookCheckValue = { value: number; ts: number; config: ResolvedAlgorithm; shard: number; ok: boolean; retryAt?: number; }; //#endregion //#region src/plugins/ratelimit/react/use-rate-limit.d.ts type GetRateLimitValueQueryRef = FunctionReference<'query', 'public', { identifier?: string; sampleShards?: number; }, RateLimitSnapshot>; type GetServerTimeMutationRef = FunctionReference<'mutation', 'public', Record, number>; type GetRateLimitValueQuery = GetRateLimitValueQueryRef | string; type GetServerTimeMutation = GetServerTimeMutationRef | string; type UseRateLimitOptions = { identifier?: string; count?: number; sampleShards?: number; getServerTimeMutation?: GetServerTimeMutation; }; declare function useRateLimit(getRateLimitValueQuery: GetRateLimitValueQuery, options?: UseRateLimitOptions): { status: undefined; check: (ts?: number, requestedCount?: number) => HookCheckValue | undefined; } | { status: { ok: false; retryAt: number; }; check: (ts?: number, requestedCount?: number) => HookCheckValue | undefined; } | { status: { ok: true; retryAt: undefined; }; check: (ts?: number, requestedCount?: number) => HookCheckValue | undefined; }; //#endregion export { GetRateLimitValueQuery, GetRateLimitValueQueryRef, GetServerTimeMutation, GetServerTimeMutationRef, UseRateLimitOptions, useRateLimit };