import { RuntimeCtx } from '../ctx.js';
import { Element } from '../element.js';
import { Action } from './action.js';
import { Module } from './module.js';
import { Pipeline } from './pipeline.js';
import { Unit } from './unit.js';
export interface PipeClass extends Module {
    new ($parent: Pipeline): Pipe;
}
export declare abstract class Pipe extends Unit<Pipeline> {
    static $icon: string;
    id: string;
    label: string;
    notes: string;
    enabled: boolean;
    abstract apply(list: Element[], ctx: RuntimeCtx): Promise<Element[]>;
    get $entityType(): string;
    get type(): string;
    get $class(): PipeClass;
    get $index(): number;
    get $key(): string;
    get $action(): Action;
    init(spec?: any): void;
    getDepth(): number;
    getPreviousPipe(): Pipe | null;
    getNextPipe(): Pipe | null;
    getParentPipe(): Pipe | null;
    collectPipelines(): IterableIterator<Pipeline>;
    ancestorPipes(): IterableIterator<Pipe>;
    map(list: Element[], mapFn: MapFn): Promise<Element[]>;
}
export declare class UnresolvedPipe extends Pipe {
    static $type: string;
    static $hidden: boolean;
    $originalSpec: any;
    init(spec?: any): void;
    toJSON(): any;
    apply(): Promise<Element[]>;
}
type MapFn = (el: Element) => Promise<Element | Element[] | null> | Element | Element[] | null;
export {};
//# sourceMappingURL=pipe.d.ts.map