const t = {
  equal: {
    label: "Col = X (Equal)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "equal"
      },
      x: {
        label: "X",
        fieldType: "number",
        defaultValue: () => 0
      }
    },
    supportedFor: a
  },
  lessThan: {
    label: "Col < X (Less Than)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "lessThan"
      },
      x: {
        label: "X",
        fieldType: "number",
        defaultValue: () => 0
      }
    },
    supportedFor: a
  },
  greaterThan: {
    label: "Col > X (Greater Than)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "greaterThan"
      },
      x: {
        label: "X",
        fieldType: "number",
        defaultValue: () => 0
      }
    },
    supportedFor: a
  },
  lessThanOrEqual: {
    label: "Col ≤ X (Less Than or Equal)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "lessThanOrEqual"
      },
      x: {
        label: "X",
        fieldType: "number",
        defaultValue: () => 0
      }
    },
    supportedFor: a
  },
  greaterThanOrEqual: {
    label: "Col ≥ X (Greater Than or Equal)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "greaterThanOrEqual"
      },
      x: {
        label: "X",
        fieldType: "number",
        defaultValue: () => 0
      }
    },
    supportedFor: a
  },
  // Columns comparison
  equalToColumn: {
    label: "Col₁ = Col₂ (Compare Columns)",
    form: {
      column: {
        label: "Col₁",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "equalToColumn"
      },
      rhs: {
        label: "Col₂",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      }
    },
    supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
  },
  lessThanColumn: {
    label: "Col₁ < Col₂ (Compare Columns)",
    form: {
      column: {
        label: "Col₁",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "lessThanColumn"
      },
      rhs: {
        label: "Col₂",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      minDiff: {
        label: "Margin (positive)",
        fieldType: "number?",
        defaultValue: () => {
        }
      }
    },
    supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
  },
  greaterThanColumn: {
    label: "Col₁ > Col₂ (Compare Columns)",
    form: {
      column: {
        label: "Col₁",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "greaterThanColumn"
      },
      rhs: {
        label: "Col₂",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      minDiff: {
        label: "Margin (positive)",
        fieldType: "number?",
        defaultValue: () => {
        }
      }
    },
    supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
  },
  lessThanColumnOrEqual: {
    label: "Col₁ ≤ Col₂ (Compare Columns)",
    form: {
      column: {
        label: "Col₁",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "lessThanColumnOrEqual"
      },
      rhs: {
        label: "Col₂",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      minDiff: {
        label: "Margin (positive)",
        fieldType: "number?",
        defaultValue: () => {
        }
      }
    },
    supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
  },
  greaterThanColumnOrEqual: {
    label: "Col₁ ≥ Col₂ (Compare Columns)",
    form: {
      column: {
        label: "Col₁",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "greaterThanColumnOrEqual"
      },
      rhs: {
        label: "Col₂",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      minDiff: {
        label: "Margin (positive)",
        fieldType: "number?",
        defaultValue: () => {
        }
      }
    },
    supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
  },
  // Ordering filters
  topN: {
    label: "Top N",
    form: {
      column: {
        label: "Rank By Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "topN"
      },
      n: {
        label: "N",
        fieldType: "number",
        defaultValue: () => 10
      }
    },
    supportedFor: a
  },
  bottomN: {
    label: "Bottom N",
    form: {
      column: {
        label: "Rank By Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "bottomN"
      },
      n: {
        label: "N",
        fieldType: "number",
        defaultValue: () => 10
      }
    },
    supportedFor: a
  },
  patternContainSubsequence: {
    label: "Col ~ Seq (Contain Subsequence)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "patternContainSubsequence"
      },
      value: {
        label: "Seq",
        fieldType: "string",
        defaultValue: () => ""
      }
    },
    supportedFor: u
  },
  patternNotContainSubsequence: {
    label: "Col ≁ Seq (Not Contain Subsequence)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "patternNotContainSubsequence"
      },
      value: {
        label: "Seq",
        fieldType: "string",
        defaultValue: () => ""
      }
    },
    supportedFor: u
  },
  patternEquals: {
    label: "Col = Seq (Equals)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "patternEquals"
      },
      value: {
        label: "Seq",
        fieldType: "string",
        defaultValue: () => ""
      }
    },
    supportedFor: u
  },
  patternNotEquals: {
    label: "Col ≠ Seq (Not Equal)",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "patternNotEquals"
      },
      value: {
        label: "Seq",
        fieldType: "string",
        defaultValue: () => ""
      }
    },
    supportedFor: u
  },
  isNA: {
    label: "Is NA",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "isNA"
      }
    },
    supportedFor: () => !0
  },
  isNotNA: {
    label: "Is Not NA",
    form: {
      column: {
        label: "Column",
        fieldType: "SUniversalPColumnId",
        defaultValue: () => {
        }
      },
      type: {
        label: "Predicate",
        fieldType: "FilterType",
        defaultValue: () => "isNotNA"
      }
    },
    supportedFor: () => !0
  },
  or: {
    label: "Or",
    form: {
      type: {
        fieldType: "FilterType",
        label: "Predicate",
        defaultValue: () => "or"
      },
      filters: {
        fieldType: "unknown[]",
        label: "Filters",
        defaultValue: () => []
      }
    },
    supportedFor: () => !1
  },
  and: {
    label: "And",
    form: {
      type: {
        fieldType: "FilterType",
        label: "Predicate",
        defaultValue: () => "and"
      },
      filters: {
        fieldType: "unknown[]",
        label: "Filters",
        defaultValue: () => []
      }
    },
    supportedFor: () => !1
  },
  not: {
    label: "Not",
    form: {
      type: {
        fieldType: "FilterType",
        label: "Predicate",
        defaultValue: () => "not"
      },
      filter: {
        fieldType: "form",
        label: "Filter",
        defaultValue: () => {
        }
      }
    },
    supportedFor: () => !1
  }
};
function r(e) {
  return e ? Object.entries(t).filter(([l, o]) => o.supportedFor(e)).map(([l, o]) => ({
    label: o.label,
    value: l
  })) : [];
}
function d(e) {
  return t[e];
}
function a(e) {
  return e.valueType === "Int" || e.valueType === "Long" || e.valueType === "Float" || e.valueType === "Double";
}
function u(e) {
  return e.valueType === "String";
}
export {
  t as filterUiMetadata,
  d as getFilterUiMetadata,
  r as getFilterUiTypeOptions
};
//# sourceMappingURL=metadata.js.map
