import type { ComponentType } from "react";
import type { ConfirmationState } from "../hooks/use-confirmation";
import type Question from "../../metabase-lib/v1/Question";
import type { CollectionId, Member, User } from "../../metabase-types/api";
export interface AuthProvider {
    name: string;
    Button: ComponentType<AuthProviderButtonProps>;
    Panel?: ComponentType<AuthProviderPanelProps>;
}
export interface AuthProviderButtonProps {
    isCard?: boolean;
    redirectUrl?: string;
}
export interface AuthProviderPanelProps {
    redirectUrl?: string;
}
export type GetAuthProviders = (providers: AuthProvider[]) => AuthProvider[];
export type GetChangeMembershipConfirmation = (currentUser: User, updatedMembership: Member) => Partial<ConfirmationState> | null;
export type GetRemoveMembershipConfirmation = (currentUser: User, currentUserMemberships: Member[], deletedMembershipId: number) => Partial<ConfirmationState> | null;
export type GetRevokeManagerPeopleRedirect = (currentUser: User, currentUserMemberships: Member[]) => string | null;
export type GetRevokeManagerGroupsRedirect = (currentUser: User, currentUserMemberships: Member[]) => string | null;
export type PluginGroupManagersType = {
    UserTypeToggle: (props: any) => JSX.Element;
    UserTypeCell: ((props: any) => JSX.Element) | null;
    getChangeMembershipConfirmation: GetChangeMembershipConfirmation;
    getRemoveMembershipConfirmation: GetRemoveMembershipConfirmation;
    deleteGroup: any;
    confirmDeleteMembershipAction: any;
    confirmUpdateMembershipAction: any;
};
export type LLMIndicatorProps = {
    question: Question;
    initialCollectionId: CollectionId | null | undefined;
    onAccept: (values: {
        name?: string;
        description?: string;
    }) => void;
};
export type LLMSuggestQuestionInfo = (props: LLMIndicatorProps) => JSX.Element | null;
export type PluginLLMAutoDescription = {
    isEnabled: () => boolean;
    LLMSuggestQuestionInfo: LLMSuggestQuestionInfo;
};
