import 'reflect-metadata';
import { DynamoDbService } from '@worktif/purews';
import { BeforeInstance, LoggerInterface, Maybe } from '@worktif/utils';
import { EnvConfigRuntime } from '../../config/env.config.runtime';
import { SeoMetaData, SeoMetaDynamoDb } from './seo-engine.dynamo.types';
/**
 * SeoEngineDynamoDbEntity is a class responsible for managing interaction with the DynamoDB table
 * related to SEO metadata. It extends the DynamoDbService and implements the LoggerInterface,
 * allowing for smooth database operations and logging capabilities. Each instance of this class
 * is injected with an environment configuration and provides methods for CRUD operations on SEO-related data.
 */
export declare class SeoEngineDynamoDbEntity extends DynamoDbService implements LoggerInterface {
    protected envConfig: EnvConfigRuntime;
    /**
     * Represents the name of a database table.
     *
     * This variable is used to identify the specific table within a database
     * where operations such as queries, updates, or inserts are to be performed.
     * Ensure that the value assigned to `tableName` corresponds to a valid table name
     * in the database schema to avoid errors during database operations.
     *
     * Type: string
     */
    tableName: string;
    /**
     * This variable represents an instance of a logger.
     *
     * @type {Logger}
     *
     * @param {Object} loggerOptions - The options for the logger.
     * @param {string} loggerOptions.serviceName - The name of the service.
     *
     * @returns {LoggerInstance} The instance of the logger.
     */
    loggerInstance: import("@aws-lambda-powertools/logger").Logger;
    /**
     * Constructor for creating an instance of the class.
     *
     * @param {EnvConfigRuntime} envConfig - The environment configuration object.
     */
    constructor(envConfig: EnvConfigRuntime);
    /**
     * Retrieves SEO metadata by the specified route.
     *
     * @param {string} route - The application route to fetch SEO metadata for.
     * @return {Promise<Maybe<SeoMetaDynamoDb>>} A promise that resolves to the first matching SEO metadata object,
     * or undefined if no metadata is found for the specified route.
     * @throws {Error} If the provided route is empty or undefined.
     */
    getByRoute(route: string): Promise<Maybe<SeoMetaDynamoDb>>;
    /**
     * Creates a new WebSocket entry in the DynamoDB table.
     *
     * @param webSocket - The WebSocket object to be created. It should be a Partial instance of WebSocketsDynamoDb.
     * @return A Promise that resolves with the created WebSocket entry in the DynamoDB table wrapped in a Maybe type.
     */
    createSeoMeta(webSocket: Partial<SeoMetaDynamoDb>): Promise<Maybe<SeoMetaDynamoDb>>;
    getById(websiteId: string, beforeInstance?: BeforeInstance): Promise<Maybe<SeoMetaDynamoDb>>;
    /**
     * Retrieves a list of WebSocket connections for a given merchant ID.
     *
     * @param {BeforeInstance} [beforeInstance] Optional parameter for injecting before method execution
     * @return {Promise<Maybe<SeoMetaDynamoDb[]>>} A Promise that resolves to an array of WebSocketsDynamoDb objects if successful, or Maybe type if the array is empty
     */
    getSeoMetaList(beforeInstance?: BeforeInstance): Promise<Maybe<SeoMetaData[]>>;
}
