import { VisitorExtension } from "./invocation";
import { SuperNode } from "./transformer";
import { Class } from './types';
interface ResultMessages {
    path: string;
    messages: string[];
}
interface Result<T = any> {
    value: T;
    issues?: ResultMessages[];
}
interface ParentInfo {
    value: any;
    type: Class;
    decorators: any[];
}
interface VisitorOption {
    path: string;
    extension: VisitorExtension[];
    decorators: any[];
    guessArrayElement: boolean;
    parent?: ParentInfo;
}
declare namespace Result {
    function create(value: any): Result;
    function error(value: any, path: string, message: string | string[]): Result;
}
declare function pipeline(value: any, ast: SuperNode, opt: VisitorOption): Result;
export { pipeline, ResultMessages, Result, ParentInfo };
