import type { ComposeLeft } from 'hotscript'; import type { ITransformerDTO, SerializableTransformer, Transformer, TypedTransformer } from './transformer.js'; import type { TransformerDTOs, TypeModifiers } from './types.js'; export declare class Pipe implements TypedTransformer, Parameters[0], ReturnType['encode']>, ComposeLeft>> { _typeModifier: ComposeLeft>; transformerId: 'pipe'; transformers: TRANSFORMERS; encode: (decoded: Parameters[0]) => ReturnType['encode']>; decode: (encoded: ReturnType['encode']>) => ReturnType; constructor(transformers: TRANSFORMERS); pipe['encode']>>>(transformer: TRANSFORMER): Piped<[...TRANSFORMERS, TRANSFORMER]>; } export declare class SerializablePipe extends Pipe implements SerializableTransformer, Parameters[0], ReturnType['encode']>, ComposeLeft>, PipeDTO>> { constructor(transformers: TRANSFORMERS); toJSON(): PipeDTO>; } export interface PipeDTO { transformerId: 'pipe'; transformers: TRANSFORMER_DTOS; } type LastTransformer = TRANSFORMERS extends [ infer TRANSFORMERS_HEAD, ...infer TRANSFORMERS_TAIL ] ? TRANSFORMERS_HEAD extends Transformer ? TRANSFORMERS_TAIL extends [Transformer, ...Transformer[]] ? LastTransformer : TRANSFORMERS_HEAD : never : TRANSFORMERS[0]; export type Piped = TRANSFORMERS extends SerializableTransformer[] ? SerializablePipe : Pipe; type Piper = (...transformers: TRANSFORMERS) => Piped; export declare const pipe: Piper; export {};