import { S3Client } from '@aws-sdk/client-s3'; import { Adapter } from '../index.js'; interface ExoscaleAdapterOptions { bucket: string; /** * Exoscale zone code (Exoscale calls these zones rather than regions), * e.g. `"ch-gva-2"` (Geneva), `"ch-dk-2"` (Zurich), `"de-fra-1"` * (Frankfurt), `"de-muc-1"` (Munich), `"at-vie-1"` / `"at-vie-2"` * (Vienna), `"bg-sof-1"` (Sofia). Drives the endpoint host * (`https://sos-.exo.io`); there's no env-var fallback. Doubles * as the SigV4 region. */ region: string; /** * Override the Exoscale endpoint. When unset, defaults to * `https://sos-${region}.exo.io`. SOS routes by Host header — the SDK * prepends the bucket subdomain for virtual-hosted style. */ endpoint?: string; accessKeyId?: string; secretAccessKey?: string; /** * Use path-style addressing (`//`) rather than virtual-hosted * style. Defaults to `false` — virtual-hosted is canonical for SOS. */ forcePathStyle?: boolean; /** * Origin used to build URLs from `url()`. When set, `url(key)` returns * `${publicBaseUrl}/${key}` and skips signing. For public buckets the * natural value is `https://sos-${region}.exo.io/${bucket}` (path-style) * or `https://${bucket}.sos-${region}.exo.io`; a custom CNAME fronting * the bucket also works. When unset, `url()` falls back to a presigned * GetObject (default expiry: 1 hour). */ publicBaseUrl?: string; /** * Default expiry, in seconds, for the presigned URLs returned by `url()` * when `publicBaseUrl` is not set. Defaults to 3600 (1 hour). */ defaultUrlExpiresIn?: number; } type ExoscaleAdapter = Adapter; declare const exoscale: (opts: ExoscaleAdapterOptions) => ExoscaleAdapter; export { type ExoscaleAdapter, type ExoscaleAdapterOptions, exoscale };