import { S3Zone } from '../../types'; export declare class S3Instance { private accessKey; private secretKey; private client; private defaultEndpoint?; private defaultRegion; constructor(accessKey: string, secretKey: string, endpoint?: string, region?: S3Zone); private createClient; /** * 获取上传信息(预签名 URL) */ getUploadInfo(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise<{ key: string; uploadUrl: string; bucket: string; accessKey: string; }>; /** * 删除文件 */ removeFile(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise; /** * 检查对象是否存在 */ isExistObject(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise; /** * 获取文件访问 URL */ getFileUrl(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): string; /** * 创建分片上传 */ createMultipartUpload(bucket: string, key: string, endpoint?: string, contentType?: string): Promise<{ uploadId: string; bucket: string; key: string; }>; /** * 准备分片上传(创建分片上传并生成所有分片的预签名URL) * 用于前端直传场景,返回 uploadId 和每个分片的上传 URL */ prepareMultipartUpload(bucket: string, key: string, partCount: number, options?: { endpoint?: string; contentType?: string; expiresIn?: number; }): Promise<{ uploadId: string; parts: { partNumber: number; uploadUrl: string; }[]; }>; /** * 上传分片 */ uploadPart(bucket: string, key: string, uploadId: string, partNumber: number, body: Buffer | Uint8Array | string, endpoint?: string): Promise<{ partNumber: number; eTag: string; }>; /** * 完成分片上传 */ completeMultipartUpload(bucket: string, key: string, uploadId: string, parts: Array<{ partNumber: number; eTag: string; }>, endpoint?: string): Promise<{ location: string | undefined; bucket: string; key: string; eTag: string | undefined; }>; /** * 中止分片上传 */ abortMultipartUpload(bucket: string, key: string, uploadId: string, endpoint?: string): Promise; /** * 列出已上传的分片 */ listParts(bucket: string, key: string, uploadId: string, endpoint?: string, maxParts?: number): Promise<{ parts: { partNumber: number; eTag: string; size: number; lastModified: Date | undefined; }[]; isTruncated: boolean | undefined; nextPartNumberMarker: string | undefined; }>; /** * 获取预签名 URL(通用方法) */ getSignedUrl(bucket: string, key: string, operation?: 'get' | 'put', expiresIn?: number, endpoint?: string): Promise; /** * 获取预签名对象URL(统一接口) */ presignObjectUrl(method: 'GET' | 'PUT' | 'POST' | 'DELETE', bucket: string, zone: S3Zone | undefined, key: string, options?: { expires?: number; endpoint?: string; }): Promise<{ url: string; headers?: Record; formdata?: Record; }>; }