///
import {Duplex} from 'node:stream';
import type {FilterOptions as CoreFilterOptions} from '../core/filters/filter.js';
import type parser from '../core/parser.js';
/**
* Filters subobjects from a token stream while preserving the original JSON shape.
*
* Node-flavored entry: the returned factory has both `filter.asStream(options)`
* (Node Duplex) and `filter.asWebStream(options)` (Web `{readable, writable}` pair) attached,
* plus `withParserAsStream` / `withParserAsWebStream` parser-included variants.
*
* @param options - Filter options including `acceptObjects`.
*/
declare function filter(options?: filter.FilterOptions): ReturnType;
declare namespace filter {
/** Options for `filter`. */
export type FilterOptions = CoreFilterOptions;
/** Creates a filter wrapped as a Node Duplex stream. */
export function asStream(options?: FilterOptions): Duplex;
/** Creates a filter wrapped as a Web `TransformStream`-shaped pair. */
export function asWebStream(options?: FilterOptions): {readable: ReadableStream; writable: WritableStream};
/** Creates a `parser() + filter()` pipeline as a flushable function. */
export function withParser(options?: FilterOptions & parser.ParserOptions): ReturnType;
/** Creates a `parser() + filter()` pipeline as a Node Duplex stream. */
export function withParserAsStream(options?: FilterOptions & parser.ParserOptions): Duplex;
/** Creates a `parser() + filter()` pipeline as a Web `TransformStream`-shaped pair. */
export function withParserAsWebStream(options?: FilterOptions & parser.ParserOptions): {readable: ReadableStream; writable: WritableStream};
/** Self-reference for `filter.filter === filter`. */
export const filter: typeof import('./filter.js').default;
}
type FilterOptions = filter.FilterOptions;
export default filter;
export {filter};
export type {FilterOptions};