/// <reference types="react" />
import { IContextualMenuItem, IContextualMenuItemStyles } from '@fluentui/react';
import { BaseCustomStyles, OnRenderAvatarCallback, ParticipantListParticipant } from '../types';
import { ParticipantItemStyles } from './ParticipantItem';
/**
 * Styles for the {@link ParticipantList} {@link ParticipantItem}.
 *
 * @public
 */
export interface ParticipantListItemStyles extends ParticipantItemStyles {
    /** Styles applied to the sub-menu of the {@link ParticipantList} {@link ParticipantItem}. */
    participantSubMenuItemsStyles?: IContextualMenuItemStyles;
}
/**
 * Styles for the {@link ParticipantList}.
 *
 * @public
 */
export interface ParticipantListStyles extends BaseCustomStyles {
    /** Styles for the {@link ParticipantList} {@link ParticipantItem}. */
    participantItemStyles?: ParticipantListItemStyles;
}
/**
 * A callback for providing custom menu items for each participant in {@link ParticipantList}.
 *
 * @public
 */
export type ParticipantMenuItemsCallback = (participantUserId: string, userId?: string, defaultMenuItems?: IContextualMenuItem[]) => IContextualMenuItem[];
/**
 * Props for {@link ParticipantList}.
 *
 * @public
 */
export type ParticipantListProps = {
    /** Participants in user call or chat */
    participants: ParticipantListParticipant[];
    /** User ID of user */
    myUserId?: string;
    /**
     * If set to `true`, excludes the local participant from the participant list with use of `myUserId` props (required in this case).
     *
     * @defaultValue `false`
     */
    excludeMe?: boolean;
    /** Optional callback to render each participant. If no callback is provided, each participant will be rendered with `ParticipantItem`  */
    onRenderParticipant?: (participant: ParticipantListParticipant) => JSX.Element | null;
    /** Optional callback to render the avatar for each participant. This property will have no effect if `onRenderParticipant` is assigned.  */
    onRenderAvatar?: OnRenderAvatarCallback;
    /** Optional callback to render the context menu for each participant  */
    onRemoveParticipant?: (userId: string) => void;
    /** Optional callback to render custom menu items for each participant. */
    onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;
    /** Optional callback when rendered ParticipantItem is clicked */
    onParticipantClick?: (participant?: ParticipantListParticipant) => void;
    /** Optional callback to render a context menu to mute a participant */
    onMuteParticipant?: (userId: string) => Promise<void>;
    styles?: ParticipantListStyles;
    /** Optional value to determine if the tooltip should be shown for participants or not */
    showParticipantOverflowTooltip?: boolean;
    /** Optional aria-labelledby prop that prefixes each ParticipantItem aria-label */
    participantAriaLabelledBy?: string;
    /** List of pinned participants */
    pinnedParticipants?: string[];
};
/**
 * Component to render all calling or chat participants.
 *
 * By default, each participant is rendered with {@link ParticipantItem}. See {@link ParticipantListProps.onRenderParticipant} to override.
 *
 * @public
 */
export declare const ParticipantList: (props: ParticipantListProps) => JSX.Element;
//# sourceMappingURL=ParticipantList.d.ts.map