import Query from './query.js';
import type StoreSaveOptions from './interfaces/StoreSaveOptions.js';
import QueryOptions from './interfaces/queryOptions.js';
export default class Repository<T> {
    protected model: any;
    data: Record<string, T[]>;
    constructor(model: any);
    find(id: number, options?: QueryOptions): T | null;
    all(options?: QueryOptions): T[];
    first(options?: QueryOptions): T | null;
    last(options?: QueryOptions): T | null;
    take(amount: number, options?: QueryOptions): T[];
    count(options?: QueryOptions): number;
    exists(id: number, options?: QueryOptions): boolean;
    save(data: T | T[] | object, options?: StoreSaveOptions): T | T[] | null;
    delete(key: number | number[] | string, value?: any, options?: QueryOptions): void;
    update(id: number, data: object, options?: QueryOptions): T | null;
    private deleteSingleItem;
    clear(options?: QueryOptions): void;
    reset(): void;
    transform(data: any, options: StoreSaveOptions): T | T[];
    persist(data: T | T[], options: StoreSaveOptions): T | T[] | null;
    private persistSingleItem;
    private returnSaveOptions;
    deepUpdate(item: any, newData: any, options?: QueryOptions): void;
    datasetExists(key?: string): boolean;
    query(options?: QueryOptions): Query<T>;
}
