/**
 * KSQL ストリームビルダー
 */
import { KsqlStream, KsqlColumn, KsqlDataType, KsqlDataFormat, KsqlWindow } from '../types/KsqlTypes';
export declare class StreamBuilder {
    private stream;
    /**
     * ストリーム名を設定
     */
    name(streamName: string): StreamBuilder;
    /**
     * カラムを追加
     */
    addColumn(name: string, type: KsqlDataType, nullable?: boolean): StreamBuilder;
    /**
     * 複数のカラムを追加
     */
    columns(columns: KsqlColumn[]): StreamBuilder;
    /**
     * Kafkaトピックを設定
     */
    topic(topicName: string): StreamBuilder;
    /**
     * データフォーマットを設定
     */
    format(dataFormat: KsqlDataFormat): StreamBuilder;
    /**
     * パーティション設定
     */
    partitionBy(field: string): StreamBuilder;
    /**
     * ウィンドウ設定
     */
    window(window: KsqlWindow): StreamBuilder;
    /**
     * タンブリングウィンドウを設定
     */
    tumblingWindow(size: number, unit: 'seconds' | 'minutes' | 'hours' | 'days'): StreamBuilder;
    /**
     * ホッピングウィンドウを設定
     */
    hoppingWindow(size: number, advance: number, unit: 'seconds' | 'minutes' | 'hours' | 'days'): StreamBuilder;
    /**
     * セッションウィンドウを設定
     */
    sessionWindow(size: number, unit: 'seconds' | 'minutes' | 'hours' | 'days'): StreamBuilder;
    /**
     * ストリーム設定を構築
     */
    build(): KsqlStream;
    /**
     * CREATE STREAM SQLを生成
     */
    toSQL(): string;
    /**
     * ビルダーをリセット
     */
    reset(): StreamBuilder;
    /**
     * ビルダーを複製
     */
    clone(): StreamBuilder;
    /**
     * よく使われるカラム型のヘルパーメソッド
     */
    stringColumn(name: string, nullable?: boolean): StreamBuilder;
    integerColumn(name: string, nullable?: boolean): StreamBuilder;
    bigintColumn(name: string, nullable?: boolean): StreamBuilder;
    doubleColumn(name: string, nullable?: boolean): StreamBuilder;
    booleanColumn(name: string, nullable?: boolean): StreamBuilder;
    timestampColumn(name: string, nullable?: boolean): StreamBuilder;
    arrayColumn(name: string, nullable?: boolean): StreamBuilder;
    mapColumn(name: string, nullable?: boolean): StreamBuilder;
    structColumn(name: string, nullable?: boolean): StreamBuilder;
}
