import DynamoDB = require("aws-sdk/clients/dynamodb");
import { BaseRepository, RepositoryUpdateData, RepositoryAccessOptions } from "@ournet/domain";
import { Topic, NewsEvent, EventRepository, LatestEventsQueryParams, LatestEventsByTopicQueryParams, CountEventsQueryParams, CountEventsByTopicQueryParams, TopItem, TrendingTopicsQueryParams, SimilarEventsByTopicsQueryParams } from "@ournet/news-domain";
import { EventModel } from "./dynamo-event";
import { TopicEventModel } from "./topic-event";
import { Locale } from "../common";
import { LatestEventModel } from "./dynamo-latest-event";
export declare class DynamoEventRepository extends BaseRepository<NewsEvent> implements EventRepository {
    protected model: EventModel;
    protected latestModel: LatestEventModel;
    protected topicModel: TopicEventModel;
    constructor(client: DynamoDB.DocumentClient, tableSuffix: string);
    similarByTopics(params: SimilarEventsByTopicsQueryParams, options?: RepositoryAccessOptions<NewsEvent>): Promise<NewsEvent[]>;
    viewNewsEvent(id: string): Promise<number>;
    innerCreate(data: NewsEvent): Promise<NewsEvent>;
    innerUpdate(data: RepositoryUpdateData<NewsEvent>): Promise<NewsEvent>;
    delete(id: string): Promise<boolean>;
    exists(id: string): Promise<boolean>;
    getById(id: string, options?: RepositoryAccessOptions<NewsEvent>): Promise<NewsEvent | null>;
    getByIds(ids: string[], options?: RepositoryAccessOptions<NewsEvent>): Promise<NewsEvent[]>;
    latest(params: LatestEventsQueryParams, options?: RepositoryAccessOptions<NewsEvent>): Promise<NewsEvent[]>;
    latestByTopic(params: LatestEventsByTopicQueryParams, options?: RepositoryAccessOptions<NewsEvent>): Promise<NewsEvent[]>;
    count(params: CountEventsQueryParams): Promise<number>;
    countByTopic(params: CountEventsByTopicQueryParams): Promise<number>;
    topTopics(params: LatestEventsQueryParams): Promise<TopItem[]>;
    trendingTopics(params: TrendingTopicsQueryParams): Promise<TopItem[]>;
    protected putTopicEvent(locale: Locale, eventId: string, createdAt: string, topics: Topic[]): Promise<void>;
    deleteStorage(): Promise<void>;
    createStorage(): Promise<void>;
}
