export declare const PostContentType: Readonly<{
    TEXT: "text";
    IMAGE: "image";
    FILE: "file";
    VIDEO: "video";
    LIVESTREAM: "liveStream";
    POLL: "poll";
}>;
declare global {
    namespace Amity {
        type PostTargetType = Amity.Feed['targetType'] | 'content';
        type PostContentType = ValueOf<typeof PostContentType> | string;
        type PostActionType = 'onFetch' | 'onCreate' | 'onUpdate' | 'onDelete' | 'onApproved' | 'onDeclined' | 'onFlagged' | 'onUnflagged' | 'onReactionAdded' | 'onReactionRemoved';
        type RawPost<T extends PostContentType = any> = {
            postId: string;
            postedUserId: Amity.RawUser['userId'];
            parentId: Amity.RawPost['postId'];
            parentPostId: Amity.RawPost['postId'];
            targetType: PostTargetType;
            targetId: string;
            feedId: Amity.Feed['feedId'];
            children: Amity.RawPost['postId'][];
            comments: Amity.InternalComment['commentId'][];
            commentsCount: number;
            hasFlaggedChildren: false;
            hasFlaggedComment: false;
            editedAt: Amity.timestamp;
            metadata?: Record<string, any>;
            flagCount: number;
            hashFlag: {
                bits: number;
                hashes: number;
                hash: string;
            } | null;
            tags?: string[];
            createdAt: Amity.timestamp;
            updatedAt?: Amity.timestamp;
            isDeleted?: boolean;
            path: string;
            impression: number;
            reach: number;
            reactionsCount: number;
            reactions: Record<string, number>;
            myReactions?: string[];
        } & Amity.Content<T> & Amity.Mentionable<'user'>;
        type InternalPost<T extends PostContentType = any> = RawPost<T> & {
            feedType?: 'reviewing' | 'published';
        };
        type PostLinkObject = {
            latestComments: (Amity.Comment | null)[];
            creator: Amity.User | undefined;
            analytics: {
                markAsViewed: () => void;
            };
            getImageInfo: () => Amity.File<'image'> | undefined;
            getVideoInfo: () => Amity.File<'video'> | undefined;
            getVideoThumbnailInfo: () => Amity.File<'image'> | undefined;
            getFileInfo: () => Amity.File<'file'> | undefined;
        };
        type Post<T extends PostContentType = any> = Amity.InternalPost<T> & Amity.PostLinkObject;
        type QueryPosts = {
            targetId: string;
            targetType: Amity.InternalPost['targetType'];
            sortBy?: 'lastCreated' | 'firstCreated';
            dataTypes?: Exclude<Amity.PostContentType, 'text'>[];
            includeDeleted?: boolean;
            hasFlag?: boolean;
            feedType?: 'reviewing' | 'published';
            tags?: Amity.Taggable['tags'];
            matchingOnlyParentPost?: boolean;
            page?: string;
            limit?: number;
        };
        type PostLiveCollection = Amity.LiveCollectionParams<Omit<QueryPosts, 'sortBy' | 'page'> & {
            sortBy?: 'lastCreated' | 'firstCreated';
        }>;
        type PostLiveCollectionCache = Amity.LiveCollectionCache<Amity.InternalPost['postId'], Pick<QueryPosts, 'page'>>;
        type QuerySemanticSearchPosts = {
            query: string;
            targetId?: string;
            targetType?: Amity.InternalPost['targetType'];
            dataTypes?: string[];
            matchingOnlyParentPost?: boolean;
        };
        type SemanticSearchPostLiveCollection = Amity.LiveCollectionParams<Omit<QuerySemanticSearchPosts, 'page'>>;
        type SemanticSearchPostLiveCollectionCache = Amity.LiveCollectionCache<Amity.InternalPost['postId'], // postId:score
        QuerySemanticSearchPosts>;
    }
}
//# sourceMappingURL=post.d.ts.map