import React from 'react';
import type { IPollFns, IPollProps } from '../../../polls';
import type { IMemberComponentProps } from '../../../user';
import type { DiscussionCreateContentFunction, DiscussionCreateLikeFunction, DiscussionDeleteLikeFunction, DiscussionListLikesFunction, IDiscussionFormFns, IForceHide, IFullDiscussionContent } from '../../../discussion/shared';
import type { IBadgesOption } from '../../../user/badges';
export interface IPostContent extends IFullDiscussionContent {
    /** The post body */
    postBody?: string;
    componentProps?: {
        /** Custom props to pass through to the Member component */
        member: IMemberComponentProps;
    };
    /** The options for the Poll */
    pollOptions?: IPollProps['options'];
    /** The settings for the Poll */
    pollSettings?: IPollProps['settings'];
}
export interface IPollFunctions extends IPollFns {
    removePoll: (args?: object) => void;
}
export interface IDiscussionPostProps {
    /** The element that will render around the content */
    element?: 'li' | 'div' | 'section' | 'article';
    /** Information about the content being posted */
    content: IPostContent;
    /** If the user has permission to interact with the post box and content, e.g. if they're a member of the community */
    userHasPermissions?: boolean;
    /** If the user has owner permissions, e.g. if they're a community owner */
    userHasOwnerPermissions?: boolean;
    /** If the post is still loading */
    isLoading?: boolean;
    /** The ID of the original post author, for threads */
    originalAuthorId?: string;
    /** Allows the hiding of certain elements within the post */
    forceHide?: IForceHide;
    /** The functions that are passed in to handle the functionality */
    functions: {
        content?: {
            /** Create a new post */
            createContent: DiscussionCreateContentFunction;
            /** Delete the post */
            deleteContent: (args?: object) => void;
            /** Update the post */
            updateContent: (args1?: object, args2?: object) => void;
        };
        likes?: {
            /** Create a new like on the post */
            createLike: DiscussionCreateLikeFunction;
            /** Delete a like on the post */
            deleteLike: DiscussionDeleteLikeFunction;
            /** List the likes on the post */
            listLikes?: DiscussionListLikesFunction;
        };
        polls?: IPollFunctions;
        comments?: {
            /** Open comments on a post */
            openComments?: () => void;
        };
        form?: IDiscussionFormFns;
        pins?: {
            /** Pin the post */
            createPin?: () => void;
            /** Unpin the post */
            deletePin?: () => void;
        };
    };
    /** Optional `href`s for the card to link to */
    links?: {
        post?: string;
        comments?: string;
    };
    /** Additional classes */
    className?: string;
    /** The GTM context */
    gtmContext?: string;
    /** Additional content */
    children?: React.ReactNode;
    /** The language for the text */
    locale?: string;
    /** If the post content is truncated */
    isTruncated?: boolean;
    /** Optional styling options */
    styling?: {
        /** Option of whether or not to show the copy link button */
        showShareLinkButton?: boolean;
        /** Option of whether or not to show the more menu button */
        showMoreMenuButton?: boolean;
    };
    /** If the browser should focus on this post */
    setFocus?: boolean;
    /** If the post is used within a community */
    isCommunity?: boolean;
    /** Whether to show badges and the scope of the badge */
    badges?: IBadgesOption;
    /** The base path, used for slugs */
    basePath: string;
    /** The ID of the parent, used for slugs */
    parentId: string;
    disableMentions?: boolean;
}
declare const Post: ({ element, content, userHasPermissions, userHasOwnerPermissions, isLoading, originalAuthorId, forceHide, functions, links, className, gtmContext, children, isTruncated, setFocus, isCommunity, badges, basePath, parentId, locale, disableMentions, }: IDiscussionPostProps) => import("react/jsx-runtime").JSX.Element;
export default Post;
