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 { SeoProvider } from '../../services/seo/seo.provider';
/**
 * Class representing a Lambda handler for retrieving SEO metadata by route.
 *
 * This class extends the LambdaApi and implements the LambdaInterface and LoggerInterface.
 * It is responsible for handling API Gateway requests to fetch SEO metadata for a specific route
 * from DynamoDB, providing proper error handling and CORS headers.
 *
 * The handler uses SeoProvider to ensure that route-specific metadata is properly merged
 * with default SEO metadata, preventing state leakage between routes.
 */
export declare class LambdaRuntimeWebSeoByRoute extends LambdaApi implements LambdaInterface, LoggerInterface {
    protected envConfig: EnvConfigRuntime;
    protected seoEngineDynamoEntity: SeoEngineDynamoDbEntity;
    protected seoProvider: SeoProvider;
    /**
     * Represents an instance of a Logger.
     * @type {Logger}
     */
    loggerInstance: Logger;
    /**
     * Constructor for initializing dependencies required for SEO by route handler.
     *
     * @param {EnvConfigRuntime} envConfig - The environment configuration instance.
     * @param {SeoEngineDynamoDbEntity} seoEngineDynamoEntity - The SEO Engine DynamoDB entity instance.
     * @param {SeoProvider} seoProvider - The SEO provider service for merging defaults with route-specific metadata.
     */
    constructor(envConfig: EnvConfigRuntime, seoEngineDynamoEntity: SeoEngineDynamoDbEntity, seoProvider: SeoProvider);
    /**
     * Handles API Gateway requests for SEO metadata by route. This method retrieves SEO metadata
     * for a specific route from DynamoDB, merges it with default SEO metadata, and returns the
     * complete merged result as JSON.
     *
     * This ensures that:
     * - Default SEO metadata is always applied as a base
     * - Route-specific metadata is merged on top of defaults
     * - When a route has no SEO metadata, only defaults are returned
     * - No state leakage occurs between routes
     *
     * @param {LambdaEventApi<any, 'get'>} event - 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 with merged SEO metadata or error message.
     */
    handler(event: LambdaEventApi<any, 'get'>, _: LambdaContext, beforeInstance?: BeforeInstance): Promise<APIGatewayProxyResult>;
}
