/**
 * APIレート制限ユーティリティ
 * Vertex AI APIコールの頻度を制限し、クォータ枯渇を防ぐ
 */
/**
 * シンプルなレート制限器
 * スライディングウィンドウアルゴリズムを使用して一定期間内のリクエスト数を制限
 */
export declare class RateLimiter {
    private callTimes;
    private readonly maxCallsPerWindow;
    private readonly windowMs;
    /**
     * @param maxCallsPerWindow ウィンドウ期間内の最大コール数（デフォルト: 60）
     * @param windowMs ウィンドウ期間（ミリ秒）（デフォルト: 60000 = 1分）
     */
    constructor(maxCallsPerWindow?: number, windowMs?: number);
    /**
     * レート制限付きで関数を実行
     * 制限に達している場合は待機してから実行
     *
     * @param fn 実行する関数
     * @returns 関数の実行結果
     */
    execute<T>(fn: () => Promise<T>): Promise<T>;
    /**
     * 必要に応じて待機
     * レート制限に達している場合、次のコールが可能になるまで待つ
     */
    private waitIfNeeded;
    /**
     * コールを記録
     */
    private recordCall;
    /**
     * ウィンドウ外の古いコールを削除
     */
    private cleanupOldCalls;
    /**
     * 現在のレート制限状態を取得（デバッグ用）
     */
    getStatus(): {
        callsInWindow: number;
        maxCalls: number;
        windowMs: number;
    };
    /**
     * レート制限をリセット
     */
    reset(): void;
}
/**
 * グローバルなVertex AI APIレート制限器
 * 環境変数で設定可能:
 * - VERTEXAI_RATE_LIMIT_MAX_CALLS: 1分あたりの最大コール数（デフォルト: 60）
 * - VERTEXAI_RATE_LIMIT_WINDOW_MS: ウィンドウ期間（ミリ秒）（デフォルト: 60000）
 */
export declare const vertexAIRateLimiter: RateLimiter;
//# sourceMappingURL=rateLimiter.d.ts.map