import { WebPartContext } from '@microsoft/sp-webpart-base';
import { AutocompleteProps, ChipOwnProps, TextFieldProps, TextFieldVariants } from '@mui/material';
import { PrincipalSource, PrincipalType } from '@pnp/sp';
import { IPeoplePickerEntity as IBasePeoplePickerEntity } from '@pnp/sp/profiles';
import { ReactNode } from 'react';
/**
 * Base properties for the Autocomplete component in PeoplePicker.
 */
type AutocompleteBaseProps = AutocompleteProps<IPeoplePickerEntity | IPeoplePickerEntity[], boolean, boolean, true>;
/**
 * Extended People Picker entity that includes an image field.
 */
export interface IPeoplePickerEntity extends IBasePeoplePickerEntity {
    /** Image URL associated with the person */
    Image: string;
}
/**
 * Base properties for the PeoplePicker component.
 */
interface IPeoplePickerBaseProps {
    /** SharePoint WebPart context */
    context: WebPartContext;
    /** Label for the PeoplePicker input */
    label?: string;
    /** Whether multiple people can be selected */
    multiple?: boolean;
    /** Whether the field is required */
    required?: boolean;
    /** Maximum number of suggestions displayed */
    searchSuggestionLimit?: number;
    /** Maximum number of people that can be selected */
    personSelectionLimit?: number;
    /** The source from which people or groups are retrieved */
    principalSource?: PrincipalSource;
    /** Specifies the type of principal (user, security group, distribution list, etc.) to retrieve */
    principalType?: PrincipalType;
    /** Whether the component is in a loading state */
    loading?: boolean;
    /** Whether the PeoplePicker is disabled */
    disabled?: boolean;
    /** Variant of the text field */
    variant?: TextFieldVariants;
    /** Custom render function for the input field */
    renderInput?: AutocompleteBaseProps['renderInput'];
    /** Variant of the selected tag */
    tagVariant?: ChipOwnProps['variant'];
    /** Color of the text field */
    color?: TextFieldProps['color'];
    /** Color of the selected tag */
    tagColor?: ChipOwnProps['color'];
    /** Size of the input field */
    size?: AutocompleteBaseProps['size'];
    /** MUI system styling (sx prop) */
    sx?: AutocompleteBaseProps['sx'];
    /** Name attribute for the input field */
    name?: TextFieldProps['name'];
    /** Whether the input field takes the full width */
    fullWidth?: TextFieldProps['fullWidth'];
    /** Custom loading component */
    LoadingComponent?: ReactNode;
}
/**
 * Properties for the PeoplePicker component.
 * Supports both single and multiple selection modes.
 */
export interface IPeoplePickerProps extends IPeoplePickerBaseProps {
    /** Enables multiple selection */
    multiple?: boolean;
    /** Current selected value(s) */
    value?: IPeoplePickerEntity | IPeoplePickerEntity[];
    /** Default selected value(s) */
    defaultValue?: IPeoplePickerEntity | IPeoplePickerEntity[];
    /** Callback function triggered when selection changes */
    onChange?: (value: IPeoplePickerEntity | IPeoplePickerEntity[]) => void;
}
export {};
//# sourceMappingURL=IPeoplePickerProps.d.ts.map