export declare const MessageContentType: Readonly<{
    TEXT: "text";
    IMAGE: "image";
    FILE: "file";
    VIDEO: "video";
    AUDIO: "audio";
    CUSTOM: "custom";
}>;
declare global {
    namespace Amity {
        type MessageContentType = ValueOf<typeof MessageContentType>;
        type MessageActionType = 'onCreate' | 'onUpdate' | 'onDelete' | 'onFetch' | 'onFlagged' | 'onUnflagged' | 'onFlagCleared' | 'onReactionAdded' | 'onReactionRemoved';
        type MessageOptimistic = {
            syncState?: Amity.SyncState;
        };
        type RawMessage<T extends Amity.MessageContentType = any> = {
            channelId: string;
            channelPublicId: string;
            channelType: Amity.Channel['type'];
            childCount: number;
            creatorId: string;
            creatorPublicId: string;
            editedAt?: Amity.timestamp;
            mentionedUsers?: Array<Amity.ChannelMention | (Amity.UserMention & {
                userPublicIds: string[];
            })>;
            messageFeedId: Amity.RawSubChannel['messageFeedId'];
            publicId: string;
            messageId: string;
            myReactions?: string[];
            parentId?: string;
            reactionCount: number;
            reactions?: Record<string, number>;
            referenceId?: string;
            segment: number;
        } & Amity.Content<T> & Amity.Flaggable & Amity.Metadata & Amity.SoftDelete & Amity.Subscribable & Amity.Taggable & Amity.Timestamps;
        type Message<T extends Amity.MessageContentType = any> = {
            channelId: Amity.Channel['channelId'];
            channelSegment: number;
            childrenNumber: number;
            creatorId: string;
            creator?: Amity.User;
            editedAt?: Amity.timestamp;
            parentId?: string;
            messageId: string;
            publicId: string;
            subChannelId: Amity.SubChannel['subChannelId'];
            channelType: Amity.Channel['type'];
            uniqueId: string;
            readCount: number;
            deliveredCount: number;
            referenceId?: string;
            markRead: () => void;
            addReaction: (reactionName: string) => Promise<boolean>;
            removeReaction: (reactionName: string) => Promise<boolean>;
        } & Amity.Content<T> & Amity.Flaggable & Amity.Mentionable<'user' | 'channel'> & Amity.Metadata & Amity.Reactable & Amity.SoftDelete & Amity.Subscribable & Amity.Timestamps & Amity.Taggable & Amity.MessageOptimistic;
        type InternalMessage<T extends Amity.MessageContentType = any> = Omit<Amity.Message<T>, 'readCount' | 'deliveredCount' | 'markRead' | 'addReaction' | 'removeReaction'> & {
            creatorPrivateId: string;
        };
        type QueryMessages = {
            subChannelId: Amity.SubChannel['subChannelId'];
            type?: Amity.MessageContentType;
            excludingTags?: Amity.Taggable['tags'];
            hasFlags?: boolean;
            includeDeleted?: boolean;
            page?: Amity.Page<string>;
            parentId?: Amity.Message['parentId'];
            sortBy?: 'segmentAsc' | 'segmentDesc';
            includingTags?: Amity.Taggable['tags'];
            pageToken?: string;
            aroundMessageId?: Amity.Message['messageId'];
        };
        type QueryReadUsers = {
            messageId: Amity.Message['messageId'];
            memberships?: ('member' | 'banned' | 'muted' | 'non-member' | 'deleted')[];
            page?: Amity.Page;
        };
        type QueryDeliveredUsers = {
            messageId: Amity.Message['messageId'];
            memberships?: ('member' | 'banned' | 'muted' | 'non-member' | 'deleted')[];
            page?: Amity.Page;
        };
        type MessagesLiveCollection = Amity.LiveCollectionParams<Omit<QueryMessages, 'page'>>;
        type MessageLiveCollectionCache = Amity.LiveCollectionCache<Amity.Message['subChannelId'], Pick<QueryMessages, 'page'> & {
            paging?: Amity.Pagination['paging'];
        }>;
        type QuerySearchMessages = {
            query: string;
            exactMatch?: boolean;
            channelId?: Amity.Channel['channelId'];
            messageFeedId?: string;
            userIds?: Amity.InternalUser['userId'][];
            tags?: Amity.Taggable['tags'];
            types?: Amity.MessageContentType[];
            sortBy?: 'createdAt' | 'relevance';
            orderBy?: 'asc' | 'desc';
            limit?: number;
        };
        type SearchMessageLiveCollection = Amity.LiveCollectionParams<QuerySearchMessages>;
        type SearchMessageLiveCollectionCache = Amity.LiveCollectionCache<Amity.Message['messageId'], Pick<QuerySearchMessages, 'limit'> & {
            paging?: Amity.Pagination['paging'];
        }>;
    }
}
//# sourceMappingURL=message.d.ts.map