import type { AccessContext } from '../access.js'; import type { AnyDb } from '../dialect.js'; import type { BucketStorageRegistry } from './registry.js'; export interface StorageExecutionContext { request: Request; user: AccessContext['user']; session: { activeOrganizationId: string | null; }; } export interface StorageOperationsOptions { registry: BucketStorageRegistry; db: AnyDb; presignExpiresSec?: number; } export type PrepareUploadResult = { mode: 'proxy'; uploadUrl: string; } | { mode: 'presign'; fileId: string; uploadUrl: string; method: 'PUT'; confirmUrl: string; }; export type StorageDownload = { kind: 'redirect'; status: 302; url: string; } | { kind: 'body'; status: number; body: ConstructorParameters[0]; headers: Headers; }; export declare function createStorageOperations(options: StorageOperationsOptions): { prepareUpload(bucketName: string, body: { filename?: string; contentType?: string; }, context: StorageExecutionContext): Promise; upload(bucketName: string, file: File, context: StorageExecutionContext): Promise<{ status: 201; fileId: string; url: string; }>; confirmUpload(bucketName: string, id: string, context: StorageExecutionContext): Promise<{ fileId: string; url: string; }>; download(bucketName: string, id: string, query: Record, context: StorageExecutionContext): Promise; delete(bucketName: string, id: string, context: StorageExecutionContext): Promise; }; export type StorageOperations = ReturnType; //# sourceMappingURL=operations.d.ts.map