import { Client, ClientOptions } from '@microsoft/teams.common';
import { Conversation } from '../../models/conversation/conversation.mjs';
import { TeamsChannelAccount, Account } from '../../models/account.mjs';
import { ConversationResource } from '../../models/conversation/conversation-resource.mjs';
import { PagedMembersResult } from '../../models/conversation/paged-members-result.mjs';
import { MessageReactionType } from '../../models/message/message-reaction.mjs';
import { C as ConversationActivityClient, D as DeprecatedInputActivity, a as ActivityParams } from '../../activity--_UgQSMq.mjs';
import { ApiClientSettings } from '../api-client-settings.mjs';
import { ReactionClient } from '../reaction/reaction.mjs';
import { ConversationMemberClient } from './member.mjs';
import '../../models/agentic-identity.mjs';
import '../../models/conversation-type.mjs';
import '../../models/membership-source.mjs';
import '../../models/membership-source-types.mjs';
import '../../models/membership-types.mjs';
import '../../models/role.mjs';
import '../../models/message/message-user.mjs';
import '../../models/resource.mjs';
import '@microsoft/teams.cards';
import '../../message-BhoTpQct.mjs';
import '../../models/entity/mention-entity.mjs';
import '../../models/entity/quoted-reply-entity.mjs';
import '../../models/input-hint.mjs';
import '../../models/text-format.mjs';
import '../../models/attachment/attachment.mjs';
import '../../models/attachment/card-attachment.mjs';
import '../../models/card/animation-card.mjs';
import '../../models/card/card-action.mjs';
import '../../models/card/media-url.mjs';
import '../../models/card/thumbnail-url.mjs';
import '../../models/card/audio-card.mjs';
import '../../models/card/hero-card.mjs';
import '../../models/card/card-image.mjs';
import '../../models/card/thumbnail-card.mjs';
import '../../models/card/video-card.mjs';
import '../../models/oauth/oauth-card.mjs';
import '../../models/token/token-post-resource.mjs';
import '../../models/token-exchange/token-exchange-resource.mjs';
import '../../models/sign-in/sign-in-card.mjs';
import '../../models/attachment/attachment-layout.mjs';
import '../../models/suggested-actions.mjs';
import '../../models/importance.mjs';
import '../../models/delivery-mode.mjs';
import '../../activities/activity.mjs';
import '../../models/channel-id.mjs';
import '../../models/conversation/conversation-reference.mjs';
import '../../models/entity/index.mjs';
import '../../models/entity/ai-message-entity.mjs';
import '../../models/entity/message-entity.mjs';
import '../../models/entity/citation-entity.mjs';
import '../../models/entity/sensitivity-usage-info.mjs';
import '../../models/entity/client-info-entity.mjs';
import '../../models/entity/product-info-entity.mjs';
import '../../models/entity/sensitive-usage-entity.mjs';
import '../../models/entity/stream-info-entity.mjs';
import '../../models/entity/targeted-message-info-entity.mjs';
import '../../models/channel-data/index.mjs';
import '../../models/meeting/meeting-info.mjs';
import '../../models/meeting/meeting-details.mjs';
import '../../models/channel-data/app-info.mjs';
import '../../models/channel-data/channel-info.mjs';
import '../../models/channel-data/chat-info.mjs';
import '../../models/channel-data/feedback-loop.mjs';
import '../../models/channel-data/notification-info.mjs';
import '../../models/channel-data/on-behalf-of.mjs';
import '../../models/channel-data/reply-chain-info.mjs';
import '../../models/channel-data/settings.mjs';
import '../../models/channel-data/source-info.mjs';
import '../../models/channel-data/team-info.mjs';
import '../../models/channel-data/tenant-info.mjs';
import '../../activities/typing.mjs';
import '../../activities/message/message-update.mjs';
import '../../auth/cloud-environment.mjs';
import '../../auth/credentials.mjs';

/**
 * @deprecated This will be removed by end of summer 2026.
 */
