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