import { Insertable, Kysely, ShallowDehydrateObject, Updateable } from 'kysely';
import { AlbumUserCreateDto, MapAlbumDto } from "../dtos/album.dto";
import { AlbumUserRole } from "../enum";
import { DB } from "../schema";
import { AlbumTable } from "../schema/tables/album.table";
import { AssetExifTable } from "../schema/tables/asset-exif.table";
export interface AlbumAssetCount {
    albumId: string;
    assetCount: number;
    startDate: Date | null;
    endDate: Date | null;
    lastModifiedAssetTimestamp: Date | null;
}
export interface AlbumInfoOptions {
    withAssets: boolean;
}
export declare class AlbumRepository {
    private db;
    constructor(db: Kysely<DB>);
    getById(id: string, options: AlbumInfoOptions, authUserId?: string): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        assets: {
            id: string;
            createdAt: string;
            type: import("src/enum").AssetType;
            fileCreatedAt: string;
            localDateTime: string;
            duration: number | null;
            updatedAt: string;
            deletedAt: string | null;
            status: import("src/enum").AssetStatus;
            updateId: string;
            ownerId: string;
            width: number | null;
            height: number | null;
            checksum: string;
            checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
            duplicateId: string | null;
            exifInfo: ShallowDehydrateObject<{
                description: string;
                rating: number | null;
                colorspace: string | null;
                assetId: string;
                state: string | null;
                updatedAt: Date;
                updateId: string;
                tags: string[] | null;
                city: string | null;
                country: string | null;
                make: string | null;
                model: string | null;
                lensModel: string | null;
                latitude: number | null;
                longitude: number | null;
                exifImageWidth: number | null;
                exifImageHeight: number | null;
                fileSizeInByte: number | null;
                orientation: string | null;
                dateTimeOriginal: Date | null;
                modifyDate: Date | null;
                timeZone: string | null;
                fNumber: number | null;
                focalLength: number | null;
                iso: number | null;
                exposureTime: string | null;
                projectionType: string | null;
                fps: number | null;
                livePhotoCID: string | null;
                profileDescription: string | null;
                bitsPerSample: number | null;
                autoStackId: string | null;
                lockedProperties: ("description" | "rating" | "tags" | "latitude" | "longitude" | "dateTimeOriginal" | "timeZone")[] | null;
            }>;
            fileModifiedAt: string;
            isExternal: boolean;
            isFavorite: boolean;
            isOffline: boolean;
            visibility: import("src/enum").AssetVisibility;
            libraryId: string | null;
            livePhotoVideoId: string | null;
            originalFileName: string;
            originalPath: string;
            stackId: string | null;
            thumbhash: string | null;
            isEdited: boolean;
        }[] | undefined;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        albumUsers: {
            role: AlbumUserRole;
            user: {
                id: string;
                email: string;
                name: string;
                profileImagePath: string;
                avatarColor: import("kysely").ExtractColumnType<{
                    library: import("../schema/tables/library.table").LibraryTable;
                    api_key: import("../schema/tables/api-key.table").ApiKeyTable;
                    workflow: import("../schema/tables/workflow.table").WorkflowTable;
                    asset: import("../schema/tables/asset.table").AssetTable;
                    album: AlbumTable;
                    person: import("../schema/tables/person.table").PersonTable;
                    smart_search: import("../schema/tables/smart-search.table").SmartSearchTable;
                    face_search: import("../schema/tables/face-search.table").FaceSearchTable;
                    user: import("../schema/tables/user.table").UserTable;
                    user_metadata_audit: import("../schema/tables/user-metadata-audit.table").UserMetadataAuditTable;
                    asset_metadata_audit: import("../schema/tables/asset-metadata-audit.table").AssetMetadataAuditTable;
                    asset_face_audit: import("../schema/tables/asset-face-audit.table").AssetFaceAuditTable;
                    asset_edit_audit: import("../schema/tables/asset-edit-audit.table").AssetEditAuditTable;
                    stack: import("../schema/tables/stack.table").StackTable;
                    kysely_migrations: {
                        timestamp: string;
                        name: string;
                    };
                    activity: import("../schema/tables/activity.table").ActivityTable;
                    album_audit: import("../schema/tables/album-audit.table").AlbumAuditTable;
                    album_asset: import("../schema/tables/album-asset.table").AlbumAssetTable;
                    album_asset_audit: import("../schema/tables/album-asset-audit.table").AlbumAssetAuditTable;
                    album_user: import("../schema/tables/album-user.table").AlbumUserTable;
                    album_user_audit: import("../schema/tables/album-user-audit.table").AlbumUserAuditTable;
                    asset_audit: import("../schema/tables/asset-audit.table").AssetAuditTable;
                    asset_edit: import("../schema/tables/asset-edit.table").AssetEditTable;
                    asset_exif: AssetExifTable;
                    asset_face: import("../schema/tables/asset-face.table").AssetFaceTable;
                    asset_file: import("../schema/tables/asset-file.table").AssetFileTable;
                    asset_metadata: import("../schema/tables/asset-metadata.table").AssetMetadataTable;
                    asset_job_status: import("../schema/tables/asset-job-status.table").AssetJobStatusTable;
                    asset_ocr: import("../schema/tables/asset-ocr.table").AssetOcrTable;
                    asset_ocr_audit: import("../schema/tables/asset-ocr-audit.table").AssetOcrAuditTable;
                    asset_audio: import("../schema/tables/asset-av.table").AssetAudioTable;
                    asset_video: import("../schema/tables/asset-av.table").AssetVideoTable;
                    asset_keyframe: import("../schema/tables/asset-av.table").AssetKeyframeTable;
                    ocr_search: import("../schema/tables/ocr-search.table").OcrSearchTable;
                    geodata_places: import("../schema/tables/geodata-places.table").GeodataPlacesTable;
                    integrity_report: import("../schema/tables/integrity-report.table").IntegrityReportTable;
                    memory: import("../schema/tables/memory.table").MemoryTable;
                    memory_audit: import("../schema/tables/memory-audit.table").MemoryAuditTable;
                    memory_asset: import("../schema/tables/memory-asset.table").MemoryAssetTable;
                    memory_asset_audit: import("../schema/tables/memory-asset-audit.table").MemoryAssetAuditTable;
                    migrations: import("src/schema").Migrations;
                    notification: import("../schema/tables/notification.table").NotificationTable;
                    move_history: import("../schema/tables/move.table").MoveTable;
                    naturalearth_countries: import("../schema/tables/natural-earth-countries.table").NaturalEarthCountriesTable;
                    partner: import("../schema/tables/partner.table").PartnerTable;
                    partner_audit: import("../schema/tables/partner-audit.table").PartnerAuditTable;
                    person_audit: import("../schema/tables/person-audit.table").PersonAuditTable;
                    session: import("../schema/tables/session.table").SessionTable;
                    session_sync_checkpoint: import("../schema/tables/sync-checkpoint.table").SessionSyncCheckpointTable;
                    shared_link: import("../schema/tables/shared-link.table").SharedLinkTable;
                    shared_link_asset: import("../schema/tables/shared-link-asset.table").SharedLinkAssetTable;
                    stack_audit: import("../schema/tables/stack-audit.table").StackAuditTable;
                    system_metadata: import("../schema/tables/system-metadata.table").SystemMetadataTable<import("src/enum").SystemMetadataKey>;
                    tag: import("../schema/tables/tag.table").TagTable;
                    tag_asset: import("../schema/tables/tag-asset.table").TagAssetTable;
                    tag_closure: import("../schema/tables/tag-closure.table").TagClosureTable;
                    user_audit: import("../schema/tables/user-audit.table").UserAuditTable;
                    user_metadata: import("../schema/tables/user-metadata.table").UserMetadataTable<import("src/enum").UserMetadataKey>;
                    version_history: import("../schema/tables/version-history.table").VersionHistoryTable;
                    video_stream_session: import("../schema/tables/video-stream.table").VideoStreamSessionTable;
                    video_stream_variant: import("../schema/tables/video-stream.table").VideoStreamVariantTable;
                    video_stream_segment: import("../schema/tables/video-stream.table").VideoStreamSegmentTable;
                    plugin: import("../schema/tables/plugin.table").PluginTable;
                    plugin_method: import("../schema/tables/plugin-method.table").PluginMethodTable;
                    workflow_step: import("../schema/tables/workflow-step.table").WorkflowStepTable;
                    dummy: unknown;
                }, "album" | "user" | "album_user" | "dummy", "avatarColor">;
                profileChangedAt: string;
            };
        }[];
        albumName: string;
        albumThumbnailAssetId: string | null;
        isActivityEnabled: boolean;
        order: import("src/enum").AssetOrder;
        sharedLinks: {
            password: string | null;
            key: string;
            slug: string | null;
            id: string;
            description: string | null;
            createdAt: string;
            type: import("src/enum").SharedLinkType;
            userId: string;
            expiresAt: string | null;
            albumId: string | null;
            showExif: boolean;
            allowUpload: boolean;
            allowDownload: boolean;
        }[];
    } | undefined>;
    getByAssetId(ownerId: string, assetId: string): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        albumName: string;
        albumThumbnailAssetId: string | null;
        isActivityEnabled: boolean;
        order: import("src/enum").AssetOrder;
        albumUsers: {
            role: AlbumUserRole;
            user: {
                id: string;
                email: string;
                name: string;
                profileImagePath: string;
                avatarColor: import("kysely").ExtractColumnType<{
                    library: import("../schema/tables/library.table").LibraryTable;
                    api_key: import("../schema/tables/api-key.table").ApiKeyTable;
                    workflow: import("../schema/tables/workflow.table").WorkflowTable;
                    asset: import("../schema/tables/asset.table").AssetTable;
                    album: AlbumTable;
                    person: import("../schema/tables/person.table").PersonTable;
                    smart_search: import("../schema/tables/smart-search.table").SmartSearchTable;
                    face_search: import("../schema/tables/face-search.table").FaceSearchTable;
                    user: import("../schema/tables/user.table").UserTable;
                    user_metadata_audit: import("../schema/tables/user-metadata-audit.table").UserMetadataAuditTable;
                    asset_metadata_audit: import("../schema/tables/asset-metadata-audit.table").AssetMetadataAuditTable;
                    asset_face_audit: import("../schema/tables/asset-face-audit.table").AssetFaceAuditTable;
                    asset_edit_audit: import("../schema/tables/asset-edit-audit.table").AssetEditAuditTable;
                    stack: import("../schema/tables/stack.table").StackTable;
                    kysely_migrations: {
                        timestamp: string;
                        name: string;
                    };
                    activity: import("../schema/tables/activity.table").ActivityTable;
                    album_audit: import("../schema/tables/album-audit.table").AlbumAuditTable;
                    album_asset: import("../schema/tables/album-asset.table").AlbumAssetTable;
                    album_asset_audit: import("../schema/tables/album-asset-audit.table").AlbumAssetAuditTable;
                    album_user: import("../schema/tables/album-user.table").AlbumUserTable;
                    album_user_audit: import("../schema/tables/album-user-audit.table").AlbumUserAuditTable;
                    asset_audit: import("../schema/tables/asset-audit.table").AssetAuditTable;
                    asset_edit: import("../schema/tables/asset-edit.table").AssetEditTable;
                    asset_exif: AssetExifTable;
                    asset_face: import("../schema/tables/asset-face.table").AssetFaceTable;
                    asset_file: import("../schema/tables/asset-file.table").AssetFileTable;
                    asset_metadata: import("../schema/tables/asset-metadata.table").AssetMetadataTable;
                    asset_job_status: import("../schema/tables/asset-job-status.table").AssetJobStatusTable;
                    asset_ocr: import("../schema/tables/asset-ocr.table").AssetOcrTable;
                    asset_ocr_audit: import("../schema/tables/asset-ocr-audit.table").AssetOcrAuditTable;
                    asset_audio: import("../schema/tables/asset-av.table").AssetAudioTable;
                    asset_video: import("../schema/tables/asset-av.table").AssetVideoTable;
                    asset_keyframe: import("../schema/tables/asset-av.table").AssetKeyframeTable;
                    ocr_search: import("../schema/tables/ocr-search.table").OcrSearchTable;
                    geodata_places: import("../schema/tables/geodata-places.table").GeodataPlacesTable;
                    integrity_report: import("../schema/tables/integrity-report.table").IntegrityReportTable;
                    memory: import("../schema/tables/memory.table").MemoryTable;
                    memory_audit: import("../schema/tables/memory-audit.table").MemoryAuditTable;
                    memory_asset: import("../schema/tables/memory-asset.table").MemoryAssetTable;
                    memory_asset_audit: import("../schema/tables/memory-asset-audit.table").MemoryAssetAuditTable;
                    migrations: import("src/schema").Migrations;
                    notification: import("../schema/tables/notification.table").NotificationTable;
                    move_history: import("../schema/tables/move.table").MoveTable;
                    naturalearth_countries: import("../schema/tables/natural-earth-countries.table").NaturalEarthCountriesTable;
                    partner: import("../schema/tables/partner.table").PartnerTable;
                    partner_audit: import("../schema/tables/partner-audit.table").PartnerAuditTable;
                    person_audit: import("../schema/tables/person-audit.table").PersonAuditTable;
                    session: import("../schema/tables/session.table").SessionTable;
                    session_sync_checkpoint: import("../schema/tables/sync-checkpoint.table").SessionSyncCheckpointTable;
                    shared_link: import("../schema/tables/shared-link.table").SharedLinkTable;
                    shared_link_asset: import("../schema/tables/shared-link-asset.table").SharedLinkAssetTable;
                    stack_audit: import("../schema/tables/stack-audit.table").StackAuditTable;
                    system_metadata: import("../schema/tables/system-metadata.table").SystemMetadataTable<import("src/enum").SystemMetadataKey>;
                    tag: import("../schema/tables/tag.table").TagTable;
                    tag_asset: import("../schema/tables/tag-asset.table").TagAssetTable;
                    tag_closure: import("../schema/tables/tag-closure.table").TagClosureTable;
                    user_audit: import("../schema/tables/user-audit.table").UserAuditTable;
                    user_metadata: import("../schema/tables/user-metadata.table").UserMetadataTable<import("src/enum").UserMetadataKey>;
                    version_history: import("../schema/tables/version-history.table").VersionHistoryTable;
                    video_stream_session: import("../schema/tables/video-stream.table").VideoStreamSessionTable;
                    video_stream_variant: import("../schema/tables/video-stream.table").VideoStreamVariantTable;
                    video_stream_segment: import("../schema/tables/video-stream.table").VideoStreamSegmentTable;
                    plugin: import("../schema/tables/plugin.table").PluginTable;
                    plugin_method: import("../schema/tables/plugin-method.table").PluginMethodTable;
                    workflow_step: import("../schema/tables/workflow-step.table").WorkflowStepTable;
                    dummy: unknown;
                }, "album" | "user" | "album_user" | "dummy", "avatarColor">;
                profileChangedAt: string;
            };
        }[];
    }[]>;
    getByAssetIds(ownerId: string, assetIds: string[]): Promise<Map<string, string[]>>;
    getMetadataForIds(ids: string[]): Promise<AlbumAssetCount[]>;
    private buildAlbumBaseQuery;
    getAll(ownerId: string, options?: {
        id?: string;
        isOwned?: boolean;
        isShared?: boolean;
        name?: string;
    }): Promise<MapAlbumDto[]>;
    getAllIds(ownerId: string, options?: {
        isOwned?: boolean;
        isShared?: boolean;
    }): Promise<string[]>;
    restoreAll(userId: string): Promise<void>;
    softDeleteAll(userId: string): Promise<void>;
    deleteAll(userId: string): Promise<void>;
    removeAssetsFromAll(assetIds: string[]): Promise<void>;
    removeAssetIds(albumId: string, assetIds: string[]): Promise<void>;
    getAssetIds(albumId: string, assetIds: string[]): Promise<Set<string>>;
    addAssetIds(albumId: string, assetIds: string[]): Promise<void>;
    create(album: Insertable<AlbumTable>, assetIds: string[], albumUsers: AlbumUserCreateDto[], authUserId: string): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        assets: {
            id: string;
            createdAt: string;
            type: import("src/enum").AssetType;
            fileCreatedAt: string;
            localDateTime: string;
            duration: number | null;
            updatedAt: string;
            deletedAt: string | null;
            status: import("src/enum").AssetStatus;
            updateId: string;
            ownerId: string;
            width: number | null;
            height: number | null;
            checksum: string;
            checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
            duplicateId: string | null;
            exifInfo: ShallowDehydrateObject<{
                description: string;
                rating: number | null;
                colorspace: string | null;
                assetId: string;
                state: string | null;
                updatedAt: Date;
                updateId: string;
                tags: string[] | null;
                city: string | null;
                country: string | null;
                make: string | null;
                model: string | null;
                lensModel: string | null;
                latitude: number | null;
                longitude: number | null;
                exifImageWidth: number | null;
                exifImageHeight: number | null;
                fileSizeInByte: number | null;
                orientation: string | null;
                dateTimeOriginal: Date | null;
                modifyDate: Date | null;
                timeZone: string | null;
                fNumber: number | null;
                focalLength: number | null;
                iso: number | null;
                exposureTime: string | null;
                projectionType: string | null;
                fps: number | null;
                livePhotoCID: string | null;
                profileDescription: string | null;
                bitsPerSample: number | null;
                autoStackId: string | null;
                lockedProperties: ("description" | "rating" | "tags" | "latitude" | "longitude" | "dateTimeOriginal" | "timeZone")[] | null;
            }>;
            fileModifiedAt: string;
            isExternal: boolean;
            isFavorite: boolean;
            isOffline: boolean;
            visibility: import("src/enum").AssetVisibility;
            libraryId: string | null;
            livePhotoVideoId: string | null;
            originalFileName: string;
            originalPath: string;
            stackId: string | null;
            thumbhash: string | null;
            isEdited: boolean;
        }[];
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        albumUsers: {
            role: AlbumUserRole;
            user: {
                id: string;
                email: string;
                name: string;
                profileImagePath: string;
                avatarColor: import("kysely").ExtractColumnType<{
                    library: import("../schema/tables/library.table").LibraryTable;
                    api_key: import("../schema/tables/api-key.table").ApiKeyTable;
                    workflow: import("../schema/tables/workflow.table").WorkflowTable;
                    asset: import("../schema/tables/asset.table").AssetTable;
                    album: AlbumTable;
                    person: import("../schema/tables/person.table").PersonTable;
                    smart_search: import("../schema/tables/smart-search.table").SmartSearchTable;
                    face_search: import("../schema/tables/face-search.table").FaceSearchTable;
                    user: import("../schema/tables/user.table").UserTable;
                    user_metadata_audit: import("../schema/tables/user-metadata-audit.table").UserMetadataAuditTable;
                    asset_metadata_audit: import("../schema/tables/asset-metadata-audit.table").AssetMetadataAuditTable;
                    asset_face_audit: import("../schema/tables/asset-face-audit.table").AssetFaceAuditTable;
                    asset_edit_audit: import("../schema/tables/asset-edit-audit.table").AssetEditAuditTable;
                    stack: import("../schema/tables/stack.table").StackTable;
                    kysely_migrations: {
                        timestamp: string;
                        name: string;
                    };
                    activity: import("../schema/tables/activity.table").ActivityTable;
                    album_audit: import("../schema/tables/album-audit.table").AlbumAuditTable;
                    album_asset: import("../schema/tables/album-asset.table").AlbumAssetTable;
                    album_asset_audit: import("../schema/tables/album-asset-audit.table").AlbumAssetAuditTable;
                    album_user: import("../schema/tables/album-user.table").AlbumUserTable;
                    album_user_audit: import("../schema/tables/album-user-audit.table").AlbumUserAuditTable;
                    asset_audit: import("../schema/tables/asset-audit.table").AssetAuditTable;
                    asset_edit: import("../schema/tables/asset-edit.table").AssetEditTable;
                    asset_exif: AssetExifTable;
                    asset_face: import("../schema/tables/asset-face.table").AssetFaceTable;
                    asset_file: import("../schema/tables/asset-file.table").AssetFileTable;
                    asset_metadata: import("../schema/tables/asset-metadata.table").AssetMetadataTable;
                    asset_job_status: import("../schema/tables/asset-job-status.table").AssetJobStatusTable;
                    asset_ocr: import("../schema/tables/asset-ocr.table").AssetOcrTable;
                    asset_ocr_audit: import("../schema/tables/asset-ocr-audit.table").AssetOcrAuditTable;
                    asset_audio: import("../schema/tables/asset-av.table").AssetAudioTable;
                    asset_video: import("../schema/tables/asset-av.table").AssetVideoTable;
                    asset_keyframe: import("../schema/tables/asset-av.table").AssetKeyframeTable;
                    ocr_search: import("../schema/tables/ocr-search.table").OcrSearchTable;
                    geodata_places: import("../schema/tables/geodata-places.table").GeodataPlacesTable;
                    integrity_report: import("../schema/tables/integrity-report.table").IntegrityReportTable;
                    memory: import("../schema/tables/memory.table").MemoryTable;
                    memory_audit: import("../schema/tables/memory-audit.table").MemoryAuditTable;
                    memory_asset: import("../schema/tables/memory-asset.table").MemoryAssetTable;
                    memory_asset_audit: import("../schema/tables/memory-asset-audit.table").MemoryAssetAuditTable;
                    migrations: import("src/schema").Migrations;
                    notification: import("../schema/tables/notification.table").NotificationTable;
                    move_history: import("../schema/tables/move.table").MoveTable;
                    naturalearth_countries: import("../schema/tables/natural-earth-countries.table").NaturalEarthCountriesTable;
                    partner: import("../schema/tables/partner.table").PartnerTable;
                    partner_audit: import("../schema/tables/partner-audit.table").PartnerAuditTable;
                    person_audit: import("../schema/tables/person-audit.table").PersonAuditTable;
                    session: import("../schema/tables/session.table").SessionTable;
                    session_sync_checkpoint: import("../schema/tables/sync-checkpoint.table").SessionSyncCheckpointTable;
                    shared_link: import("../schema/tables/shared-link.table").SharedLinkTable;
                    shared_link_asset: import("../schema/tables/shared-link-asset.table").SharedLinkAssetTable;
                    stack_audit: import("../schema/tables/stack-audit.table").StackAuditTable;
                    system_metadata: import("../schema/tables/system-metadata.table").SystemMetadataTable<import("src/enum").SystemMetadataKey>;
                    tag: import("../schema/tables/tag.table").TagTable;
                    tag_asset: import("../schema/tables/tag-asset.table").TagAssetTable;
                    tag_closure: import("../schema/tables/tag-closure.table").TagClosureTable;
                    user_audit: import("../schema/tables/user-audit.table").UserAuditTable;
                    user_metadata: import("../schema/tables/user-metadata.table").UserMetadataTable<import("src/enum").UserMetadataKey>;
                    version_history: import("../schema/tables/version-history.table").VersionHistoryTable;
                    video_stream_session: import("../schema/tables/video-stream.table").VideoStreamSessionTable;
                    video_stream_variant: import("../schema/tables/video-stream.table").VideoStreamVariantTable;
                    video_stream_segment: import("../schema/tables/video-stream.table").VideoStreamSegmentTable;
                    plugin: import("../schema/tables/plugin.table").PluginTable;
                    plugin_method: import("../schema/tables/plugin-method.table").PluginMethodTable;
                    workflow_step: import("../schema/tables/workflow-step.table").WorkflowStepTable;
                    dummy: unknown;
                }, "album" | "user" | "album_user" | "dummy", "avatarColor">;
                profileChangedAt: string;
            };
        }[];
        albumName: string;
        albumThumbnailAssetId: string | null;
        isActivityEnabled: boolean;
        order: import("src/enum").AssetOrder;
    }>;
    update(id: string, album: Updateable<AlbumTable>, authUserId: string): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        updateId: string;
        albumName: string;
        albumThumbnailAssetId: string | null;
        isActivityEnabled: boolean;
        order: import("src/enum").AssetOrder;
        sharedLinks: {
            password: string | null;
            key: string;
            slug: string | null;
            id: string;
            description: string | null;
            createdAt: string;
            type: import("src/enum").SharedLinkType;
            userId: string;
            expiresAt: string | null;
            albumId: string | null;
            showExif: boolean;
            allowUpload: boolean;
            allowDownload: boolean;
        }[];
        albumUsers: {
            role: AlbumUserRole;
            user: {
                id: string;
                email: string;
                name: string;
                profileImagePath: string;
                avatarColor: import("kysely").ExtractColumnType<{
                    library: import("../schema/tables/library.table").LibraryTable;
                    api_key: import("../schema/tables/api-key.table").ApiKeyTable;
                    workflow: import("../schema/tables/workflow.table").WorkflowTable;
                    asset: import("../schema/tables/asset.table").AssetTable;
                    album: AlbumTable;
                    person: import("../schema/tables/person.table").PersonTable;
                    smart_search: import("../schema/tables/smart-search.table").SmartSearchTable;
                    face_search: import("../schema/tables/face-search.table").FaceSearchTable;
                    user: import("../schema/tables/user.table").UserTable;
                    user_metadata_audit: import("../schema/tables/user-metadata-audit.table").UserMetadataAuditTable;
                    asset_metadata_audit: import("../schema/tables/asset-metadata-audit.table").AssetMetadataAuditTable;
                    asset_face_audit: import("../schema/tables/asset-face-audit.table").AssetFaceAuditTable;
                    asset_edit_audit: import("../schema/tables/asset-edit-audit.table").AssetEditAuditTable;
                    stack: import("../schema/tables/stack.table").StackTable;
                    kysely_migrations: {
                        timestamp: string;
                        name: string;
                    };
                    activity: import("../schema/tables/activity.table").ActivityTable;
                    album_audit: import("../schema/tables/album-audit.table").AlbumAuditTable;
                    album_asset: import("../schema/tables/album-asset.table").AlbumAssetTable;
                    album_asset_audit: import("../schema/tables/album-asset-audit.table").AlbumAssetAuditTable;
                    album_user: import("../schema/tables/album-user.table").AlbumUserTable;
                    album_user_audit: import("../schema/tables/album-user-audit.table").AlbumUserAuditTable;
                    asset_audit: import("../schema/tables/asset-audit.table").AssetAuditTable;
                    asset_edit: import("../schema/tables/asset-edit.table").AssetEditTable;
                    asset_exif: AssetExifTable;
                    asset_face: import("../schema/tables/asset-face.table").AssetFaceTable;
                    asset_file: import("../schema/tables/asset-file.table").AssetFileTable;
                    asset_metadata: import("../schema/tables/asset-metadata.table").AssetMetadataTable;
                    asset_job_status: import("../schema/tables/asset-job-status.table").AssetJobStatusTable;
                    asset_ocr: import("../schema/tables/asset-ocr.table").AssetOcrTable;
                    asset_ocr_audit: import("../schema/tables/asset-ocr-audit.table").AssetOcrAuditTable;
                    asset_audio: import("../schema/tables/asset-av.table").AssetAudioTable;
                    asset_video: import("../schema/tables/asset-av.table").AssetVideoTable;
                    asset_keyframe: import("../schema/tables/asset-av.table").AssetKeyframeTable;
                    ocr_search: import("../schema/tables/ocr-search.table").OcrSearchTable;
                    geodata_places: import("../schema/tables/geodata-places.table").GeodataPlacesTable;
                    integrity_report: import("../schema/tables/integrity-report.table").IntegrityReportTable;
                    memory: import("../schema/tables/memory.table").MemoryTable;
                    memory_audit: import("../schema/tables/memory-audit.table").MemoryAuditTable;
                    memory_asset: import("../schema/tables/memory-asset.table").MemoryAssetTable;
                    memory_asset_audit: import("../schema/tables/memory-asset-audit.table").MemoryAssetAuditTable;
                    migrations: import("src/schema").Migrations;
                    notification: import("../schema/tables/notification.table").NotificationTable;
                    move_history: import("../schema/tables/move.table").MoveTable;
                    naturalearth_countries: import("../schema/tables/natural-earth-countries.table").NaturalEarthCountriesTable;
                    partner: import("../schema/tables/partner.table").PartnerTable;
                    partner_audit: import("../schema/tables/partner-audit.table").PartnerAuditTable;
                    person_audit: import("../schema/tables/person-audit.table").PersonAuditTable;
                    session: import("../schema/tables/session.table").SessionTable;
                    session_sync_checkpoint: import("../schema/tables/sync-checkpoint.table").SessionSyncCheckpointTable;
                    shared_link: import("../schema/tables/shared-link.table").SharedLinkTable;
                    shared_link_asset: import("../schema/tables/shared-link-asset.table").SharedLinkAssetTable;
                    stack_audit: import("../schema/tables/stack-audit.table").StackAuditTable;
                    system_metadata: import("../schema/tables/system-metadata.table").SystemMetadataTable<import("src/enum").SystemMetadataKey>;
                    tag: import("../schema/tables/tag.table").TagTable;
                    tag_asset: import("../schema/tables/tag-asset.table").TagAssetTable;
                    tag_closure: import("../schema/tables/tag-closure.table").TagClosureTable;
                    user_audit: import("../schema/tables/user-audit.table").UserAuditTable;
                    user_metadata: import("../schema/tables/user-metadata.table").UserMetadataTable<import("src/enum").UserMetadataKey>;
                    version_history: import("../schema/tables/version-history.table").VersionHistoryTable;
                    video_stream_session: import("../schema/tables/video-stream.table").VideoStreamSessionTable;
                    video_stream_variant: import("../schema/tables/video-stream.table").VideoStreamVariantTable;
                    video_stream_segment: import("../schema/tables/video-stream.table").VideoStreamSegmentTable;
                    plugin: import("../schema/tables/plugin.table").PluginTable;
                    plugin_method: import("../schema/tables/plugin-method.table").PluginMethodTable;
                    workflow_step: import("../schema/tables/workflow-step.table").WorkflowStepTable;
                    dummy: unknown;
                }, "album" | "user" | "album_user" | "dummy", "avatarColor">;
                profileChangedAt: string;
            };
        }[];
    }>;
    delete(id: string): Promise<void>;
    addAssetIdsToAlbums(values: {
        albumId: string;
        assetId: string;
    }[]): Promise<void>;
    updateThumbnails(): Promise<number | undefined>;
    private updateThumbnailBuilder;
    getContributorCounts(id: string): Promise<{
        userId: string;
        assetCount: number;
    }[]>;
    copyAlbums({ sourceAssetId, targetAssetId }: {
        sourceAssetId: string;
        targetAssetId: string;
    }): Promise<import("kysely").InsertResult[]>;
}
