import type { JSONSupport } from "../../../../core/JSONSupport.js";

/** @since 5.0 */
export interface ReconcileParametersProperties extends Partial<Pick<ReconcileParameters, "abortIfConflicts" | "conflictDetection" | "withPost">> {}

/** @since 5.0 */
export type DetectionType = "by-object" | "by-attribute";

/** @since 5.0 */
export default class ReconcileParameters extends JSONSupport {
  constructor(properties?: ReconcileParametersProperties);
  /**
   * Specifies whether the reconcile should be aborted if conflicts are found. The default is false
   *
   * @default false
   * @since 5.0
   */
  accessor abortIfConflicts: boolean;
  /**
   * Specifies the conditions required for conflicts to occur are defined by object (row) or attribute (column).
   *
   * @since 5.0
   */
  accessor conflictDetection: DetectionType | null;
  /**
   * Specifies if post will occur after calling reconcile. Causes post to occur immediately after reconcile, false by default.
   *
   * @default false
   * @since 5.0
   */
  accessor withPost: boolean;
}