import { Client, ClientOptions } from '@microsoft/teams.common/http';
import { ApiClientSettings } from './api-client-settings.js';
import { MeetingInfo } from '../models/meeting/meeting-info.js';
import { MeetingNotificationParams, MeetingNotificationResponse } from '../models/meeting/meeting-notification.js';
import { MeetingParticipant } from '../models/meeting/meeting-participant.js';
import '../auth/cloud-environment.js';
import '../models/account.js';
import '../models/membership-source.js';
import '../models/membership-source-types.js';
import '../models/membership-types.js';
import '../models/role.js';
import '../models/meeting/meeting-details.js';
import '../models/meeting/meeting.js';

declare class MeetingClient {
    readonly serviceUrl: string;
    get http(): Client;
    set http(v: Client);
    protected _http: Client;
    protected _apiClientSettings: Partial<ApiClientSettings>;
    constructor(serviceUrl: string, options?: Client | ClientOptions, apiClientSettings?: Partial<ApiClientSettings>);
    /**
     * Retrieves meeting information including details, organizer, and conversation.
     * @param id - The meeting ID.
     */
    getById(id: string): Promise<MeetingInfo>;
    /**
     * Retrieves information about a specific participant in a meeting.
     * @param meetingId - The meeting ID.
     * @param id - The user AAD object ID
     * @param tenantId - The tenant ID of the meeting and user.
     * @returns {MeetingParticipant} The meeting participant information.
     */
    getParticipant(meetingId: string, id: string, tenantId: string): Promise<MeetingParticipant>;
    /**
     * Send a targeted in-meeting notification to specific participants.
     *
     * Returns `undefined` on full success (HTTP 202). Returns a `MeetingNotificationResponse`
     * with per-recipient failure info on partial success (HTTP 207).
     *
     * Requires the RSC permission `OnlineMeetingNotification.Send.Chat` and the ECS flag
     * enabled for the tenant/bot.
     *
     * @param meetingId - The BASE64-encoded meeting ID.
     * @param params - The notification parameters including recipients and surfaces.
     */
    sendNotification(meetingId: string, params: MeetingNotificationParams): Promise<MeetingNotificationResponse | undefined>;
}

export { MeetingClient };
