export type StaticSiteDnsProvider = 'porkbun' | 'godaddy' | {
    provider: 'porkbun';
    apiKey?: string;
    secretKey?: string;
} | {
    provider: 'godaddy';
    apiKey?: string;
    secretKey?: string;
    environment?: 'production' | 'ote';
};
export interface DeploySiteConfig {
    /** Site name used for AWS resource naming. */
    siteName: string;
    /** Apex or subdomain (e.g. "paweldregan.com"). */
    domain: string;
    /** AWS region for the S3 bucket. Defaults to "us-east-1". */
    region?: string;
    /** Output directory containing built files. Defaults to "dist". */
    sourceDir?: string;
    /** S3 bucket name (auto-generated from the domain if omitted). */
    bucket?: string;
    /** CloudFormation stack name (auto-generated if omitted). */
    stackName?: string;
    /** Default root object served at "/". Defaults to "index.html". */
    defaultRootObject?: string;
    /** Error document served on 403/404. Defaults to "404.html". */
    errorDocument?: string;
    /**
     * DNS provider config. Defaults to Porkbun, reading PORKBUN_API_KEY /
     * PORKBUN_SECRET_KEY from env. Pass `'godaddy'` or a full provider
     * object to override.
     */
    dnsProvider?: StaticSiteDnsProvider;
    /** Pre-issued ACM cert ARN. Auto-created when omitted. */
    certificateArn?: string;
    /**
     * Cache-Control header for uploaded objects. Defaults to short-TTL
     * (one hour) so HTML edits propagate quickly; long-lived assets can
     * still set their own Cache-Control via S3 object metadata if needed.
     */
    cacheControl?: string;
    /**
     * SPA mode. Defaults to false. With false, missing files return a
     * real 404 with the error document. With true, missing files fall
     * through to the index document with a 200 — required for
     * client-side-routed SPAs but wrong for multi-page static sites.
     */
    singlePageApp?: boolean;
    /** Empty the bucket before uploading (default: false). */
    cleanBucket?: boolean;
    /** AWS resource tags. */
    tags?: Record<string, string>;
    /** Progress callback. */
    onProgress?: (stage: string, detail?: string) => void;
}
export interface DeploySiteResult {
    success: boolean;
    domain?: string;
    url?: string;
    bucket?: string;
    distributionId?: string;
    distributionDomain?: string;
    certificateArn?: string;
    filesUploaded?: number;
    filesSkipped?: number;
    message?: string;
    durationMs: number;
}
/**
 * Deploy a static site to AWS (S3 + CloudFront + ACM) with DNS managed
 * via Porkbun (or another supported external provider). Validates AWS +
 * DNS-provider credentials up front, fills in opinionated defaults, and
 * routes to the underlying CloudFormation flow.
 */
export declare function deploySite(config: DeploySiteConfig): Promise<DeploySiteResult>;
