/**
 * Core `Promise`-based API for use by consumers.
 * @module @report-toolkit/core
 *
 */
/**
 */
/**
 * Returns the difference between two reports.
 *
 * Example:
 *
 * ```js
 * const {diff} = require('@report-toolkit/core');
 *
 * const report1 = process.report.getReport();
 * const report2 = process.report.getReport();
 * const results = await diff(report1, report2, {
 *   filterProperties: ['header', 'javascriptStack', 'nativeStack'],
 *   showSecretsUnsafe: false
 * });
 * results.forEach(({op, path, newValue, oldValue}) => {
 *   console.log(`[${op}] <${path}> ${oldValue} => ${newValue}`);
 * });
 *```
 * @param {import('@report-toolkit/common/src/report').ReportLike} report1 - First report to diff
 * @param {import('@report-toolkit/common/src/report').ReportLike} report2 - Second report to diff
 * @param {Partial<import('./observable').DiffOptions>} [opts] Options
 * @returns {Promise<import('./observable').DiffResult[]>} Array of results, one per difference
 */
export function diff(report1: import('@report-toolkit/common/src/report').ReportLike, report2: import('@report-toolkit/common/src/report').ReportLike, opts?: Partial<import('./observable').DiffOptions>): Promise<import('./observable').DiffResult[]>;
/**
 * Inspect one or more reports, running rules against each.  Resolves with an array of zero or more {@link @report-toolkit/inspector.message.Message|Messages}.
 *
 * Example:
 *
 * ```js
 * const {inspect} = require('@report-toolkit/core');
 *
 * const report = process.report.getReport();
 * const results = await inspect(report, {
 *   severity: 'info',
 *   sort: true,
 *   sortDirection: 'asc',
 *   sortField: 'header.dumpEventTimestamp',
 *   showSecretsUnsafe: false,
 *   ruleConfig: {
 *     'long-timeout': {
 *       timeout: '2s'
 *     }
 *   }
 * });
 * results.forEach(({message, filename}) => {
 *   console.log(`${filename}: ${message}`);
 * });
 ```
 * @param {import('@report-toolkit/common/src/report').ReportLike} reports - One or more reports
 * @param {Partial<import('./observable').InspectOptions>} [opts] - Options
 * @returns {Promise<import('@report-toolkit/inspector/src/message').Message[]>}
 */
export function inspect(reports: import('@report-toolkit/common/src/report').ReportLike, opts?: Partial<import('./observable').InspectOptions>): Promise<import('@report-toolkit/inspector/src/message').Message[]>;
/**
 * Resolves with a normalized config object from a raw config object.
 *
 * Example:
 *
 * ```js
 * const {loadConfig} = require('@report-toolkit/core');
 *
 * // or require('./path/to/.rtkrc.js')
 * const rawConfig = [
 *   'report-toolkit:recommended',
 *   {
 *     rules: {
 *       'long-timeout': {
 *         timeout: '2s'
 *       }
 *     }
 *   }
 * ];
 * // `normalizedConfig` contains contents of "recommended" settings,
 * // with our override of custom rule config
 * const normalizedConfig = await loadConfig(rawConfig);
 * ```
 * @param {object} config - Raw config object
 * @returns {Promise<import('./observable').Config>} A normalized config object
 */
export function loadConfig(config: object): Promise<import('./observable').Config>;
/**
 * Convert a plain object (usually parsed from a JSON report generated by See [process.report.writeReport](https://nodejs.org/api/process.html#process_process_report_writereport_filename_err)) to a {@link @report-toolkit/common.report.Report|Report} instance.
 *
 * Example:
 *
 * ```js
 * const {toReportFromObject} = require('@report-toolkit/core');
 *
 * const json = fs.readFileSync('./report-xxxxx.json');
 * // `Report` instance with secrets redacted
 * const report = await toReportFromObject(json, {
 *   showSecretsUnsafe: false
 * });
 * ```
 * @param {object} value - Raw report
 * @param {Partial<import('./observable').ToReportFromObjectOptions>} [opts]
 */
export function toReportFromObject(value: object, opts?: Partial<import('./observable').ToReportFromObjectOptions>): Promise<Readonly<import("@report-toolkit/common/src/report").Report>>;
/**
 * Register & enable a plugin.
 *
 * Example:
 *
 * ```js
 * const {use} = require('@report-toolkit/core');
 *
 * await use('some-plugin-in-node_modules');
 * await use('./relative/path/to/plugin.js');
 * ```
 * @param {string} pluginId - ID of plugin to register; a resolvable path to a module
 * @returns {Promise<import('./observable').RTKPlugin>}
 */
export function use(pluginId: string): Promise<import('./observable').RTKPlugin>;
/**
 * Run `source` through chain of one or more transformers.  Performs validation before piping.
 * If the final transformer does not output the desired `endType`, the `defaultTransformer` will be appended to the chain; otherwise it is ignored.
 *
 * Example:
 *
 * ```js
 * const {transform, toReportFromObject} = require('@report-toolkit/core');
 *
 * // by default, `report` has its secrets redacted
 * const report = await toReportFromObject(process.report.getReport());
 * const [header, ...data] = await transform(['filter', 'csv'], report, {
 *   transformers: {
 *     filter: {include: 'header'},
 *     csv: {flatten: true}
 *   }
 * });
 * ```
 * @param {string | string[]} transformerIds - Unique transformer identifier(s), in order.  Can be one of `csv`, `filter`, `json`, `newline`,  `redact`, `stack-hash`, `table`.
 * @param {object} source - Source, typically one or more {@link @report-toolkit/common.report.Report|Reports}.
 * @param {Partial<import('./observable').Config>} config - As returned by {@link loadConfig}; can contain transformer-specific settings.
 * @param {Partial<import('./observable').TransformOptions>} options - Optional constraints & default behavior; overrides settings in `config`, if present.
 */
export function transform(transformerIds: string | string[], source: object, config?: Partial<import('./observable').Config>, options?: Partial<import('./observable').TransformOptions>): Promise<any[]>;
import * as observable from "./observable.js";
import { constants } from "@report-toolkit/common/src";
export { observable, constants };
export { registeredRuleDefinitions, compatibleTransformers, builtinTransformerIds, isPluginRegistered, deregisterPlugins } from "./observable.js";
