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