import { Uuid, ClusterConfig, ConnectionOptions, ScyllaSession } from '@lambda-group/scylladb';
import { B as BaseModelConstructor, d as BaseModel } from './base-CwY0FL6F.js';
import { PrimaryKeyProp, AnyArray, FilterQuery } from './src/decorators/typings.js';

declare class Repository<T extends {
    [PrimaryKeyProp]?: AnyArray;
}> {
    private dataSource;
    private tableName;
    private columns;
    private modelClass;
    private logger;
    constructor(dataSource: DataSource, modelClass: BaseModelConstructor);
    private columnToValue;
    findAll(): Promise<T[] | null>;
    findBy(query: FilterQuery<T>): Promise<T[]>;
    findByPartitionKey<U extends string | number | Uuid>(id: U): Promise<T[]>;
    save(model: T): Promise<void>;
}

declare class DataSource {
    private options;
    private cluster;
    private session;
    constructor(options: ClusterConfig);
    initialize(keyspaceOrOptions?: string | ConnectionOptions): Promise<DataSource>;
    getSession(): ScyllaSession | never;
    getRepository<T extends BaseModel>(model: new () => T extends BaseModel ? T : never): Repository<T>;
    [Symbol.dispose](): void;
}

export { DataSource as D, Repository as R };
