import { SqliteAdapter } from "../database/SqliteAdapter";
import Database from "better-sqlite3";
export declare abstract class BaseRepository<T> {
    protected db: Database.Database;
    protected tableName: string;
    constructor(dbAdapter: SqliteAdapter, tableName: string);
    /**
     * Generate a new UUID
     */
    protected generateId(): string;
    /**
     * Convert snake_case database column names to camelCase
     */
    protected toCamelCase(obj: Record<string, any>): any;
    /**
     * Convert camelCase property names to snake_case
     */
    protected toSnakeCase(obj: Record<string, any>): any;
    private snakeToCamel;
    private camelToSnake;
    /**
     * Find all records
     */
    findAll(): Promise<T[]>;
    /**
     * Find a record by ID
     */
    findById(id: string): Promise<T | null>;
    /**
     * Create a new record
     */
    abstract create(data: Omit<T, "id">): Promise<T>;
    /**
     * Update an existing record
     */
    abstract update(id: string, data: Partial<T>): Promise<T | null>;
    /**
     * Delete a record
     */
    delete(id: string): Promise<boolean>;
}
