import { type CompiledManifest, type ContentProvider, type RouteEntry } from '../content/provider.js';
export interface S3ContentProviderConfig {
    bucket?: string;
    keyPrefix?: string;
    region?: string;
    accessKeyId?: string;
    secretAccessKey?: string;
    sessionToken?: string;
    endpoint?: string;
}
type ResolvedS3Config = Required<S3ContentProviderConfig>;
export declare class S3ContentProvider implements ContentProvider {
    #private;
    readonly config: ResolvedS3Config;
    constructor(config?: S3ContentProviderConfig);
    listRoutes(): Promise<RouteEntry[]>;
    getSiteConfig<T = unknown>(): Promise<T>;
    getPage<T = unknown>(route: string): Promise<T>;
    getFragment<T = unknown>(id: string): Promise<T>;
    manifest(): Promise<CompiledManifest>;
    fetchRaw(key: string): Promise<Response>;
    private getJSON;
}
export declare function getS3JSON<T>(key: string, config: ResolvedS3Config): Promise<T>;
export declare function getS3Raw(key: string, config: ResolvedS3Config): Promise<Response>;
export {};