type GetConversationsParams = {
    readonly continuationToken?: string;
};
type CreateConversationParams = {
    /**
     * @deprecated This will be removed by end of summer 2026.
     */
    readonly isGroup?: boolean;
    /**
     * @deprecated This will be removed by end of summer 2026.
     */
    readonly bot?: Partial<Account>;
    readonly members?: Account[];
    /**
     * @deprecated This will be removed by end of summer 2026.
     */
    readonly topicName?: string;
    readonly tenantId?: string;
    readonly activity?: ActivityParams;
    readonly channelData?: Record<string, any>;
};
interface IConversationActivityOperations {
    /**
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    create(params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['create']>;
    create(params: ActivityParams): ReturnType<ConversationActivityClient['create']>;
    /**
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    update(id: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['update']>;
    update(id: string, params: ActivityParams): ReturnType<ConversationActivityClient['update']>;
    /**
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    reply(id: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['reply']>;
    reply(id: string, params: ActivityParams): ReturnType<ConversationActivityClient['reply']>;
    delete(id: string): ReturnType<ConversationActivityClient['delete']>;
    members(activityId: string): ReturnType<ConversationActivityClient['getMembers']>;
    /**
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    createTargeted(params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['createTargeted']>;
    createTargeted(params: ActivityParams): ReturnType<ConversationActivityClient['createTargeted']>;
    /**
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    updateTargeted(id: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['updateTargeted']>;
    updateTargeted(id: string, params: ActivityParams): ReturnType<ConversationActivityClient['updateTargeted']>;
    deleteTargeted(id: string): ReturnType<ConversationActivityClient['deleteTargeted']>;
}
/**
 * @deprecated This will be removed by end of summer 2026.
 */
type GetConversationsResponse = {
    /**
     * Paging token
     */
    continuationToken: string;
    /**
     * List of conversations
     */
    conversations: Conversation[];
};
declare class ConversationClient {
    readonly serviceUrl: string;
    get http(): Client;
    set http(v: Client);
    protected _http: Client;
    protected _activities: ConversationActivityClient;
    protected _members: ConversationMemberClient;
    protected _reactions: ReactionClient;
    protected _apiClientSettings: Partial<ApiClientSettings>;
    constructor(serviceUrl: string, options?: Client | ClientOptions, apiClientSettings?: Partial<ApiClientSettings>);
    /**
     * @deprecated Use the flattened activity methods on `ConversationClient`
     * instead (e.g. `conversations.createActivity(conversationId, ...)`). This
     * grouped accessor will be removed in a future release.
     */
    activities(conversationId: string): IConversationActivityOperations;
    /**
     * @deprecated Use the flattened member methods on `ConversationClient`
     * instead (e.g. `conversations.getMembers(conversationId)`). This grouped
     * accessor will be removed in a future release.
     */
    members(conversationId: string): {
        get: () => Promise<TeamsChannelAccount[]>;
        getById: (id: string) => Promise<TeamsChannelAccount>;
        getPaged: (pageSize?: number, continuationToken?: string) => Promise<PagedMembersResult>;
        /**
         * @deprecated This will be removed by end of summer 2026.
         */
        delete: (id: string) => Promise<void>;
    };
    /**
     * Create an activity in a conversation.
     *
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    createActivity(conversationId: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['create']>;
    createActivity(conversationId: string, params: ActivityParams): ReturnType<ConversationActivityClient['create']>;
    /**
     * Update an activity in a conversation.
     *
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    updateActivity(conversationId: string, id: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['update']>;
    updateActivity(conversationId: string, id: string, params: ActivityParams): ReturnType<ConversationActivityClient['update']>;
    /**
     * Reply to an activity in a conversation.
     *
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    replyToActivity(conversationId: string, id: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['reply']>;
    replyToActivity(conversationId: string, id: string, params: ActivityParams): ReturnType<ConversationActivityClient['reply']>;
    /**
     * Create an activity inside a reply chain (thread).
     *
     * Posts to `/v3/conversations/{conversationId}/replyChains/{id}`.
     *
     * @param conversationId the id of the chat or channel: `channelData.chat.id` or `channelData.channel.id`, **not** `conversation.id`.
     * @param id the id of the message at the root of the reply chain: `channelData.replyChain.id`
     * @param params the activity to send
     * @throws Error when `conversationId` or `id` is empty or blank
     * @throws Error when `conversationId` or `id` is a dot segment (`.` or `..`)
     *
     * @experimental This API is in preview and may change in the future. Diagnostic: ExperimentalTeamsThreading
     */
    createReplyChainActivity(conversationId: string, id: string, params: ActivityParams): ReturnType<ConversationActivityClient['createReplyChain']>;
    /**
     * Create an activity inside a reply chain (thread) that is visible only to the specified recipient.
     *
     * Takes the same arguments as {@link createReplyChainActivity}.
     *
     * @param conversationId the id of the chat or channel: `channelData.chat.id` or `channelData.channel.id`, **not** `conversation.id`.
     * @param id the id of the message at the root of the reply chain: `channelData.replyChain.id`
     * @param params the activity to send
     * @throws Error when `conversationId` or `id` is empty or blank
     * @throws Error when `conversationId` or `id` is a dot segment (`.` or `..`)
     *
     * @experimental This API is in preview and may change in the future. Diagnostic: ExperimentalTeamsThreading
     */
    createTargetedReplyChainActivity(conversationId: string, id: string, params: ActivityParams): ReturnType<ConversationActivityClient['createTargetedReplyChain']>;
    /**
     * Delete an activity in a conversation.
     */
    deleteActivity(conversationId: string, id: string): Promise<void>;
    /**
     * Get the members of an activity in a conversation.
     */
    getActivityMembers(conversationId: string, id: string): Promise<TeamsChannelAccount[]>;
    /**
     * Create a targeted activity in a conversation.
     *
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    createTargetedActivity(conversationId: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['createTargeted']>;
    createTargetedActivity(conversationId: string, params: ActivityParams): ReturnType<ConversationActivityClient['createTargeted']>;
    /**
     * Update a targeted activity in a conversation.
     *
     * @deprecated Use MessageActivityInput or TypingActivityInput instead.
     */
    updateTargetedActivity(conversationId: string, id: string, params: DeprecatedInputActivity): ReturnType<ConversationActivityClient['updateTargeted']>;
    updateTargetedActivity(conversationId: string, id: string, params: ActivityParams): ReturnType<ConversationActivityClient['updateTargeted']>;
    /**
     * Delete a targeted activity in a conversation.
     */
    deleteTargetedActivity(conversationId: string, id: string): Promise<void>;
    /**
     * Get the members of a conversation.
     */
    getMembers(conversationId: string): Promise<TeamsChannelAccount[]>;
    /**
     * Get a member of a conversation by id.
     */
    getMemberById(conversationId: string, id: string): Promise<TeamsChannelAccount>;
    /**
     * Get paged members of a conversation.
     */
    getPagedMembers(conversationId: string, pageSize?: number, continuationToken?: string): Promise<PagedMembersResult>;
    /**
     * Add a reaction to an activity in a conversation.
     */
    addReaction(conversationId: string, activityId: string, reactionType: MessageReactionType): Promise<void>;
    /**
     * Delete a reaction from an activity in a conversation.
     */
    deleteReaction(conversationId: string, activityId: string, reactionType: MessageReactionType): Promise<void>;
    /**
     * @deprecated This will be removed by end of summer 2026.
     */
    get(params: GetConversationsParams): Promise<GetConversationsResponse>;
    create(params: CreateConversationParams): Promise<ConversationResource>;
}

export { ActivityParams, ConversationActivityClient, ConversationClient, ConversationMemberClient, type CreateConversationParams, type GetConversationsParams, type GetConversationsResponse, type IConversationActivityOperations };
