import { modifyInterface } from '../..'; import { InternalAdd } from '../../numbers/math/app/addition'; import { forceExtract } from '../app'; import { $ArgumentTypes, $BINDED_ARGS } from './domain'; export type Call<$Generic, Args> = $BINDED_ARGS extends keyof $Generic ? forceExtract as InternalAdd>]: Args[K]; }>, 'return'> : forceExtract<(modifyInterface<$Generic, { [K in Exclude]: Args[K]; }>), 'return'>; type cut = forceExtract extends forceExtract ? args : args extends [infer _, ...infer Rest] ? cut : []; export type Bind<$Generic, BindedArgs> = $Generic & { [$BINDED_ARGS]: BindedArgs; [$ArgumentTypes]: cut>; } & { [K in Exclude]: BindedArgs[K]; }; export {};