/**
 * Creates a Transformer
 * @template T,U
 * @param {TransformFunction<T,U>} transform - Transformer function
 * @param {TransformerMeta} meta - Transformer meta
 * @param {object} [config] - Transformer config
 * @returns {Transformer<T,U>}
 */
export function createTransformer<T, U>(transform: (opts?: object) => import("rxjs/internal/types").OperatorFunction<T, U>, meta: TransformerMeta, config?: object): Transformer<T, U>;
export type Formatters = "table" | "json" | "csv";
export type TransformerField = {
    label: string;
    value: string | ((arg0: any) => string);
    color?: string | ((arg0: any) => string);
};
export type Report = import("../../diff/node_modules/@report-toolkit/common/src/report").Report;
export type TransformerMeta = {
    id: string;
    description?: string;
    input?: string[];
    output: string;
    alias?: string[];
    defaults?: any;
};
/**
 * <T,U>
 */
export type OperatorFunction<T, U> = import("rxjs/internal/types").OperatorFunction<T, U>;
export type TransformFunction<T, U> = (opts?: object) => import("rxjs/internal/types").OperatorFunction<T, U>;
/**
 * Represents a Transformer having a transform() function and
 * metadata.
 * @template T,U
 */
export class Transformer<T, U> {
    /**
     * Creates a Transformer
     * @template T,U
     * @param {TransformFunction<T,U>} transform - Transformer function
     * @param {TransformerMeta} meta - Transformer meta
     * @param {object} [config] - Transformer config
     * @returns {Transformer<T,U>}
     */
    static create<T_2, U_2>(transform: (opts?: object) => import("rxjs/internal/types").OperatorFunction<T_2, U_2>, meta: TransformerMeta, config?: object): Transformer<T_2, U_2>;
    /**
     * Sets defaults and instance props
     * @param {TransformFunction<T,U>} transform
     * @param {TransformerMeta} meta - Transformer metdata
     * @param {object} [config] - Transformer config
     */
    constructor(transform: (opts?: object) => import("rxjs/internal/types").OperatorFunction<T, U>, meta: TransformerMeta, config?: object);
    _meta: any;
    _transform: (opts?: object) => import("rxjs/internal/types").OperatorFunction<T, U>;
    get id(): any;
    get input(): any;
    get output(): any;
    get defaults(): any;
    /**
     * Pipe one Transformer to another
     * @param {Transformer<any,any>} transformer
     * @returns {Transformer<any,any>}
     */
    pipe(transformer: Transformer<any, any>): Transformer<any, any>;
    transform(): import("rxjs/internal/types").OperatorFunction<T, U>;
    /**
     *
     * @param {Transformer<any,any>} transformer
     * @returns {Transformer<any,any>}
     */
    pipeFrom(transformer: Transformer<any, any>): Transformer<any, any>;
    _source: Transformer<any, any>;
    /**
     * Returns `true` if this Transformer can pipe to another
     * @param {Transformer<any,any>} transformer - Transformer to compare
     */
    canPipeTo(transformer: Transformer<any, any>): import("lodash/fp").LodashIncludes1x2<any>;
    canBeginWith(type: any): import("lodash/fp").LodashIncludes1x2<any>;
    canEndWith(type: any): boolean;
}
export namespace Transformer {
    export const normalizeFields: (...args: any[]) => any;
}
