import 'reflect-metadata';
import { APIGatewayProxyResult } from 'aws-lambda';
import type { LambdaInterface } from '@aws-lambda-powertools/commons/types';
import { Logger } from '@aws-lambda-powertools/logger';
import { BeforeInstance, LoggerInterface } from '@worktif/utils';
import { LambdaApi, LambdaContext, LambdaEventApi } from '@worktif/purews';
import { EnvConfigRuntime } from '../../config/env.config.runtime';
import { SeoEngineDynamoDbEntity } from '../../entities/seo-engine/seo-engine.dynamo.entity';
import { RuntimeWebSeoMiddleware } from './lambda.runtime-web.seo.utils';
/**
 * Class representing a serverless rendering service for SEO purposes.
 *
 * This class extends the LambdaApi and implements the LambdaInterface and LoggerInterface.
 * It is responsible for handling serverless rendering operations, managing SEO metadata, and providing logging functionalities.
 *
 * @note: an external SEO-middleware sets up meta-data, rather an internal SEO-dynamodb still is a fallback SEO-meta touch point
 */
export declare class LambdaRuntimeWebSeo extends LambdaApi implements LambdaInterface, LoggerInterface {
    protected envConfig: EnvConfigRuntime;
    protected seoEngineDynamoEntity: SeoEngineDynamoDbEntity;
    protected seoMiddleware: RuntimeWebSeoMiddleware;
    /**
     * Represents an instance of a Logger.
     * @type {Logger}
     */
    loggerInstance: Logger;
    /**
     * Constructor for initializing dependencies required for SEO engine and middleware handling.
     *
     * @param {EnvConfigRuntime} envConfig - The environment configuration instance.
     * @param {SeoEngineDynamoDbEntity} seoEngineDynamoEntity - The SEO Engine DynamoDB entity instance.
     * @param {SeoMiddleware} seoMiddleware - The React app SEO middleware instance.
     */
    constructor(envConfig: EnvConfigRuntime, seoEngineDynamoEntity: SeoEngineDynamoDbEntity, seoMiddleware: RuntimeWebSeoMiddleware);
    /**
     * Handles serverless rendering for a given Lambda event. This method retrieves cached HTML for the requested
     * path if available, otherwise it renders the HTML dynamically. Rendered pages can optionally be cached for future use.
     *
     * @param {LambdaEventApi<AuthCognitoPasswordRecoverySendEmailBody, 'post'>} _ - The event object containing the API request details.
     * @param {LambdaContext} __ - The Lambda execution context.
     * @param {BeforeInstance} [beforeInstance] - Optional value used for dependency injection prior to execution.
     * @return {Promise<APIGatewayProxyResult>} - The HTTP response object, including the rendered HTML content or an error message.
     */
    handler(_: LambdaEventApi<any, 'get'>, __: LambdaContext, beforeInstance?: BeforeInstance): Promise<APIGatewayProxyResult>;
    /**
     * Generates a composed ETag value based on the input HTML string.
     *
     * @param {string} html - The input HTML string to be processed.
     * @return {string} The generated ETag as a 32-character long base64-encoded substring.
     */
    private composeEtag;
}
