import { Construct } from "constructs";
import { IGrantable } from "aws-cdk-lib/aws-iam";
import { RetentionDays } from "aws-cdk-lib/aws-logs";
import { FunctionOptions, Function as CdkFunction, FunctionUrlOptions } from "aws-cdk-lib/aws-lambda";
import { NodeJSProps, FunctionCopyFilesProps } from "./Function.js";
import { SSTConstruct } from "./Construct.js";
import { Permissions } from "./util/permission.js";
import { Size } from "./util/size.js";
import { Duration } from "./util/duration.js";
export interface SsrFunctionProps extends Omit<FunctionOptions, "memorySize" | "timeout" | "runtime"> {
    bundle?: string;
    handler: string;
    runtime?: "nodejs14.x" | "nodejs16.x" | "nodejs18.x";
    timeout: number | Duration;
    memorySize: number | Size;
    permissions?: Permissions;
    environment?: Record<string, string>;
    bind?: SSTConstruct[];
    nodejs?: NodeJSProps;
    copyFiles?: FunctionCopyFilesProps[];
    logRetention?: RetentionDays;
}
export declare class SsrFunction extends Construct implements SSTConstruct {
    readonly id: string;
    function: CdkFunction;
    private assetReplacer;
    private assetReplacerPolicy;
    private props;
    /** @internal */
    _doNotAllowOthersToBind: boolean;
    constructor(scope: Construct, id: string, props: SsrFunctionProps);
    get role(): import("aws-cdk-lib/aws-iam").IRole | undefined;
    get functionArn(): string;
    get functionName(): string;
    addEnvironment(key: string, value: string): CdkFunction;
    addFunctionUrl(props?: FunctionUrlOptions): import("aws-cdk-lib/aws-lambda").FunctionUrl;
    grantInvoke(grantee: IGrantable): import("aws-cdk-lib/aws-iam").Grant;
    build(): Promise<void>;
    attachPermissions(permissions: Permissions): void;
    private createFunction;
    private createCodeReplacer;
    private bind;
    private buildAssetFromHandler;
    private buildAssetFromBundle;
    private updateCodeReplacer;
    private updateFunction;
    /** @internal */
    getConstructMetadata(): {
        type: "Function";
        data: {
            arn: string;
            handler: string;
            localId: string;
            secrets: string[];
        };
    };
    /** @internal */
    getFunctionBinding(): undefined;
}
