import { Type } from '@malagu/core'; export const PipeTransform = Symbol('PipeTransform'); export const PipeProvider = Symbol('PipeProvider'); export const PipeManager = Symbol('PipeManager'); export interface ArgumentMetadata { readonly argType?: Type; readonly data?: string; } export interface MethodMetadata { readonly target: Type; readonly method: string | symbol; } export interface PipeTransform { readonly priority: number; transform(value: T, metadata: ArgumentMetadata): R; } export interface PipeProvider { provide(): PipeTransform[]; } export interface PipeManager { apply(metadata: MethodMetadata, args: any[]): Promise; }