import { Curry10 , Curry2 , Curry3 , Curry4 , Curry5 , Curry6 , Curry7 , Curry8 , Curry9 , } from '@typed/functions' ; export type InvokerFn = { < O , R > ( arity , method ) : ( obj : O ) => R ; < O , A , R > ( arity , method ) : Curry2 < A , O , R > ; < O , A , B , R > ( arity , method ) : Curry3 < A , B , O , R > ; < O , A , B , C , R > ( arity , method ) : Curry4 < A , B , C , O , R > ; < O , A , B , C , D , R > ( arity , method ) : Curry5 < A , B , C , D , O , R > ; < O , A , B , C , D , E , R > ( arity , method ) : Curry6 < A , B , C , D , E , O , R > ; < O , A , B , C , D , E , F , R > ( arity , method ) : Curry7 < A , B , C , D , E , F , O , R > ; < O , A , B , C , D , E , F , G , R > ( arity , method ) : Curry8 < A , B , C , D , E , F , G , O , R > ; < O , A , B , C , D , E , F , G , H , R > ( arity , method ) : Curry9 < A , B , C , D , E , F , G , H , O , R > ; < O , A , B , C , D , E , F , G , H , I , R > ( arity , method ) : Curry10 < A , B , C , D , E , F , G , H , I , O , R > ; < Method extends string > ( arity , method ) : < R > ( obj : { [ K in Method ] : ( ) => R ; } ) => R ; < Method extends string > ( arity , method ) : InvokerFnArity1 < Method > ; < Method extends string > ( arity , method ) : InvokerFnArity2 < Method > ; < Method extends string > ( arity , method ) : InvokerFnArity3 < Method > ; } ; export type InvokerFnArity1 < Method extends string > = { < A , R > ( value , obj ) : R ; < A > ( value ) : < R > ( obj : { [ K in Method ] : ( value : A ) => R ; } ) => R ; < A , R > ( value ) : ( obj : { [ K in Method ] : ( value : A ) => R ; } ) => R ; } ; export type InvokerFnArity2 < Method extends string > = { < A , B , R > ( a , b , obj ) : R ; < A , B , R > ( a , b ) : ( obj : { [ K in Method ] : ( a : A , b : B ) => R ; } ) => R ; < A , B > ( a , b ) : < R > ( obj : { [ K in Method ] : ( a : A , b : B ) => R ; } ) => R ; < A , B , R > ( a ) : ( b : B ) => ( obj : { [ K in Method ] : ( a : A , b : B ) => R ; } ) => R ; < A , B > ( a ) : ( b : B ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B ) => R ; } ) => R ; < A , B > ( a ) : < R > ( b : B , obj : { [ K in Method ] : ( a : A , b : B ) => R ; } ) => R ; < A > ( a ) : < B , R > ( b : B , obj : { [ K in Method ] : ( a : A , b : B ) => R ; } ) => R ; } ; export type InvokerFnArity3 < Method extends string > = { < A , B , C , R > ( a , b , c , obj ) : R ; < A , B , C , R > ( a , b , c ) : ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C > ( a , b , c ) : < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C , R > ( a , b ) : ( c : C ) => ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C > ( a , b ) : ( c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a , b ) : < C , R > ( c : C ) => ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a , b ) : < C > ( c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a , b ) : < C , R > ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C > ( a , b ) : < R > ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C , R > ( a , b ) : ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B > ( b : B ) => < C > ( c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B > ( b : B ) => < C , R > ( c : C ) => ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a ) : ( b : B ) => < C > ( c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C > ( a ) : ( b : B ) => ( c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C , R > ( a ) : ( b : B ) => ( c : C ) => ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B , C > ( b : B , c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C > ( a ) : ( b : B , c : C ) => < R > ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C , R > ( a ) : ( b : B , c : C ) => ( obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B > ( b : B ) => < C , R > ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B , C > ( b : B ) => < R > ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B , C , R > ( b : B ) => ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a ) : ( b : B ) => < C , R > ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a ) : < C > ( b : B ) => < R > ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B > ( a ) : < C , R > ( b : B ) => ( c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A , B , C , R > ( a ) : ( b : B , c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; < A > ( a ) : < B , C , R > ( b : B , c : C , obj : { [ K in Method ] : ( a : A , b : B , c : C ) => R ; } ) => R ; } ;