import { AccessList } from './AccessList'; export interface HeadersObject { [key: string]: string; } export declare enum FileObjectType { URL = "url", IPFS = "ipfs", ARWEAVE = "arweave", S3 = "s3", FTP = "ftp" } export declare enum EncryptMethod { AES = "AES", ECIES = "ECIES" } export interface BaseFileObject { type: FileObjectType | string; encryptedBy?: string; encryptMethod?: EncryptMethod; } export interface UrlFileObject extends BaseFileObject { url: string; method: string; headers?: HeadersObject; } export interface IpfsFileObject extends BaseFileObject { hash: string; } export interface ArweaveFileObject extends BaseFileObject { transactionId: string; } export interface S3Object { endpoint: string; region?: string; objectKey: string; bucket: string; accessKeyId: string; secretAccessKey: string; /** If true, use path-style addressing (e.g. endpoint/bucket/key). Required for some S3-compatible services (e.g. MinIO). Default false (virtual-host style, e.g. bucket.endpoint/key). */ forcePathStyle?: boolean; } export interface S3FileObject extends BaseFileObject { s3Access: S3Object; } export interface FtpFileObject extends BaseFileObject { /** Full FTP or FTPS URL: ftp://[user:password@]host[:port]/path or ftps://... */ url: string; } export interface PersistentStorageObject extends BaseFileObject { type: 'nodePersistentStorage'; bucketId: string; fileName: string; } export type StorageObject = UrlFileObject | IpfsFileObject | ArweaveFileObject | S3FileObject | FtpFileObject | PersistentStorageObject; export type PersistentStorageAccessList = AccessList; export interface PersistentStorageCreateBucketRequest { accessLists: PersistentStorageAccessList[]; label?: string; } export interface PersistentStorageBucket { bucketId: string; owner: string; createdAt: number; accessLists: PersistentStorageAccessList[]; label?: string | null; } export interface PersistentStorageFileEntry { bucketId: string; name: string; size: number; lastModified: number; } export interface PersistentStorageDeleteFileResponse { success: boolean; } export interface PersistentStorageUpdateBucketResponse { bucketId: string; label: string | null; }