export interface DigitalOceanConfig {
    apiToken?: string;
    accessKeyId: string;
    secretAccessKey: string;
    region: string;
    spaceName?: string;
    endpoint?: string;
}
export interface SpaceInfo {
    name: string;
    region: string;
    endpoint: string;
    cdnEndpoint?: string;
    createdAt?: string;
    size?: number;
    objectCount?: number;
}
export interface UploadResult {
    url: string;
    key: string;
    cdnUrl?: string;
    etag?: string;
}
export declare class DigitalOceanSpaces {
    private config;
    private endpoint;
    private cdnEndpoint;
    static readonly AVAILABLE_REGIONS: {
        code: string;
        name: string;
        location: string;
    }[];
    constructor(config: DigitalOceanConfig);
    static getAvailableRegions(): {
        code: string;
        name: string;
        location: string;
    }[];
    listSpaces(): Promise<SpaceInfo[]>;
    createSpace(spaceName: string, region?: string, makePublic?: boolean): Promise<SpaceInfo>;
    uploadImage(imageData: string | Buffer, filename: string, contentType?: string, makePublic?: boolean): Promise<UploadResult>;
    uploadMultipleImages(images: {
        data: string | Buffer;
        filename: string;
        contentType?: string;
    }[]): Promise<UploadResult[]>;
    private uploadToSpace;
    private generateImageKey;
    private generateAuthHeader;
    private calculateSignature;
    private hmacSha256;
    private sha256;
    private parseListBucketsResponse;
    testConnection(): Promise<boolean>;
    enableCDN(spaceName?: string): Promise<string>;
}
//# sourceMappingURL=digitalocean-spaces.d.ts.map