/**
 * Next.js環境のクライアント用共通型定義
 */
/**
 * 基本的なクライアント設定
 */
export interface BaseClientConfig {
    url: string;
    key?: string;
    database: {
        ksql: {
            url: string;
            headers?: Record<string, string>;
        };
        schemaRegistry: {
            url: string;
        };
    };
    realtime?: {
        url: string;
        autoReconnect?: boolean;
        reconnectInterval?: number;
        maxReconnectAttempts?: number;
    };
    global?: {
        headers?: Record<string, string>;
        schema?: string;
    };
}
/**
 * ブラウザクライアント設定（公開可能な設定のみ）
 */
export interface BrowserClientConfig extends BaseClientConfig {
    database: {
        ksql: {
            url: string;
            apiKey?: string;
            headers?: Record<string, string>;
        };
        schemaRegistry: {
            url: string;
            apiKey?: string;
        };
    };
    realtime?: {
        url: string;
        apiKey?: string;
        autoReconnect?: boolean;
        reconnectInterval?: number;
        maxReconnectAttempts?: number;
    };
}
/**
 * サーバークライアント設定（プライベート設定も含む）
 */
export interface ServerClientConfig extends BaseClientConfig {
    database: {
        ksql: {
            url: string;
            apiKey?: string;
            apiSecret?: string;
            headers?: Record<string, string>;
        };
        schemaRegistry: {
            url: string;
            apiKey?: string;
            authUser?: string;
            authPassword?: string;
        };
    };
    realtime?: {
        url: string;
        apiKey?: string;
        apiSecret?: string;
        autoReconnect?: boolean;
        reconnectInterval?: number;
        maxReconnectAttempts?: number;
    };
}
/**
 * クライアントの健康状態
 */
export interface ClientHealth {
    status: 'ok' | 'error' | 'degraded';
    version: string;
    features: string[];
    connections: {
        ksqldb: 'connected' | 'disconnected' | 'error';
        schemaRegistry: 'connected' | 'disconnected' | 'error';
        realtime: 'connected' | 'disconnected' | 'error';
    };
    environment: 'browser' | 'server';
}
/**
 * クライアントの基本インターフェース
 */
export interface BaseClient {
    initialize(): Promise<void>;
    health(): Promise<ClientHealth>;
    disconnect(): Promise<void>;
    isConnected(): boolean;
}
/**
 * クエリ実行結果
 */
export interface QueryResult<T = any> {
    data: T[];
    error: Error | null;
    metadata?: {
        rowCount: number;
        executionTime: number;
        queryId?: string;
    };
}
/**
 * ストリーミングクエリの制御
 */
export interface StreamController {
    terminate: () => void;
    pause: () => void;
    resume: () => void;
    isActive: () => boolean;
}
/**
 * 環境判定結果
 */
export interface EnvironmentInfo {
    isBrowser: boolean;
    isNode: boolean;
    isNextJS: boolean;
    isServerSide: boolean;
    isClientSide: boolean;
    isDevelopment: boolean;
    isProduction: boolean;
}
//# sourceMappingURL=types.d.ts.map