from arcade_hubspot.enums import HubspotObject

HUBSPOT_OBJECT_PROPERTIES = {
    HubspotObject.COMPANY: [
        "type",
        "name",
        "about_us",
        "address",
        "city",
        "state",
        "zip",
        "country",
        "annualrevenue",
        "hs_annual_revenue_currency_code",
        "industry",
        "phone",
        "website",
        "domain",
        "numberofemployees",
        "hs_lead_status",
        "lifecyclestage",
        "linkedin_company_page",
        "twitterhandle",
    ],
    HubspotObject.CONTACT: [
        "salutation",
        "email",
        "work_email",
        "hs_additional_emails",
        "mobilephone",
        "phone",
        "firstname",
        "lastname",
        "lifecyclestage",
        "annualrevenue",
        "address",
        "date_of_birth",
        "degree",
        "gender",
        "buying_role",
        "hs_language",
        "hs_lead_status",
        "hs_timezone",
        "hubspot_owner_id",
        "hubspot_owner_name",
        "job_function",
        "jobtitle",
        "seniority",
        "industry",
        "twitterhandle",
    ],
    HubspotObject.CALL: [
        "hs_body_preview",
        "hs_call_direction",
        "hs_call_status",
        "hs_call_summary",
        "hs_call_title",
        "hs_createdate",
        "hubspot_owner_id",
        "hs_call_disposition",
        "hs_timestamp",
    ],
    HubspotObject.DEAL: [
        "dealname",
        "dealstage",
        "dealtype",
        "closedate",
        "closed_lost_reason",
        "closed_won_reason",
        "hs_is_closed_won",
        "hs_is_closed_lost",
        "hs_closed_amount",
        "pipeline",
        "hubspot_owner_id",
        "description",
        "hs_deal_score",
        "amount",
        "hs_forecast_probability",
        "hs_forecast_amount",
    ],
    HubspotObject.EMAIL: [
        "hs_object_id",
        "hs_body_preview",
        "hs_email_sender_raw",
        "hs_email_from_raw",
        "hs_email_to_raw",
        "hs_email_bcc_raw",
        "hs_email_cc_raw",
        "hs_email_subject",
        "hs_email_status",
        "hs_timestamp",
        "hubspot_owner_id",
        "hs_email_associated_contact_id",
    ],
    HubspotObject.MEETING: [
        "hs_object_id",
        "hs_meeting_title",
        "hs_body_preview",
        "hs_meeting_location",
        "hs_meeting_outcome",
        "hubspot_owner_id",
        "hs_meeting_start_time",
        "hs_meeting_end_time",
    ],
    HubspotObject.NOTE: [
        "hs_object_id",
        "hs_body_preview",
        "hs_timestamp",
        "hubspot_owner_id",
    ],
    HubspotObject.TASK: [
        "hs_object_id",
        "hs_body_preview",
        "hs_timestamp",
        "hubspot_owner_id",
        "hs_associated_contact_labels",
        "hs_task_is_overdue",
        "hs_task_priority",
        "hs_task_status",
        "hs_task_subject",
        "hs_task_type",
    ],
}


def get_object_properties(object_type: HubspotObject) -> list[str]:
    return HUBSPOT_OBJECT_PROPERTIES[object_type]
