import React, { BaseSyntheticEvent, RefObject } from 'react';
import { Color, OpportunityStage, OpportunityStatus, PlayBookObject, Playbook, PropertyOption, SavedView, ScoreRiskCategory, SegmentType, SignalType, SourceOfData, Task } from '@parlor/common/amplify-schema';
import { SearchSelectorProps } from '@parlor/components/select-v4';
import { getUserNickName } from '@parlor/contexts/selectors-options-loaders-context/loaders';
import { PriorityLevel, UrgencyLevel } from '@parlor/ui/icons';
import { AppColors } from '@parlor/ui/theme';
export type RenderTaskSelectorProps = ModelWithName<{
    projectKey?: string;
    status?: string;
    taskKey?: string;
}>;
export type ModelWithId<T = Record<string, unknown>> = T & {
    [key: string]: any;
    id: string;
};
export type ModelWithLabel<T = Record<string, any>> = ModelWithId<{
    label: string;
}> & T;
export type ModelWithDisplayName<T = Record<string, any>> = ModelWithId<{
    displayName?: string;
}> & T;
export type ModelWithName<T = {
    [key: string]: any;
}> = ModelWithId<{
    name: string;
}> & T;
export type RenderPlaybookSelectorProps = ModelWithName & {
    actionsCount: Playbook['actionsAggregate'];
};
export type RenderThemeSelectorProps = ModelWithDisplayName;
export type RenderFolderSelectorProps = ModelWithName;
export type RenderDynamicHtmlTemplateSelectorProps = ModelWithName<{
    html: string;
}>;
export declare const renderWithDisplayNameOption: (option: RenderThemeSelectorProps) => JSX.Element;
export declare const renderUserOption: (user: Parameters<typeof getUserNickName>[0]) => JSX.Element;
export declare const renderWithNickNameOption: (option: ModelWithId<{
    nickname: string;
}>) => JSX.Element;
export declare const renderWithNameOption: (option: ModelWithName) => JSX.Element;
export declare const renderFolderOption: (option: ModelWithName) => JSX.Element;
export declare const renderAIModalTypes: (option: ModelWithName) => JSX.Element;
export declare const renderObjectAssignOption: (option: ModelWithName & {
    icon: JSX.Element;
}) => JSX.Element;
export declare const renderAssignMilestoneOption: (option: ModelWithName & {
    icon: JSX.Element;
}) => JSX.Element;
export declare const renderAssignConditionBranchOption: (option: ModelWithName & {
    icon: JSX.Element;
}) => JSX.Element;
export type RenderSegmentOptionProps = ModelWithName & {
    type: SegmentType;
};
export declare const renderSegmentOption: (option: RenderSegmentOptionProps) => JSX.Element;
export declare const renderSegmentPlaybookOption: (option: RenderPlaybookSelectorProps & {
    assignedObject: PlayBookObject;
}) => JSX.Element;
export type RenderInboxSelectorProps = ModelWithName<{
    key: string;
}>;
export declare const renderInboxOption: ({ name, id }: RenderInboxSelectorProps) => JSX.Element;
export type RenderSavedViewsSelectorProps = ModelWithName<{
    key: string;
}>;
export declare const renderSavedViewsOption: ({ name, isPublic }: SavedView) => JSX.Element;
export type RenderPropertyValueMapSelectorProps = ModelWithId<{
    value: string;
}>;
export declare const renderPropertyValueMapOption: ({ value, id }: RenderPropertyValueMapSelectorProps) => JSX.Element;
export type RenderCategorySelectorProps = ModelWithName;
export declare const renderCategoryOption: ({ name, id }: RenderCategorySelectorProps) => JSX.Element;
export type SavedViewTableOptionProps = ModelWithName;
export declare const renderSavedViewTableOption: ({ name, id }: SavedViewTableOptionProps) => JSX.Element;
export declare const renderPropertyOption: ({ name, objectKey, id }: Partial<PropertyOption>) => JSX.Element;
export type RenderMilestoneSelectorProps = ModelWithName<{
    className?: string;
    hasChild?: boolean;
    journey?: {
        [key: string]: any;
    };
    onClick?: (event?: React.MouseEvent) => void;
    parentMilestone?: {
        [key: string]: any;
    };
}>;
export declare const renderMilestoneOption: ({ id, name, onClick, className }: RenderTopicSelectorProps) => JSX.Element;
export type RenderTopicSelectorProps = ModelWithName<{
    className?: string;
    hasOpenChild?: boolean;
    hasResolvedChild?: boolean;
    inbox?: {
        [key: string]: any;
        key: string;
    };
    onClick?: (event?: React.MouseEvent) => void;
    statusOption?: {
        color?: string;
        value?: string;
    };
    topicKey?: number;
}>;
export declare const renderTopicOption: ({ id, name, statusOption, topicKey, inbox, onClick, className, }: RenderTopicSelectorProps) => JSX.Element;
export declare function renderUserOrAccountField({ fullName, email, displayName, firstName, lastName, __typename, showIcons, id, accounts, onClick, }: RenderUserSelectorProps): JSX.Element;
export declare const renderUserOrAccountMenuFooter: ({ openCreateUserModal, openCreateAccountModal, }: {
    openCreateAccountModal?: (e?: BaseSyntheticEvent) => unknown;
    openCreateUserModal?: (e?: BaseSyntheticEvent) => unknown;
}) => ({ closeMenu }: {
    closeMenu: any;
}) => JSX.Element;
export type RenderUserSelectorProps = ModelWithId<{
    __typename?: string;
    accounts?: ModelWithDisplayName[];
    displayName?: string;
    email?: string;
    fullName?: string;
    showIcons?: boolean;
    userAccounts?: string;
}>;
export type RenderAuditCorePropertySelectorProps = ModelWithId<{
    propertyName: string;
}>;
export type RenderAdminSelectorProps = ModelWithId<{
    avatar?: string;
    email?: string;
    firstName?: string;
    fullName?: string;
    lastName?: string;
}>;
export type RenderAIModelSelectorProps = ModelWithId<{
    name?: string;
}>;
export type RenderRecordOwnerSelectorProps = ModelWithId<{
    name: string;
}>;
export type RenderAirtableSelectorProps = Pick<Task, 'id' | 'status' | 'priority' | 'name' | 'dueDate' | 'taskKey'> & {
    original?: {
        createdTime: string;
        fields: {
            Deadline: string;
            Priority: string;
            Status: string;
            name: string;
        };
        id: string;
    };
};
export interface IAirtableInstance {
    id: string;
    integrationDocumentID?: string;
    name?: string;
}
export type RenderAccountSelectorProps = ModelWithId<{
    displayName?: string;
}>;
export type RenderDesiredOutcomeSelectorProps = ModelWithId<{
    name?: string;
}>;
export type RenderNeedSelectorProps = ModelWithId<{
    description?: string;
    onClick?: () => void;
}>;
export type RenderEmailOptionProps = {
    email: string;
    id: string;
};
export declare const renderEmailOption: ({ id, email }: RenderEmailOptionProps) => JSX.Element;
export declare const renderAIModelOption: ({ id, name }: RenderAIModelSelectorProps) => JSX.Element;
export declare const renderAdminOption: ({ id, avatar, firstName, lastName, email, fullName }: RenderAdminSelectorProps) => JSX.Element;
export declare const renderRecordOwnerOption: ({ id, name }: RenderRecordOwnerSelectorProps) => JSX.Element;
export declare const renderAirtableOption: SearchSelectorProps<RenderAirtableSelectorProps>['renderOption'];
export declare const renderAirtableInstanceOption: ({ id, name }: RenderAirtableSelectorProps) => JSX.Element;
export declare const renderAirtableListTaskOption: ({ id, name, status }: RenderAirtableSelectorProps) => JSX.Element;
export declare const renderDynamicPropertyOption: (item: ModelWithId) => JSX.Element;
export declare const renderAccountOption: ({ id, displayName }: RenderAccountSelectorProps) => JSX.Element;
export declare const renderNeedOption: ({ id, description, onClick }: RenderNeedSelectorProps) => JSX.Element;
export type RenderPropertyMapSelectorProps = ModelWithName;
export declare const renderPropertyMapOption: ({ name, id }: RenderPropertyMapSelectorProps) => JSX.Element;
export declare const renderPropertyMapOptionForQuill: ({ name, id }: RenderPropertyMapSelectorProps) => JSX.Element;
export type RenderPropertySelectorProps = ModelWithName;
export declare const renderPropertyOptions: ({ name, id }: RenderPropertyMapSelectorProps) => JSX.Element;
export type RenderStepSelectorProps = ModelWithName;
export declare const renderStepOptions: ({ label, id }: RenderPropertyMapSelectorProps) => JSX.Element;
export type RenderUrgencySelectorProps = ModelWithLabel<{
    level: UrgencyLevel;
}>;
export declare const renderUrgencyOption: ({ id, label, level }: RenderUrgencySelectorProps) => JSX.Element;
export type RenderFeedFacingSelectorProps = ModelWithId<{
    value: string;
}>;
export declare const renderFeedFacingOption: ({ id, value }: RenderFeedFacingSelectorProps) => JSX.Element;
export type RenderFeedTypeSelectorProps = ModelWithId<{
    value: string;
}>;
export declare const renderFeedTypeOption: ({ id, value }: RenderFeedTypeSelectorProps) => JSX.Element;
export declare const renderLockedFeedTypeOption: ({ id, value }: RenderFeedTypeSelectorProps) => JSX.Element;
export type RenderPrioritySelectorProps = ModelWithLabel<{
    level: PriorityLevel;
}>;
export declare const renderPriorityOption: ({ id, label, level }: RenderPrioritySelectorProps) => JSX.Element;
export type RenderOpportunityTypeSelectorProps = ModelWithName;
export declare const renderOpportunityTypeOption: (option: ModelWithName) => JSX.Element;
export type RenderTaskTypeSelectorProps = ModelWithLabel;
export type RenderOperationForRollupSelectorProps = ModelWithLabel;
export declare const renderTaskTypeOption: ({ id, label }: RenderTaskTypeSelectorProps) => JSX.Element;
export declare const renderOperationForRollupOption: ({ id, label }: RenderOperationForRollupSelectorProps) => JSX.Element;
export type RenderAccountTypeCategoryProps = ModelWithLabel;
export declare const renderAccountTypeCategoryOption: ({ id, label }: RenderAccountTypeCategoryProps) => JSX.Element;
export type RenderTaskAssociationSelectorProps = ModelWithLabel;
export declare const renderTaskAssociationOption: ({ id, label }: RenderTaskTypeSelectorProps) => JSX.Element;
export type RenderAssignToSelectorProps = ModelWithId<{
    value: string;
}>;
export declare const renderAssignToOption: ({ id, value }: RenderAssignToSelectorProps) => JSX.Element;
export type RenderRiskSelectorProps = ModelWithId<{
    value: string;
}>;
export declare const renderRiskOption: ({ id, value }: RenderRiskSelectorProps) => JSX.Element;
export type RenderStatusSelectorProps = ModelWithId<{
    color?: string;
    resolvesNeed?: boolean;
    value?: string;
}>;
export declare const renderStatusOption: ({ id, value, color }: RenderStatusSelectorProps) => JSX.Element;
export type RenderTypeSelectorProps = ModelWithId<{
    value?: string;
}>;
export declare const renderIntegrationOption: ({ id, name }: ModelWithName) => JSX.Element;
export declare const renderTypeOption: ({ id, value }: RenderTypeSelectorProps) => JSX.Element;
export type RenderSignalTypeSelectorProps = ModelWithId<{
    value?: SignalType;
}>;
export declare const renderSignalTypeOption: ({ id, value }: RenderTypeSelectorProps) => JSX.Element;
export declare const getMenuControlWidth: (ref: RefObject<HTMLDivElement>) => number;
export type RenderExternalIDOptionProps = {
    externalID?: string;
    id: string;
    instanceName?: string;
    integrationInstance?: {
        name: string;
    };
    objectSource?: string;
};
export declare const renderExternalIDOption: ({ id, externalID, integrationInstance, instanceName, objectSource, }: RenderExternalIDOptionProps) => JSX.Element;
export declare const renderExternalIDOptionV2: ({ id, externalID, integrationInstance, instanceName, objectSource, }: RenderExternalIDOptionProps) => JSX.Element;
export declare const renderObjectSourceOption: (sourceOfData?: SourceOfData | undefined | null) => JSX.Element;
export type RenderAssociatedSegmentSelectorProps = ModelWithId<{
    type?: SegmentType;
}>;
export declare const renderAssociatedSegmentOption: ({ id, name, type }: RenderAssociatedSegmentSelectorProps) => JSX.Element;
export type RenderRiskScoreTypeProps = ModelWithId<{
    type?: ScoreRiskCategory;
}>;
export declare const renderRiskScoreType: ({ id, name }: RenderRiskScoreTypeProps) => JSX.Element;
export type RenderProductSelectorProps = ModelWithId<{
    name?: string;
}>;
export declare const renderProductOption: ({ name, id }: RenderProductSelectorProps) => JSX.Element;
export type RenderTagSelectorProps = ModelWithId<{
    name?: string;
}>;
export declare const renderTagOption: ({ id, name }: RenderTagSelectorProps) => JSX.Element;
export declare const renderColorOption: ({ color, id, label, textColor }: AppColors) => JSX.Element;
export type RenderScoreValueSelectorProps = ModelWithId<{
    color?: Color;
    name?: string;
}>;
export declare const renderScoreValueOptions: ({ id, name, color: scoreColor }: RenderScoreValueSelectorProps) => JSX.Element;
export interface IJiraProject {
    id: string;
    key?: string;
    name?: string;
}
export interface IJiraTask {
    id: string;
    name?: string;
    projectKey?: string;
    status?: string;
    taskKey?: string;
}
export type JiraModel = IJiraProject | IJiraTask;
export declare const renderJiraOption: SearchSelectorProps<JiraModel>['renderOption'];
export declare const renderJiraProjectOption: ({ id, name, key }: IJiraProject) => JSX.Element;
export declare const renderJiraIssueOption: ({ id, name, taskKey, status }: IJiraTask) => JSX.Element;
export type RenderOpportunityStageSelectorProps = ModelWithId<{
    displayName: OpportunityStage;
}>;
export declare const renderOpportunityStageOption: ({ id, displayName }: RenderOpportunityStageSelectorProps) => JSX.Element;
export type RenderResourceTypeSelectorProps = ModelWithLabel;
export declare const renderResourceTypeOption: ({ id, label }: RenderResourceTypeSelectorProps) => JSX.Element;
export type RenderSentimentSelectorProps = ModelWithLabel & {
    bgColor?: string;
};
export declare const renderSentimentOption: ({ id, label, bgColor }: RenderSentimentSelectorProps) => JSX.Element;
export declare const renderSentimentSelectedOption: ({ id, label, bgColor }: RenderSentimentSelectorProps) => JSX.Element;
export type RenderOpportunityStatusSelectorProps = {
    id: OpportunityStatus;
    name: string;
};
export declare const renderOpportunityStatusOption: ({ id, name }: RenderOpportunityStatusSelectorProps) => JSX.Element;
