import { Account } from '../../models/account.js';
import { IActivity } from '../activity.js';
import { ChannelData } from '../../models/channel-data/index.js';
import '../../models/membership-source.js';
import '../../models/membership-source-types.js';
import '../../models/membership-types.js';
import '../../models/role.js';
import '../../models/channel-id.js';
import '../../models/conversation/conversation-reference.js';
import '../../models/entity/index.js';
import '../../models/entity/ai-message-entity.js';
import '../../models/entity/message-entity.js';
import '../../models/entity/citation-entity.js';
import '../../models/entity/client-info-entity.js';
import '../../models/entity/mention-entity.js';
import '../../models/entity/product-info-entity.js';
import '../../models/entity/sensitive-usage-entity.js';
import '../../models/entity/stream-info-entity.js';
import '../../models/meeting/meeting-info.js';
import '../../models/meeting/meeting-details.js';
import '../../models/channel-data/channel-info.js';
import '../../models/channel-data/team-info.js';
import '../../models/channel-data/notification-info.js';
import '../../models/channel-data/tenant-info.js';
import '../../models/channel-data/feedback-loop.js';
import '../../models/channel-data/on-behalf-of.js';
import '../../models/channel-data/settings.js';

interface IConversationUpdateActivity extends IActivity<'conversationUpdate'> {
    /**
     * The collection of members added to the conversation.
     */
    membersAdded?: Account[];
    /**
     * The collection of members removed from the conversation.
     */
    membersRemoved?: Account[];
    /**
     * The updated topic name of the conversation.
     */
    topicName?: string;
    /**
     * Indicates whether the prior history of the channel is disclosed.
     */
    historyDisclosed?: boolean;
    channelData: ChannelData & {
        eventType: 'channelCreated' | 'channelDeleted' | 'channelRenamed' | 'channelRestored' | 'channelShared' | 'channelUnshared' | 'channelMemberAdded' | 'channelMemberRemoved' | 'teamArchived' | 'teamDeleted' | 'teamHardDeleted' | 'teamRenamed' | 'teamRestored' | 'teamUnarchived';
    };
}

export type { IConversationUpdateActivity };
