/// <reference types="node" />
import { Duplex, DuplexOptions } from "stream";
import { SAXStream } from "sax";
export declare class JmdictTransform extends Duplex implements AsyncIterable<TransformOutputData> {
    parser: SAXStream;
    entities: Map<string, string>;
    private initialChunk;
    groupedEntities: ReadonlyMap<string, readonly {
        name: string;
        value: string;
    }[]>;
    private hasPassedOpeningTag;
    inputStack: InputStartXml[];
    outputStack: OutputNode[];
    constructor(opts?: DuplexOptions);
    _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
    _read(): void;
    [Symbol.asyncIterator](): AsyncIterableIterator<TransformOutputData>;
}
export interface EntityData {
    type: "entity";
    data: {
        name: string;
        value: string;
    };
}
export interface MdateData {
    type: "mdate";
    data: string;
}
export interface NodeData {
    type: "node";
    data: OutputNode;
}
export interface CommentData {
    type: "comment";
    data: string;
}
export interface GroupedEntitiesData {
    type: "groupedEntities";
    data: JmdictTransform["groupedEntities"];
}
export declare type TransformOutputData = EntityData | MdateData | NodeData | CommentData | GroupedEntitiesData;
interface InputStartXml {
    type: "start";
    name: string;
    attrs: AttributeMap;
}
interface AttributeMap {
    [key: string]: string;
}
export interface OutputNode {
    [key: string]: (string | OutputNode)[] | string;
}
export {};
//# sourceMappingURL=index.d.ts.map