/**
 * Compare Datasets Node - Version 2.3
 * Compare two inputs for changes
 */


export interface CompareDatasetsV23Params {
  mergeByFields?: {
        /** Values
     */
    values?: Array<{
      /** Input A Field
       * @hint  Enter the field name as text
       */
      field1?: string | Expression<string> | PlaceholderValue;
      /** Input B Field
       * @hint  Enter the field name as text
       */
      field2?: string | Expression<string> | PlaceholderValue;
    }>;
  };
/**
 * When There Are Differences
 * @default includeBoth
 */
    resolve?: 'preferInput1' | 'preferInput2' | 'mix' | 'includeBoth' | Expression<string>;
/**
 * Whether to tolerate small type differences when comparing fields. E.g. the number 3 and the string '3' are treated as the same.
 * @default false
 */
    fuzzyCompare?: boolean | Expression<boolean>;
/**
 * Prefer
 * @displayOptions.show { resolve: ["mix"] }
 * @default input1
 */
    preferWhenMix?: 'input1' | 'input2' | Expression<string>;
/**
 * For Everything Except
 * @hint Enter the names of the input fields as text, separated by commas
 * @displayOptions.show { resolve: ["mix"] }
 */
    exceptWhenMix?: string | Expression<string> | PlaceholderValue;
  options?: {
    /** Fields that shouldn't be included when checking whether two items are the same
     * @hint Enter the field names as text, separated by commas
     */
    skipFields?: string | Expression<string> | PlaceholderValue;
    /** Whether to tolerate small type differences when comparing fields. E.g. the number 3 and the string '3' are treated as the same.
     * @default false
     */
    fuzzyCompare?: boolean | Expression<boolean>;
    /** Whether to disallow referencing child fields using `parent.child` in the field name
     * @default false
     */
    disableDotNotation?: boolean | Expression<boolean>;
    /** Multiple Matches
     * @default first
     */
    multipleMatches?: 'first' | 'all' | Expression<string>;
  };
}

interface CompareDatasetsV23NodeBase {
  type: 'n8n-nodes-base.compareDatasets';
  version: 2.3;
}

export type CompareDatasetsV23ParamsNode = CompareDatasetsV23NodeBase & {
  config: NodeConfig<CompareDatasetsV23Params>;
};

export type CompareDatasetsV23Node = CompareDatasetsV23ParamsNode;