import type { DefaultCombinatorName, DefaultRuleGroupArray, DefaultRuleGroupType, DefaultRuleType, RuleGroupArray, RuleGroupType, RuleType } from './ruleGroups'; import type { MappedTuple } from './ruleGroupsICutils'; export type RuleGroupTypeIC = Omit, 'combinator' | 'rules'> & { rules: RuleGroupICArray, R, C>; }; export type RuleGroupTypeAny = RuleGroupType | RuleGroupTypeIC; export type RuleGroupICArray = [R | RG] | [R | RG, ...MappedTuple<[C, R | RG]>] | ((R | RG)[] & { length: 0; }); export type RuleOrGroupArray = RuleGroupArray | RuleGroupICArray; export type DefaultRuleGroupICArray = RuleGroupICArray; export type DefaultRuleOrGroupArray = DefaultRuleGroupArray | DefaultRuleGroupICArray; export interface DefaultRuleGroupTypeIC extends RuleGroupTypeIC { rules: DefaultRuleGroupICArray; } export type DefaultRuleGroupTypeAny = DefaultRuleGroupType | DefaultRuleGroupTypeIC;