import type { Context } from '@txstate-mws/graphql-server'; import { DateTime } from 'luxon'; import type { Queryable } from 'mysql2-async'; import { Asset, type AssetFilter, AssetResize, type VersionedService, AssetFolder, DownloadRecord, type DownloadsFilter } from '../internal.js'; export interface AssetInput { name: string; filename: string; checksum: string; mime: string; size: number; width?: number; height?: number; modifiedBy?: string; modifiedAt?: string; meta?: any; } export interface CreateAssetInput extends AssetInput { folderId: string; legacyId?: string; createdBy?: string; createdAt?: string; linkId?: string; uploadedFilename?: string; } export interface ReplaceAssetInput extends AssetInput { assetId: string; } export interface AssetRow { id: number; name: string; folderId: number; dataId: number; linkId: string; shasum: string; deletedAt?: Date; } export interface AssetRowWithPagetreeId extends AssetRow { pagetreeId: number; } export declare function getAssets(filter?: AssetFilter, tdb?: Queryable): Promise; export declare function getAssetsByPath(paths: string[], filter: AssetFilter, ctx: Context): Promise<{ key: string; value: Asset; }[]>; export declare function getResizes(assetInternalIds: number[]): Promise<{ key: any; value: AssetResize; }[]>; export declare function getResizesById(resizeIds: string[]): Promise; export declare function getLatestDownload(asset: Asset, resizeBinaryIds: number[]): Promise | DateTime>; export declare function recordDownload(checksum: string): void; export declare function getDownloads(assetIds: string[], filter?: DownloadsFilter): Promise; export declare function getResizeDownloads(resizeIds: string[], filter?: DownloadsFilter): Promise; export declare function compressDownloads(): Promise; export declare function getFullTextForIndexing(data: any): string[]; export declare function getIndexes(data: any): { name: string; values: string[]; }[]; export declare function createAsset(versionedService: VersionedService, userId: string, args: CreateAssetInput, opts?: { numerate?: boolean; }): Promise; export declare function replaceAsset(versionedService: VersionedService, userId: string, args: ReplaceAssetInput): Promise; export declare function updateAssetMeta(versionedService: VersionedService, asset: Asset, meta: any, userId: string, stamps?: { modifiedBy: string; modifiedAt: Date; }): Promise; export declare function renameAsset(versionedService: VersionedService, internalId: number, assetId: string, name: string, extension: string, folderInternalIdPath: string): Promise; export declare function moveAssets(targetFolder: AssetFolder, assets: Asset[], folders: AssetFolder[]): Promise; export declare function copyAssets(targetFolder: AssetFolder, assets: Asset[], folders: AssetFolder[], user: string, versionedService: VersionedService): Promise; export declare function cleanupBinaries(checksums: string[]): Promise; export declare function deleteAsset(id: number, userInternalId: number): Promise; export declare function deleteAssets(ids: number[], userInternalId: number): Promise; export declare function finalizeAssetDeletion(ids: number[], userInternalId: number): Promise; export declare function undeleteAssets(ids: number[]): Promise; export declare function requestResizes(asset: Asset, opts?: { force?: boolean; }): Promise; export declare function setAssetSearchCodes(assets: { internalId: number; name: string; metaFields?: string[]; }[], db: Queryable): Promise;