/**
 * S3-backed log storage.
 *
 * Stores execution logs in S3. No TTL -- logs persist indefinitely.
 *
 * Implementation notes:
 * - append() reads existing content + concatenates + puts back (acceptable
 *   for the sequential step model where max ~10MB per step)
 * - read() uses Range header for cursor-based pagination
 * - exists() uses HeadObject
 * - list() uses ListObjectsV2 with prefix
 *
 * Uses AWS SDK v3 modular imports -- only loaded when S3 storage is configured.
 */
import type { LogReadOptions, LogReadResult, LogStorage } from './log-storage.js';
interface S3LogStorageOptions {
    bucket: string;
    prefix: string;
    region?: string;
    /** Custom endpoint URL for S3-compatible services (e.g., SeaweedFS, LocalStack) */
    endpoint?: string;
    /** Use path-style access instead of virtual-hosted-style (required for most S3-compatible services) */
    forcePathStyle?: boolean;
}
export declare class S3LogStorage implements LogStorage {
    private readonly client;
    private readonly bucket;
    private readonly prefix;
    constructor(options: S3LogStorageOptions);
    /** Build the full S3 object key from a log path. */
    private objectKey;
    /** Check if an error is a "not found" error (NoSuchKey, NotFound, 404). */
    private isNotFoundError;
    /** Read the full content of an S3 object as a string. Returns null if not found. */
    private getContent;
    append(path: string, data: string): Promise<void>;
    read(path: string, options?: LogReadOptions): Promise<LogReadResult>;
    exists(path: string): Promise<boolean>;
    list(prefix: string): Promise<string[]>;
}
export {};
//# sourceMappingURL=s3-log-storage.d.ts.map