import { FeedType, KnownFeedType } from './feed-type'; import { ChannelUser } from '../../user'; import { ChatLogged, TypedChat } from '../chat'; import { KnownChatType } from '../chat-type'; export declare namespace FeedFragment { interface Member { readonly member: FeedMember; } interface MemberList { readonly members: FeedMember[]; } interface Inviter { readonly inviter: FeedMember; } type Message = ChatLogged; interface OpenHandOver { readonly prevHost: FeedMember; readonly newHost: FeedMember; } } export interface FeedMember extends ChannelUser { nickName: string; } export interface ChatFeed { readonly feedType: T; readonly hidden?: boolean; } export declare type InviteFeed = ChatFeed & FeedFragment.Inviter & FeedFragment.MemberList; export declare type LeaveFeed = ChatFeed & FeedFragment.Member; export declare type RichContentFeed = ChatFeed; export declare type OpenJoinFeed = ChatFeed & FeedFragment.MemberList; export declare type OpenLinkDeletedFeed = ChatFeed; export declare type OpenRewriteFeed = ChatFeed & FeedFragment.Member & FeedFragment.Message; export declare type OpenKickFeed = ChatFeed & FeedFragment.Member; export declare type OpenHandOverHostFeed = ChatFeed & FeedFragment.OpenHandOver; export declare type OpenManagerGrantFeed = ChatFeed & FeedFragment.Member; export declare type OpenManagerRevokeFeed = ChatFeed & FeedFragment.Member; export declare type ChannelDeletedFeed = ChatFeed; export declare type DeleteAllFeed = ChatFeed & FeedFragment.Message; export declare type OpenLinkFeeds = OpenJoinFeed | OpenLinkDeletedFeed | OpenRewriteFeed | OpenKickFeed | OpenHandOverHostFeed | OpenManagerGrantFeed | OpenManagerRevokeFeed; /** * Feed is special chat marker */ export declare type KnownChatFeeds = InviteFeed | LeaveFeed | RichContentFeed | OpenLinkFeeds | ChannelDeletedFeed | DeleteAllFeed; export declare type ChatFeeds = KnownChatFeeds | Record & ChatFeed; /** * Read chat text and deserialize * * @param {TypedChat} chat * @return {ChatFeeds} */ export declare function feedFromChat(chat: TypedChat): ChatFeeds; /** * Serialize feed to chat text * * @param {ChatFeeds} feed * @return {string} */ export declare function feedToText(feed: ChatFeeds): string;