/**
 * Resilient ksqlDB Client - パーティション再バランシング対応の高可用性クライアント
 *
 * @description このモジュールは、既存のksqlDBクライアントに
 * リトライ機構、サーキットブレーカー、フォールバック戦略を統合した
 * リジリエントなクライアントを提供します。
 */
import { KsqlDbConfig, ResilienceConfig, EnhancedPullQueryOptions, ResilientQueryResult, ResilienceMetrics, CircuitBreakerState } from './types';
import { PullQueryOptions } from './ksqldb-client';
/**
 * リジリエント ksqlDB クライアント設定
 */
export interface ResilientKsqlDbConfig extends KsqlDbConfig {
    resilience?: ResilienceConfig;
}
/**
 * リジリエント ksqlDB クライアント
 *
 * 既存のksqlDBクライアントAPIと完全に互換性を保ちながら、
 * パーティション再バランシングなどの障害に対する耐性を提供します。
 */
export declare class ResilientKsqlDbClient {
    private config;
    private executor;
    private initialized;
    constructor(config: ResilientKsqlDbConfig);
    /**
     * クライアントを初期化
     *
     * 既存のinitializeKsqlDbClientと同じインターフェース
     */
    initialize(): Promise<void>;
    /**
     * リジリエント Pull Query 実行
     *
     * 既存のexecutePullQueryと互換性を保ちながら、
     * リトライ・サーキットブレーカー・フォールバック機能を提供
     *
     * @param sql SQL文
     * @param options 実行オプション（拡張版）
     * @returns リジリエント実行結果
     */
    executePullQuery(sql: string, options?: EnhancedPullQueryOptions): Promise<ResilientQueryResult>;
    /**
     * 下位互換性のためのPull Query実行
     *
     * 既存のAPIと完全に互換性を保持（リジリエンス機能は内部的に適用）
     *
     * @param sql SQL文
     * @param options 従来のPull Queryオプション
     * @returns 従来の形式の結果
     */
    executePullQueryCompat(sql: string, options?: PullQueryOptions): Promise<any>;
    /**
     * リジリエント DDL/DML クエリ実行
     *
     * @param sql SQL文
     * @param options 実行オプション
     * @returns リジリエント実行結果
     */
    executeQuery(sql: string, options?: {
        retries?: number;
        backoffStrategy?: 'exponential' | 'linear' | 'fixed';
        timeout?: number;
    }): Promise<ResilientQueryResult>;
    /**
     * 下位互換性のためのクエリ実行
     *
     * @param sql SQL文
     * @returns 従来の形式の結果
     */
    executeQueryCompat(sql: string): Promise<any>;
    /**
     * Push Query実行（ストリーミング）
     *
     * Push Queryはストリーミング性質上、リトライよりも
     * 接続の復旧とエラーハンドリングに重点を置く
     *
     * @param sql SQL文
     * @param onData データ受信コールバック
     * @param onError エラーコールバック（拡張版）
     * @param onComplete 完了コールバック
     * @returns terminate関数
     */
    executePushQuery(sql: string, onData: (data: any) => void, onError?: (error: Error, resilience?: {
        errorType: string;
        retryCount: number;
        canRetry: boolean;
    }) => void, onComplete?: () => void): Promise<{
        terminate: () => void;
    }>;
    /**
     * ヘルスチェック実行
     *
     * クライアントの状態とサーキットブレーカーの状態を確認
     */
    healthCheck(): Promise<{
        status: 'healthy' | 'degraded' | 'unhealthy';
        details: {
            clientInitialized: boolean;
            circuitBreakerState: CircuitBreakerState;
            metrics: ResilienceMetrics;
            lastError?: string;
        };
    }>;
    /**
     * メトリクス情報を取得
     */
    getMetrics(): ResilienceMetrics;
    /**
     * サーキットブレーカーの状態を取得
     */
    getCircuitBreakerState(): CircuitBreakerState;
    /**
     * サーキットブレーカーをリセット
     */
    resetCircuitBreaker(): void;
    /**
     * メトリクスをリセット
     */
    resetMetrics(): void;
    /**
     * クライアント設定を取得
     */
    getConfig(): ResilientKsqlDbConfig;
    /**
     * リソースクリーンアップ
     */
    dispose(): void;
    /**
     * 初期化チェック
     */
    private ensureInitialized;
}
/**
 * リジリエントksqlDBクライアントを初期化（グローバル）
 *
 * 既存のinitializeKsqlDbClientと同じインターフェースで、
 * リジリエンス機能が追加されたクライアントを初期化
 *
 * @param config リジリエント設定を含むksqlDB設定
 */
export declare function initializeResilientKsqlDbClient(config: ResilientKsqlDbConfig): Promise<void>;
/**
 * グローバルなリジリエントPull Query実行
 *
 * 既存のexecutePullQueryと同じインターフェース（拡張オプション対応）
 *
 * @param sql SQL文
 * @param options 拡張されたPull Queryオプション
 * @returns 実行結果
 */
export declare function executePullQueryResilient(sql: string, options?: EnhancedPullQueryOptions): Promise<any>;
/**
 * グローバルなリジリエントQuery実行
 *
 * @param sql SQL文
 * @returns 実行結果
 */
export declare function executeQueryResilient(sql: string): Promise<any>;
/**
 * グローバルなリジリエントPush Query実行
 *
 * @param sql SQL文
 * @param onData データ受信コールバック
 * @param onError エラーコールバック
 * @param onComplete 完了コールバック
 * @returns terminate関数
 */
export declare function executePushQueryResilient(sql: string, onData: (data: any) => void, onError?: (error: Error) => void, onComplete?: () => void): Promise<{
    terminate: () => void;
}>;
/**
 * グローバルクライアントのヘルスチェック
 */
export declare function getKsqlDbHealth(): Promise<{
    status: 'healthy' | 'degraded' | 'unhealthy';
    details: any;
}>;
/**
 * グローバルクライアントのメトリクス取得
 */
export declare function getKsqlDbMetrics(): ResilienceMetrics | null;
/**
 * グローバルクライアントのサーキットブレーカー状態取得
 */
export declare function getKsqlDbCircuitBreakerState(): CircuitBreakerState | null;
/**
 * グローバルクライアントのリソースクリーンアップ
 */
export declare function disposeResilientKsqlDbClient(): void;
//# sourceMappingURL=resilient-client.d.ts.map