import { Insertable, Kysely, Updateable } from 'kysely';
import { LibraryStatsResponseDto } from "../dtos/library.dto";
import { DB } from "../schema";
import { LibraryTable } from "../schema/tables/library.table";
export declare enum AssetSyncResult {
    DO_NOTHING = 0,
    UPDATE = 1,
    OFFLINE = 2,
    CHECK_OFFLINE = 3
}
export declare class LibraryRepository {
    private db;
    constructor(db: Kysely<DB>);
    get(id: string, withDeleted?: boolean): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        ownerId: string;
        importPaths: string[];
        exclusionPatterns: string[];
        refreshedAt: Date | null;
    } | undefined>;
    getAll(withDeleted?: boolean): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        ownerId: string;
        importPaths: string[];
        exclusionPatterns: string[];
        refreshedAt: Date | null;
    }[]>;
    getAllDeleted(): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        ownerId: string;
        importPaths: string[];
        exclusionPatterns: string[];
        refreshedAt: Date | null;
    }[]>;
    create(library: Insertable<LibraryTable>): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        ownerId: string;
        importPaths: string[];
        exclusionPatterns: string[];
        refreshedAt: Date | null;
    }>;
    delete(id: string): Promise<void>;
    softDelete(id: string): Promise<void>;
    update(id: string, library: Updateable<LibraryTable>): Promise<{
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        ownerId: string;
        importPaths: string[];
        exclusionPatterns: string[];
        refreshedAt: Date | null;
    }>;
    getStatistics(id: string): Promise<LibraryStatsResponseDto | undefined>;
    streamAssetIds(libraryId: string): AsyncIterableIterator<{
        id: string;
    }>;
}
