import { chain, Chainable } from '../util/Chainable'; import { Transformation } from './index'; export interface ITransformation { type: Name; params: Params; children: [Chainable]; } export const transformation = < Name extends Transformation['type'], Type extends Extract, Params extends Type['params'] >( type: Name, target: Chainable, params: Params ) => chain({ type, params, children: [target] } as Type);