import { ComponentsStore } from './store';
import { ComponentWithVersion } from '../component';
/**
 * S3 Components Store implementation
 *
 * This store downloads components from an AWS S3 bucket.
 * It expects components to be organized in the bucket with the following structure:
 *
 * bucket/
 * ├── component1/
 * │   ├── v1.0.0/
 * │   │   ├── component1-v1.0.0-win32.zip
 * │   │   ├── component1-v1.0.0-darwin.dmg
 * │   │   └── component1-v1.0.0-darwin-arm64.dmg
 * │   └── v1.1.0/
 * │       ├── component1-v1.1.0-win32.zip
 * │       └── component1-v1.1.0-darwin.dmg
 * └── component2/
 *     └── v2.0.0/
 *         └── component2-v2.0.0-win32.zip
 *
 * Authentication is handled through AWS credentials (environment variables, IAM roles, etc.)
 */
export declare class S3ComponentsStore implements ComponentsStore {
    private logger;
    private bucketName;
    private region;
    private prefix;
    private accessKeyId;
    private secretAccessKey;
    constructor(config: {
        bucketName: string;
        region: string;
        prefix?: string;
        accessKeyId?: string;
        secretAccessKey?: string;
    });
    getInfo(): string;
    getAll(): Promise<ComponentWithVersion[]>;
    download(name: string, version: string): Promise<{
        name: string;
        data: any;
        filename: string;
        actualVersion: string;
    }>;
    /**
     * Validate the S3 configuration
     */
    private validateConfiguration;
    /**
     * List all objects in the S3 bucket
     */
    private listAllObjects;
    /**
     * List objects in S3 bucket using ListObjectsV2 API
     */
    private listObjectsV2;
    /**
     * Download an object from S3
     */
    private downloadObject;
    /**
     * Find the S3 object key for a specific component and version
     */
    private findComponentObject;
    /**
     * Parse S3 objects into Component array
     */
    private parseS3ObjectsToComponents;
    /**
     * Parse component information from S3 object key
     */
    private parseComponentFromKey;
    /**
     * Check if a key matches the current platform
     */
    private matchesPlatform;
    /**
     * Extract version from S3 object key
     */
    private extractVersionFromKey;
    /**
     * Extract filename from S3 object key
     */
    private extractFilenameFromKey;
    /**
     * Build S3 API URL for a given object key
     */
    private buildS3ApiUrl;
    /**
     * Create AWS Signature Version 4 authentication headers
     */
    private createAuthHeaders;
    /**
     * Parse S3 ListObjects XML response
     */
    private parseListObjectsResponse;
}
//# sourceMappingURL=s3.store.d.ts.map