/// <reference types="react" />
import { Account, Admin, Inbox, Opportunity, OpportunityStatus, StatusOption, Theme, Topic, TypeOption, UrgencyType, User } from '@parlor/common/amplify-schema/API';
import { Integration } from '@parlor/constants/integrations';
export interface IAdmin extends Admin {
    icon: JSX.Element | null;
}
export interface IUser extends User {
    avatar: string;
}
export interface IAccount extends Account {
    icon: JSX.Element | null;
}
export declare enum UserActivityType {
    accountChanges = "accountChanges",
    created = "created",
    userTeamChanged = "userTeamChanged",
    userTitleChanged = "userTitleChanged"
}
export interface UserActivity {
    account?: IAccount | null;
    accountAdded?: boolean | null;
    activityType: UserActivityType;
    admin?: IAdmin | null;
    createdAt: string;
    fromWidget?: boolean | null;
    id: string;
    integration?: Integration | null;
    team?: AdminTeam | null;
    title?: string | null;
    user: IUser;
}
export declare enum AccountActivityType {
    created = "created",
    opportunityEvent = "opportunityActivity",
    ownerChanged = "ownerChanged",
    userAdded = "userAdded",
    userRemoved = "userRemoved"
}
export interface AccountOrOpportunityActivity {
    account: IAccount;
    accountAdded?: boolean | null;
    activityType: AccountActivityType;
    addedOrRemovedBy: {
        icon?: string;
        title: string;
    };
    admin?: IAdmin | null;
    createdAt: string;
    fromWidget?: boolean | null;
    id: string;
    integration?: Integration | null;
    opportunity?: Opportunity;
    opportunityActivity: OpportunityActivty | null;
    owner?: IUser | null;
    user?: IUser | null;
}
export declare enum OpportunityEventType {
    createdRemoved = "createdRemoved",
    opportunityCreated = "opportunityCreated",
    opportunityRemoved = "opportunityRemoved",
    statusChange = "statusChange",
    typeChange = "typeChange"
}
type OpportunityActivty = {
    createdAt: string;
    id: string;
    opportunityID: string;
    status?: OpportunityStatus;
    type?: OpportunityEventType;
};
export declare enum NeedActivityType {
    inboxChanged = "inboxChanged",
    inboxTypeChanged = "inboxTypeChanged",
    jiraIssueEvent = "jiraIssueEvent",
    messageCommentAdded = "messageCommentAdded",
    ownerChanged = "ownerChanged",
    processedEvent = "needProcessedEvent",
    resolvedEvent = "needResolvedEvent",
    statusChanged = "statusChanged",
    submitted = "submitted",
    themeChanged = "themeChanged",
    topicChanged = "subtopicChanged",
    urgencyChanged = "urgencyChanged"
}
export interface NeedActivity {
    activityType: NeedActivityType;
    comment?: Comment | null;
    createdAt: string;
    id: string;
    inbox?: Inbox | null;
    integration?: string | null;
    isProcessed?: boolean | null;
    isResolved?: boolean | null;
    jiraIssue?: JiraIssue | null;
    needID: string;
    statusOption?: StatusOption | null;
    theme?: Theme | null;
    topic?: Topic | null;
    typeOption?: TypeOption | null;
    urgencyType?: UrgencyType | null;
    user?: IUser | null;
}
export interface JiraIssue {
    id: string;
    jiraStatus: string;
    name: string;
}
export declare enum TopicActivityType {
    addedSubTopic = "addedSubtopic",
    created = "created",
    inboxChanged = "inboxChanged",
    inboxTypeChanged = "inboxTypeChanged",
    jiraIssueEvent = "jiraIssueEvent",
    ownerChanged = "ownerChanged",
    resolvedSubTopic = "resolvedSubTopic",
    statusChanged = "statusChanged",
    themeChanged = "themeChanged",
    urgencyChanged = "urgencyChanged"
}
export interface TopicActivity {
    activityType: TopicActivityType;
    admin?: IAdmin | null;
    createdAt: string;
    eventTopic?: Topic | null;
    id: string;
    inbox?: Inbox | null;
    jiraIssue?: JiraIssue | null;
    statusOption?: StatusOption | null;
    theme?: Theme | null;
    topicID: string;
    typeOption?: TypeOption | null;
    urgencyType?: UrgencyType | null;
    user?: IUser | null;
    userID?: string | null;
}
export type NotationDataType = UserActivity | AccountOrOpportunityActivity | NeedActivity | TopicActivity;
export interface TimelineNotationInterface {
    notationData: NotationDataType;
    notationElement: 'account' | 'user' | 'topic' | 'need' | 'generic';
}
export interface TimelineNotationProps {
    className?: string;
    notation: TimelineNotationInterface;
}
export declare enum AdminTeam {
    CustomerSuccess = "CustomerSuccess",
    CustomerSupport = "CustomerSupport",
    Design = "Design",
    Engineering = "Engineering",
    ExecutiveTeam = "ExecutiveTeam",
    Marketing = "Marketing",
    Operations = "Operations",
    Other = "Other",
    Product = "Product",
    Sales = "Sales"
}
export {};
