import { type IPostCustomSlots, PostPermission, ThemeStore, Theming, VueComponentBase } from "../..";
import { IWebComponentInstance, OmniaContext } from "../../..";
import { type IPersistedPost, IPostBaseContext, IPostBaseWithContext, type OmitProperties, ReactionType, ResolvedUserIdentity, type ThemeDefinition } from "../../../models";
import { IRichTextEditor } from "../../richtexteditor";
import { ILikeService, UserIdentityStore } from "@omnia/fx/stores";
import { IdentitiesLocalization } from "../../identities/loc/localize";
export declare class PostTemplate extends VueComponentBase<{}, {}, {}> implements IWebComponentInstance {
    persistedPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>;
    persistedPosts: Array<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
    richTextSettings: OmitProperties<IRichTextEditor, "initialContent" | "onContentChange">;
    currentUser: ResolvedUserIdentity;
    canShowEditDialogOnLoad?: boolean;
    canLike?: boolean;
    enableMention?: boolean;
    openReply: (postToReplyOn: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
    cancelReply: (post: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
    openEdit: (post: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
    closeEdit: (post: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
    refresh: (addedPost: boolean) => void;
    cardStyle?: ThemeDefinition;
    hideEdit?: boolean;
    handleAddingPost: (addingPost: IPostBaseWithContext<IPostBaseContext>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
    handleUpdatingPost: (updatingPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
    handleDeletingPost: (deletingPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
    handleTogglingLike: (togglingPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
    handleSocialReacts: (postToReact: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>, isReacts: boolean, reactionType: ReactionType) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
    customSlots?: IPostCustomSlots;
    hideEditOption?: boolean;
    getTopPostIds: () => {
        [commentId: string]: string;
    };
    getUserHash: () => {
        [principalName: string]: ResolvedUserIdentity;
    };
    topicPermissionDictionary: {
        [topicId: string]: PostPermission;
    };
    private omniaUxLocalization;
    private postLoc;
    identityLoc: IdentitiesLocalization.locInterface;
    userIdentityStore: UserIdentityStore;
    omniaCtx: OmniaContext;
    themeStore: ThemeStore;
    dialogTheme: Theming;
    private dateFormat;
    private isAdd;
    private isEdit;
    private isReply;
    private isAddingOrUpdatingPost;
    private isDeleting;
    private draftContent;
    private language;
    private resetContent;
    private isRTEPlaceholderClicked;
    private isLoadingRTE;
    private isRenderRTE;
    private draftMentionUsers;
    private customCardThemeId;
    private childTargetThemeId;
    private useAccessibilityFeatures;
    private dialogModel;
    private deleteDialogModel;
    onPostChange(newValue: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>, oldValue: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>): void;
    created(): void;
    mounted(): void;
    beforeUnmount(): void;
    private migrateData;
    private getReactions;
    private ensureCustomThemeRegistered;
    private ensureCustomThemeUnregistered;
    getReplyToPost(): IPersistedPost<IPostBaseWithContext<IPostBaseContext>>;
    ensureContentOnSave(content: string): string;
    getContentInsideTag(content: string): string;
    onClickReply(): void;
    onReact(topicId: string, commentId: string, isReacts: boolean, reactionType: ReactionType): Promise<void>;
    onClickRemoveReplyToPost(): void;
    onClickDelete(): void;
    onSave(): void;
    onContentUpdate(content: string): void;
    onMentionUpdate(mentionUsers: Array<ResolvedUserIdentity>): void;
    onEditPostClicked(): void;
    getCommentLikeService(): ILikeService;
    loadRTE(): void;
    private renderUserLink;
    /**
     * Render title for post
     * @param isDialog
     * @param cardTheming Nested theming for everything inside the post card
     */
    private renderTitleInfo;
    private renderEditDialog;
    private renderEdit;
    private renderEditContentBody;
    private renderEditButton;
    private renderDeleteButton;
    private renderDeleteDialog;
    private renderEditOptionsBase;
    private renderEditOptions;
    private renderDisplay;
    private renderDeletedMessage;
    render(): VueTsxSupport.JSX.Element;
}
