import { z } from 'zod';
export type S3BrowserOperation = 'GET' | 'PUT' | 'HEAD' | 'DELETE' | 'LIST' | 'COPY';
export interface S3BrowserSignOptions {
    contentType?: string;
    ttlSec?: number;
    listPrefix?: string;
    listDelimiter?: string;
    listContinuationToken?: string;
    copySource?: string;
}
export type S3BrowserPresignedUrlProvider = (path: string, operation: S3BrowserOperation, options?: S3BrowserSignOptions) => Promise<string>;
export interface S3HttpAgents {
    httpAgent: unknown;
    httpsAgent: unknown;
}
/**
 * Runtime-supplied transport agents (Node proxy support). Called once per
 * client so each client owns its own agents: every S3 op destroys its client
 * when it finishes, and a shared agent pair would tear down sockets that
 * concurrent ops are still using.
 */
export type S3HttpAgentProvider = () => S3HttpAgents;
export declare const S3Config: z.ZodObject<{
    presignedUrlProvider: z.ZodOptional<import("../secrets.ts").SecretSchema<z.ZodCustom<S3BrowserPresignedUrlProvider, S3BrowserPresignedUrlProvider>>>;
    httpAgentProvider: z.ZodOptional<import("../secrets.ts").SecretSchema<z.ZodCustom<S3HttpAgentProvider, S3HttpAgentProvider>>>;
    defaultContentType: z.ZodOptional<z.ZodString>;
    keyPrefix: z.ZodOptional<z.ZodString>;
    timeout: z.ZodOptional<z.ZodNumber>;
    bucket: z.ZodString;
    region: z.ZodOptional<z.ZodString>;
    endpoint: z.ZodOptional<z.ZodString>;
    accessKeyId: z.ZodOptional<import("../secrets.ts").SecretSchema<z.ZodString>>;
    secretAccessKey: z.ZodOptional<import("../secrets.ts").SecretSchema<z.ZodString>>;
    sessionToken: z.ZodOptional<import("../secrets.ts").SecretSchema<z.ZodString>>;
    forcePathStyle: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export interface S3Config {
    bucket: string;
    region?: string;
    endpoint?: string;
    accessKeyId?: string;
    secretAccessKey?: string;
    sessionToken?: string;
    profile?: string;
    forcePathStyle?: boolean;
    timeout?: number;
    presignedUrlProvider?: S3BrowserPresignedUrlProvider;
    httpAgentProvider?: S3HttpAgentProvider;
    defaultContentType?: string;
    keyPrefix?: string;
}
export declare function normalizeKeyPrefix(v: string | undefined): string | undefined;
//# sourceMappingURL=config.d.ts.map