import { AnyExecutor , DefaultExecutor , MatchExecutor , } from '../match-execution/types' ; type CmpOp = '||' | '&&' | '==' ; type If < LHS , Cmp extends CmpOp , RHS > = Cmp extends '||' ? Or < LHS , RHS > : Cmp extends '&&' ? And < LHS , RHS > : Cmp extends '==' ? Eq < LHS , RHS > : unknown ; type Extends < A , B > = A extends B ? true : false ; type Eq < A , B > = And < Extends < A , B > , Extends < B , A > > ; type Or < A , B > = A extends true ? true : B extends true ? true : false ; type And < A , B > = A extends true ? B extends true ? true : false : false ; description internal export interface NonExhaustiveStrikeSigs { < TIn , Arm0In extends TIn , Arm0Out > ( val , arm ) : TIn | Arm0Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out > ( val , arm0 , arm1 ) : TIn | Arm0Out | Arm1Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out > ( val , arm0 , arm1 , arm2 ) : TIn | Arm0Out | Arm1Out | Arm2Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out > ( val , arm0 , arm1 , arm2 , arm3 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out , Arm4In extends TIn , Arm4Out > ( val , arm0 , arm1 , arm2 , arm3 , arm4 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out , Arm4In extends TIn , Arm4Out , Arm5In extends TIn , Arm5Out > ( val , arm0 , arm1 , arm2 , arm3 , arm4 , arm5 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out | Arm5Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out , Arm4In extends TIn , Arm4Out , Arm5In extends TIn , Arm5Out , Arm6In extends TIn , Arm6Out > ( val , arm0 , arm1 , arm2 , arm3 , arm4 , arm5 , arm6 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out | Arm5Out | Arm6Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out , Arm4In extends TIn , Arm4Out , Arm5In extends TIn , Arm5Out , Arm6In extends TIn , Arm6Out , Arm7In extends TIn , Arm7Out > ( val , arm0 , arm1 , arm2 , arm3 , arm4 , arm5 , arm6 , arm7 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out | Arm5Out | Arm6Out | Arm7Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out , Arm4In extends TIn , Arm4Out , Arm5In extends TIn , Arm5Out , Arm6In extends TIn , Arm6Out , Arm7In extends TIn , Arm7Out , Arm8In extends TIn , Arm8Out , ArmOuts = Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out | Arm5Out | Arm6Out | Arm7Out | Arm8Out > ( val , arm0 , arm1 , arm2 , arm3 , arm4 , arm5 , arm6 , arm7 , arm8 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out | Arm5Out | Arm6Out | Arm7Out | Arm8Out ; < TIn , Arm0In extends TIn , Arm0Out , Arm1In extends TIn , Arm1Out , Arm2In extends TIn , Arm2Out , Arm3In extends TIn , Arm3Out , Arm4In extends TIn , Arm4Out , Arm5In extends TIn , Arm5Out , Arm6In extends TIn , Arm6Out , Arm7In extends TIn , Arm7Out , Arm8In extends TIn , Arm8Out , Arm9In extends TIn , Arm9Out > ( val , arm0 , arm1 , arm2 , arm3 , arm4 , arm5 , arm6 , arm7 , arm8 , arm9 ) : TIn | Arm0Out | Arm1Out | Arm2Out | Arm3Out | Arm4Out | Arm5Out | Arm6Out | Arm7Out | Arm8Out | Arm9Out ; } description internal export interface ExhaustiveStrikeSigs { < TIn , TOut_0 , TOut_1 > ( val , arm_0 , otherwise ) : TOut_0 | TOut_1 ; < TIn , TOut_0 , TOut_1 , TOut_2 > ( val , arm_0 , arm_1 , otherwise ) : TOut_0 | TOut_1 | TOut_2 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 > ( val , arm_0 , arm_1 , arm_2 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 , TOut_5 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , arm_4 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 | TOut_5 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 , TOut_5 , TOut_6 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , arm_4 , arm_5 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 | TOut_5 | TOut_6 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 , TOut_5 , TOut_6 , TOut_7 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , arm_4 , arm_5 , arm_6 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 | TOut_5 | TOut_6 | TOut_7 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 , TOut_5 , TOut_6 , TOut_7 , TOut_8 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , arm_4 , arm_5 , arm_6 , arm_7 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 | TOut_5 | TOut_6 | TOut_7 | TOut_8 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 , TOut_5 , TOut_6 , TOut_7 , TOut_8 , TOut_9 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , arm_4 , arm_5 , arm_6 , arm_7 , arm_8 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 | TOut_5 | TOut_6 | TOut_7 | TOut_8 | TOut_9 ; < TIn , TOut_0 , TOut_1 , TOut_2 , TOut_3 , TOut_4 , TOut_5 , TOut_6 , TOut_7 , TOut_8 , TOut_9 , TOut_10 > ( val , arm_0 , arm_1 , arm_2 , arm_3 , arm_4 , arm_5 , arm_6 , arm_7 , arm_8 , arm_9 , otherwise ) : TOut_0 | TOut_1 | TOut_2 | TOut_3 | TOut_4 | TOut_5 | TOut_6 | TOut_7 | TOut_8 | TOut_9 | TOut_10 ; } description internal export type StrikeRest = < T , R > ( v : T , ... mat : Array < AnyExecutor < T , R > > ) => T | R ;