import type { NameLabelPair, ValueSource } from './basic'; import type { FieldTypeEnum } from '../utils/formatQuery/utils'; interface CommonProperties { path?: number[]; id?: string; disabled?: boolean; } export type RuleType = CommonProperties & { field: F; operator: O; value: V; fieldType?: FieldTypeEnum; valueSource?: ValueSource; }; export type RuleGroupType = CommonProperties & { combinator: C; rules: RuleGroupArray, R>; not?: boolean; }; export type RuleGroupArray = (R | RG)[]; export type UpdateableProperties = Exclude; export type DefaultRuleGroupArray = RuleGroupArray; export type DefaultRuleGroupType = RuleGroupType & { rules: DefaultRuleGroupArray; }; export type DefaultRuleType = RuleType; export type DefaultCombinatorName = 'and' | 'or'; export type DefaultOperatorName = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'contains' | 'beginsWith' | 'endsWith' | 'doesNotContain' | 'doesNotBeginWith' | 'doesNotEndWith' | 'null' | 'notNull' | 'in' | 'notIn' | 'exist' | 'notExist' | 'between' | 'notBetween'; export interface DefaultCombinator extends NameLabelPair { name: DefaultCombinatorName; } export interface DefaultOperator extends NameLabelPair { name: DefaultOperatorName; } export {};