/**
 * KSQL関連の型定義
 */
export declare enum KsqlQueryType {
    CREATE_STREAM = "CREATE_STREAM",
    CREATE_TABLE = "CREATE_TABLE",
    DROP_STREAM = "DROP_STREAM",
    DROP_TABLE = "DROP_TABLE",
    SELECT = "SELECT",
    INSERT = "INSERT",
    SHOW_STREAMS = "SHOW_STREAMS",
    SHOW_TABLES = "SHOW_TABLES",
    DESCRIBE = "DESCRIBE"
}
export declare enum KsqlDataType {
    STRING = "STRING",
    INTEGER = "INTEGER",
    BIGINT = "BIGINT",
    DOUBLE = "DOUBLE",
    BOOLEAN = "BOOLEAN",
    ARRAY = "ARRAY",
    MAP = "MAP",
    STRUCT = "STRUCT",
    TIMESTAMP = "TIMESTAMP",
    DATE = "DATE",
    TIME = "TIME"
}
export interface KsqlColumn {
    name: string;
    type: KsqlDataType;
    nullable: boolean;
}
export interface KsqlStream {
    name: string;
    columns: KsqlColumn[];
    topic: string;
    format: KsqlDataFormat;
    partitionBy?: string;
    window?: KsqlWindow;
}
export interface KsqlTable {
    name: string;
    columns: KsqlColumn[];
    topic: string;
    format: KsqlDataFormat;
    primaryKey: string[];
    window?: KsqlWindow;
}
export declare enum KsqlDataFormat {
    JSON = "JSON",
    AVRO = "AVRO",
    PROTOBUF = "PROTOBUF",
    DELIMITED = "DELIMITED"
}
export interface KsqlWindow {
    type: 'tumbling' | 'hopping' | 'session';
    size: number;
    unit: 'seconds' | 'minutes' | 'hours' | 'days';
    advance?: number;
    grace?: number;
}
export interface KsqlResult {
    success: boolean;
    queryId?: string;
    data?: any[];
    error?: string;
    schema?: KsqlColumn[];
    queryType: KsqlQueryType;
}
export interface ContinuousQuery {
    id: string;
    name: string;
    sql: string;
    status: QueryStatus;
    statistics: QueryStatistics;
    inputSources: string[];
    outputTarget: string;
    createdAt: Date;
    lastExecution?: Date;
}
export declare enum QueryStatus {
    RUNNING = "RUNNING",
    STOPPED = "STOPPED",
    ERROR = "ERROR",
    PAUSED = "PAUSED"
}
export interface QueryStatistics {
    messagesProcessed: number;
    resultsProduced: number;
    averageProcessingTime: number;
    lastError?: string;
    throughput: number;
    memoryUsage: number;
}
export interface StreamingResult {
    queryId: string;
    data: any[];
    timestamp: Date;
    metadata: Record<string, any>;
}
export interface KsqlConfig {
    processingGuarantee?: 'at_least_once' | 'exactly_once';
    cacheMaxBytesBuffering?: number;
    commitIntervalMs?: number;
    numStreamThreads?: number;
    defaultTimestampExtractor?: string;
    defaultKeySerdeClass?: string;
    defaultValueSerdeClass?: string;
}
export interface KsqlEngineStats {
    totalStreams: number;
    totalTables: number;
    totalQueries: number;
    runningQueries: number;
    messagesPerSecond: number;
    memoryUsage: number;
    cpuUsage: number;
}
