/**
 * Edit Fields (Set) Node - Version 3
 * Discriminator: mode=manual
 */


/** Edit item fields one by one */
export type SetV3ManualParams = {
  mode: 'manual';
/**
 * Whether this item should be duplicated a set number of times
 * @default false
 */
    duplicateItem?: boolean | Expression<boolean>;
/**
 * How many times the item should be duplicated, mainly used for testing and debugging
 * @displayOptions.show { duplicateItem: [true] }
 * @default 0
 */
    duplicateCount?: number | Expression<number>;
/**
 * Edit existing fields or add new ones to modify the output data
 * @default {}
 */
    fields?: {
        /** Values
     */
    values?: Array<{
      /** Name of the field to set the value of. Supports dot-notation. Example: data.person[0].name.
       */
      name?: string | Expression<string> | PlaceholderValue;
      /** The field value type
       * @default stringValue
       */
      type?: 'stringValue' | 'numberValue' | 'booleanValue' | 'arrayValue' | 'objectValue' | Expression<string>;
      /** Value
       * @displayOptions.show { type: ["stringValue"] }
       */
      stringValue?: string | Expression<string> | PlaceholderValue;
      /** Value
       * @displayOptions.show { type: ["numberValue"] }
       */
      numberValue?: string | Expression<string> | PlaceholderValue;
      /** Value
       * @displayOptions.show { type: ["booleanValue"] }
       * @default true
       */
      booleanValue?: 'true' | 'false' | Expression<string>;
      /** Value
       * @displayOptions.show { type: ["arrayValue"] }
       */
      arrayValue?: string | Expression<string> | PlaceholderValue;
      /** Value
       * @displayOptions.show { type: ["objectValue"] }
       * @default ={}
       */
      objectValue?: IDataObject | string | Expression<string>;
    }>;
  };
/**
 * How to select the fields you want to include in your output items
 * @default all
 */
    include?: 'all' | 'none' | 'selected' | 'except' | Expression<string>;
/**
 * Comma-separated list of the field names you want to include in the output. You can drag the selected fields from the input panel.
 * @displayOptions.show { include: ["selected"] }
 */
    includeFields?: string | Expression<string> | PlaceholderValue;
/**
 * Comma-separated list of the field names you want to exclude from the output. You can drag the selected fields from the input panel.
 * @displayOptions.show { include: ["except"] }
 */
    excludeFields?: string | Expression<string> | PlaceholderValue;
  options?: {
    /** Whether binary data should be included if present in the input item
     * @default true
     */
    includeBinary?: boolean | Expression<boolean>;
    /** Whether binary data should be stripped from the input item. Only applies when "Include Other Input Fields" is enabled.
     * @displayOptions.show { /includeOtherFields: [true] }
     * @default true
     */
    stripBinary?: boolean | Expression<boolean>;
    /** Whether to ignore field type errors and apply a less strict type conversion
     * @default false
     */
    ignoreConversionErrors?: boolean | Expression<boolean>;
    /** By default, dot-notation is used in property names. This means that "a.b" will set the property "b" underneath "a" so { "a": { "b": value} }. If that is not intended this can be deactivated, it will then set { "a.b": value } instead.
     * @default true
     */
    dotNotation?: boolean | Expression<boolean>;
  };
};

export type SetV3ManualNode = {
  type: 'n8n-nodes-base.set';
  version: 3;
  config: NodeConfig<SetV3ManualParams>;
};