import { IGrouping } from "../grouping/index.js"; import { EArchiveType } from "../expiration-events.js"; import { TPartialUser } from "../user/index.js"; import { EFormType } from "../form/index.js"; export declare enum EReactionType { LIKE = "like", LOVE = "love", CELEBRATE = "celebrate", HAHA = "haha", SAD = "sad", WOW = "wow" } export declare enum EContentPublishOperation { PUBLISH = "publish", UNPUBLISH = "unpublish", EDIT_PUBLISH = "edit" } export declare enum EActionOperation { ADD = "add", REMOVE = "remove" } export declare enum EContentCategory { BUSINESS = "business", SOCIAL = "social" } export declare enum EContentCategoryFilter { BUSINESS = "business", SOCIAL = "social", ALL = "all" } export declare enum EContentSubCategory { ANNOUNCEMENTS = "announcements",// Company Announcements HEALTH = "health",// Health & Wellness HR = "hr",// Workplace and Human Resources BUSINESS_STRATEGY = "business strategy",// Business Strategy and Leadership OPPORTUNITIES = "opportunities",// Opportunities RISK_MANAGEMENT = "risk management",// Risk Management and Security RECOGNITIONS = "recognitions",// Recognitions CUSTOMER_SUCCESS = "customer success",// Customer Success Stories EVENTS = "events",// Workplace & Events SOCIAL = "social", ALL = "all" } export declare enum EContentType { PAGE = "page", POST = "post" } export declare enum EContentStatus { DRAFT = "draft", PUBLISHED = "published", DELETED = "deleted", ARCHIVED = "archived" } export interface IComponentStyling { [key: string]: string; } export interface ILastUpdated { user: string; date: number; } export interface IPaginatedBase { totalDocs: number; limit: number; hasPrevPage: boolean; hasNextPage: boolean; page?: number | undefined; totalPages: number; offset: number; prevPage?: number | null | undefined; nextPage?: number | null | undefined; pagingCounter: number; } export interface IReactionRequest { tenant: string; postId: string; user: string; reaction: EReactionType; operation: EActionOperation; } export interface IReactionAttrs { _id?: string; postId: string; tenant: string; user: string; reaction: EReactionType; dateCreated: number; version?: number; } export interface IReaction { id: string; postId: string; tenant: string; user: string | TPartialUser; reaction: EReactionType; dateCreated: number; version: number; } export interface IReactionPaginateResult extends IPaginatedBase { docs: Partial[]; } export interface IMentions { user: string; start: number; length: number; } export interface ICommentAttrs { _id?: string; postId: string; tenant: string; user: string; comment: string; dateCreated: number; mentions: IMentions[]; version?: number; } export interface ICommentEditAttrs { id: string; comment: string; mentions: IMentions[]; } export interface IComment { id: string; postId: string; tenant: string; user: string | TPartialUser; comment: string; dateCreated: number; mentions: IMentions[]; version: number; } export interface ICommentPaginateResult extends IPaginatedBase { docs: Partial[]; } export declare enum EAlignment { LEFT = "left", CENTER = "center" } export declare enum ETitleFontSize { H1 = "h1", H2 = "h2", H3 = "h3", H4 = "h4", NORMAL = "normal" } export declare enum EPostTemplate { TEXT = "text", IMAGE = "image", VIDEO = "video", LINK = "link", FORM = "form", POLL = "poll" } export declare enum EImageVariant { PORTRAIT = "portrait", LANDSCAPE = "landscape", SQUARE = "square", AVATAR = "avatar", PROFILE = "profile" } export declare enum EVideoVariant { PORTRAIT = "portrait", LANDSCAPE = "landscape", SQUARE = "square" } export interface IStyling { backgroundColor: string; fontColor: string; alignment: EAlignment; title: { fontSize: ETitleFontSize; }; } export type TBasePostContent = { url: string; }; export type TPostContentLink = TBasePostContent & { linkTitle: string; }; export type TPostContentImage = TBasePostContent & { id: string | null; imageVariant: EImageVariant; }; export type TPostContentVideo = TBasePostContent & { id: string | null; videoVariant: EVideoVariant; }; export type TPostContentForm = TBasePostContent & { id: string; formType: EFormType.STANDARD; }; export type TPostContentPoll = TBasePostContent & { id: string; formType: EFormType.POLL; }; export type TPostContent = TPostContentLink | TPostContentImage | TPostContentVideo | TPostContentForm | TPostContentPoll; export interface IDraftPostAttrs { _id?: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory?: EContentSubCategory | null; type: EContentType.POST; owner: string; author?: string; permanent?: boolean; content: TPostContent[]; template: EPostTemplate; styling?: IStyling; postDescription?: string | null; grouping?: string; scheduled?: boolean; dateCreated?: number; editing?: string | null; lastUpdated?: ILastUpdated; public?: boolean; version?: number; } export interface IDraftPost { id: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory | null; type: EContentType.POST; owner: string | TPartialUser; author: string | TPartialUser; content: TPostContent[]; template: EPostTemplate; styling: IStyling; permanent: boolean; postDescription?: string | null; grouping: string | Partial | null; scheduled: boolean; dateCreated: number; editing: string | null | TPartialUser; lastUpdated: ILastUpdated; public: boolean; version: number; } export interface IDraftPostPaginateResult extends IPaginatedBase { docs: Partial[]; } export interface IPublishedPostAttrs { _id?: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory; type: EContentType.POST; owner: string; author?: string; content: TPostContent[]; template: EPostTemplate; styling: IStyling; postDescription?: string | null; permanent: boolean; grouping: string; scheduled?: boolean; dateCreated?: number; publishedDate?: number; reporting?: { status: boolean; user: string | null; message: string | null; }; editing?: string | null; public: boolean; lastUpdated?: ILastUpdated; version?: number; } export interface IPublishedPost { id: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory; type: EContentType.POST; owner: string | TPartialUser; author: string | TPartialUser; content: TPostContent[]; template: EPostTemplate; styling: IStyling; postDescription?: string | null; permanent: boolean; grouping: string | Partial; scheduled: boolean; dateCreated: number; publishedDate: number; reporting: { status: boolean; user: string | null; message: string | null; }; editing: string | null | TPartialUser; public: boolean; lastUpdated: ILastUpdated; version: number; } export interface IPublishedPostPaginateResult extends IPaginatedBase { docs: Partial[]; } export interface IDeletedPostAttrs { _id: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory; type: EContentType.POST; owner: string; author: string; content: TPostContent[]; template: EPostTemplate; styling: IStyling; postDescription?: string | null; editing: null; dateCreated: number; dateDeleted?: number; lastUpdated: ILastUpdated; version?: number; } export interface IDeletedPost { id: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory; type: EContentType.POST; owner: string | TPartialUser; author: string | TPartialUser; content: TPostContent[]; template: EPostTemplate; styling: IStyling; postDescription?: string | null; permanent: boolean; editing: null; dateCreated: number; dateDeleted: number; lastUpdated: ILastUpdated; /** Keys are automatically added by MongoDB TTL index https://www.mongodb.com/docs/manual/core/index-ttl/ **/ createdAt?: string; updatedAt?: string; /** **/ version: number; } export interface IDeletedPostPaginateResult extends IPaginatedBase { docs: Partial[]; } export interface IArchivedPostAttrs { _id: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory; type: EContentType.POST; owner: string; author: string; editing: null; content: TPostContent[]; template: EPostTemplate; styling: IStyling; archiveType: EArchiveType; postDescription?: string | null; dateCreated: number; dateArchived?: number; lastUpdated: ILastUpdated; version?: number; } export interface IArchivedPost { id: string; title: string; tags: string[]; tenant: string; category: EContentCategory; subCategory: EContentSubCategory; type: EContentType.POST; owner: string | TPartialUser; author: string | TPartialUser; content: TPostContent[]; template: EPostTemplate; styling: IStyling; archiveType: EArchiveType; permanent: boolean; postDescription?: string | null; dateCreated: number; editing: null; dateArchived: number; lastUpdated: ILastUpdated; /** Keys are automatically added by MongoDB TTL index https://www.mongodb.com/docs/manual/core/index-ttl/ **/ createdAt?: string; updatedAt?: string; /** **/ version: number; } export interface IArchivedPostPaginateResult extends IPaginatedBase { docs: Partial[]; } export interface ISocialPostCreateAttrs { id: string; title: string; tags: string[]; tenant: string; template: EPostTemplate; content: TPostContent[]; styling: IStyling; dateCreated: number; publishedDate: number; postDescription?: string | null; } export interface ISocialPostEditAttrs { title: string; tags: string[]; tenant: string; template: EPostTemplate; content: TPostContent[]; styling: IStyling; postDescription?: string | null; } export interface ITagAttrs { _id?: string; name: string; tenant: string; draftCount?: number; usage: number; } export interface ITag { id: string; name: string; tenant: string; usage: number; draftCount: number; version: number; } export interface ITagPaginateResult extends IPaginatedBase { docs: Partial[]; } export interface IImageAttrs { imageId: string; tenant: string; url: string; usage: { user: string | null; post: string | null; tenant: string | null; }; dateCreated?: number; version?: number; } export interface IImage { id: string; imageId: string; tenant: string; usage: { user: string | null; post: string | null; tenant: string | null; }; dateCreated: number; url: string; version: number; } //# sourceMappingURL=interfaces.d.ts.map