/**
 * FieldType 定義 - Drizzle ORM ライクな DSL
 */
export interface FieldDefinition {
    type: string;
    nullable: boolean;
    primaryKey: boolean;
    default?: any;
    logicalType?: string;
}
export declare class BaseFieldType {
    protected definition: FieldDefinition;
    constructor(type: string, logicalType?: string);
    notNull(): this;
    primaryKey(): this;
    withDefault(defaultValue: any): this;
    getDefinition(): FieldDefinition;
    toAvroType(): string | string[] | any;
}
export declare class StringFieldType extends BaseFieldType {
    constructor();
}
export declare class IntFieldType extends BaseFieldType {
    constructor();
}
export declare class LongFieldType extends BaseFieldType {
    constructor();
}
export declare class DoubleFieldType extends BaseFieldType {
    constructor();
}
export declare class BooleanFieldType extends BaseFieldType {
    constructor();
}
export declare class UuidFieldType extends BaseFieldType {
    constructor();
}
export declare class TimestampFieldType extends BaseFieldType {
    constructor();
}
export declare class DateFieldType extends BaseFieldType {
    constructor();
}
export declare class TimeFieldType extends BaseFieldType {
    constructor();
}
export declare class DecimalFieldType extends BaseFieldType {
    constructor(precision?: number, scale?: number);
}
export declare class ArrayFieldType extends BaseFieldType {
    constructor(itemType: BaseFieldType);
}
export declare class MapFieldType extends BaseFieldType {
    constructor(valueType: BaseFieldType);
}
/**
 * FieldType エクスポート - 設計案の通り（各フィールドは新しいインスタンスを返す）
 */
export declare const FieldType: {
    readonly STRING: StringFieldType;
    readonly INT: IntFieldType;
    readonly LONG: LongFieldType;
    readonly DOUBLE: DoubleFieldType;
    readonly BOOLEAN: BooleanFieldType;
    readonly UUID: UuidFieldType;
    readonly TIMESTAMP: TimestampFieldType;
    readonly DATE: DateFieldType;
    readonly TIME: TimeFieldType;
    readonly DECIMAL: (precision?: number, scale?: number) => DecimalFieldType;
    readonly ARRAY: (itemType: BaseFieldType) => ArrayFieldType;
    readonly MAP: (valueType: BaseFieldType) => MapFieldType;
};
//# sourceMappingURL=field-types.d.ts.map