/**
 * Slack Node - Version 2.1
 * Discriminator: resource=user, operation=updateProfile
 */


interface Credentials {
  slackApi: CredentialReference;
  slackOAuth2Api: CredentialReference;
}

/** Update a user's profile */
export type SlackV21UserUpdateProfileParams = {
  resource: 'user';
  operation: 'updateProfile';
  authentication?: 'accessToken' | 'oAuth2' | Expression<string>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** Custom Fields
     * @default {}
     */
    customFieldUi?: {
        /** Custom Field
     */
    customFieldValues?: Array<{
      /** ID of the field to set. Choose from the list, or specify an ID using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;.
       */
      id?: string | Expression<string>;
      /** Value of the field to set
       */
      value?: string | Expression<string> | PlaceholderValue;
      /** Alt
       */
      alt?: string | Expression<string> | PlaceholderValue;
    }>;
  };
    /** This field can only be changed by admins for users on paid teams
     */
    email?: string | Expression<string> | PlaceholderValue;
    /** First Name
     */
    first_name?: string | Expression<string> | PlaceholderValue;
    /** Last Name
     */
    last_name?: string | Expression<string> | PlaceholderValue;
    /** Set Status
     * @default {}
     */
    status?: {
        /** Set Status
     */
    set_status?: Array<{
      /** Is a string referencing an emoji enabled for the Slack team, such as :mountain_railway:
       */
      status_emoji?: string | Expression<string> | PlaceholderValue;
      /** The number of minutes to wait until this status expires and is cleared. Optional.
       */
      status_expiration?: string | Expression<string>;
      /** Allows up to 100 characters, though we strongly encourage brevity
       */
      status_text?: string | Expression<string> | PlaceholderValue;
    }>;
  };
    /** ID of user to change. This argument may only be specified by team admins on paid teams.
     */
    user?: string | Expression<string> | PlaceholderValue;
  };
};

export type SlackV21UserUpdateProfileOutput = {
  avatar_hash?: string;
  display_name?: string;
  display_name_normalized?: string;
  email?: string;
  fields?: {
    Xf03UMDX9738?: {
      alt?: string;
      value?: string;
    };
    Xf03UMDX98DC?: {
      alt?: string;
      value?: string;
    };
    Xf03UR35L6MT?: {
      alt?: string;
      value?: string;
    };
    Xf03UR35L7K7?: {
      alt?: string;
      value?: string;
    };
    Xf03UTUL86LB?: {
      alt?: string;
      value?: string;
    };
    Xf03UU2E8W4S?: {
      alt?: string;
      value?: string;
    };
    Xf03UWFR6VJQ?: {
      alt?: string;
      value?: string;
    };
    Xf03V6LREDCZ?: {
      alt?: string;
      value?: string;
    };
    Xf0403NW3YCQ?: {
      alt?: string;
      value?: string;
    };
    Xf05GWG5K0S0?: {
      alt?: string;
      value?: string;
    };
    Xf08BT55JWBG?: {
      alt?: string;
      value?: string;
    };
    Xf08BWUCR1LM?: {
      alt?: string;
      value?: string;
    };
    Xf08FLSF1456?: {
      alt?: string;
      value?: string;
    };
  };
  first_name?: string;
  huddle_state?: string;
  huddle_state_expiration_ts?: number;
  image_1024?: string;
  image_192?: string;
  image_24?: string;
  image_32?: string;
  image_48?: string;
  image_512?: string;
  image_72?: string;
  image_original?: string;
  is_custom_image?: boolean;
  last_name?: string;
  phone?: string;
  real_name?: string;
  real_name_normalized?: string;
  skype?: string;
  start_date?: string;
  status_emoji?: string;
  status_emoji_display_info?: Array<{
    display_url?: string;
    emoji_name?: string;
    unicode?: string;
  }>;
  status_expiration?: number;
  status_text?: string;
  status_text_canonical?: string;
  title?: string;
};

export type SlackV21UserUpdateProfileNode = {
  type: 'n8n-nodes-base.slack';
  version: 2.1;
  credentials?: Credentials;
  config: NodeConfig<SlackV21UserUpdateProfileParams>;
  output?: Items<SlackV21UserUpdateProfileOutput>;
};