/*******************************************************************************
 * Copyright (c) 2023-2026 Maxprograms.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse   License 1.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-v10.html
 *
 * Contributors:
 *     Maxprograms - initial API and implementation
 *******************************************************************************/
import { Readable } from "node:stream";
import { Catalog } from "./Catalog.js";
import { ContentHandler } from "./ContentHandler.js";
import { FileReader } from "./FileReader.js";
import { StreamReader } from "./StreamReader.js";
import { StringReader } from "./StringReader.js";
import { XMLAttribute } from "./XMLAttribute.js";
import { type AttributeDefault } from "./XMLSchemaParser.js";
export interface ParseSourceOptions {
    basePath?: string;
    pseudoFileName?: string;
    virtualPath?: string;
}
export interface StreamParseOptions extends ParseSourceOptions {
    encoding?: BufferEncoding;
}
export type ParserInputSource = FileReader | StringReader | StreamReader;
type SchemaAttributeDefault = AttributeDefault;
export declare class SAXParser {
    private static readonly SUPPORTED_ENCODINGS;
    private static readonly ENCODING_NAME_PATTERN;
    contentHandler: ContentHandler | undefined;
    reader: ParserInputSource | undefined;
    pointer: number;
    buffer: string;
    elementStack: number;
    elementNameStack: string[];
    childrenNames: Array<string[]>;
    characterRun: string;
    rootParsed: boolean;
    xmlVersion: string;
    currentFile: string | undefined;
    catalog: Catalog | undefined;
    validating: boolean;
    relaxNGDefaultAttributes: Map<string, Map<string, SchemaAttributeDefault>>;
    schemaDefaultAttributes: Map<string, Map<string, SchemaAttributeDefault>>;
    processedSchemaLocations: Set<string>;
    failedSchemaLocations: Set<string>;
    namespaceContextStack: Array<Map<string, string>>;
    processedNamespaces: Set<string>;
    failedNamespaces: Set<string>;
    isRelaxNG: boolean;
    static readonly DEFAULT_VIRTUAL_FILENAME: string;
    streamingMode: boolean;
    sourceEnded: boolean;
    documentStarted: boolean;
    documentEnded: boolean;
    inCDATASection: boolean;
    pendingCR: boolean;
    readingFromFile: boolean;
    internalSubsetApplied: boolean;
    xmlDeclarationParsed: boolean;
    leadingContentBeforeXmlDeclaration: boolean;
    schemaLoadingEnabled: boolean;
    constructor();
    setContentHandler(contentHandler: ContentHandler): void;
    setCatalog(catalog: Catalog): void;
    setValidating(validating: boolean): void;
    setSchemaLoadingEnabled(enabled: boolean): void;
    parseFile(path: string, encoding?: BufferEncoding): void;
    parseString(data: string, options?: ParseSourceOptions): void;
    parseStream(stream: Readable, options?: StreamParseOptions): Promise<void>;
    initializeParsing(reader: ParserInputSource, currentFilePath: string): void;
    processSynchronous(): void;
    processStreaming(finalizing: boolean): void;
    resolveVirtualPath(options?: ParseSourceOptions): string;
    tryReadMore(): boolean;
    private appendToBuffer;
    private flushPendingCR;
    ensureDocumentClosed(): void;
    ensureLookahead(minRemaining: number): void;
    readDocument(): void;
    parseEntityReference(): void;
    startElement(): void;
    endElement(): void;
    validateElement(name: string, namespace: string): void;
    getDefaultAttributes(elementName: string, attributes: Array<XMLAttribute>): Array<XMLAttribute>;
    private appendSchemaDefaultsForElement;
    private resolveSchemaAttributeQualifiedName;
    private findNamespacePrefix;
    private buildSchemaAttributeKey;
    private buildNamespaceContext;
    protected handleNamespaceDeclarations(attributes: Map<string, string>, namespaceContext: Map<string, string>, previousContext?: Map<string, string>): void;
    private propagateNamespaceToGrammar;
    private handleSchemaLocationAttributes;
    protected tryLoadSchemaForNamespace(namespaceUri: string): void;
    private processSchemaReference;
    protected loadSchemaDefaults(resolvedPath: string, identifier: string): boolean;
    private resolveSchemaLocation;
    resolveHttp(url: string): string | undefined;
    private mergeSchemaDefaults;
    private splitQualifiedName;
    protected getNamespaceUriForElement(elementName: string): string | undefined;
    cleanCharacterRun(): void;
    parseComment(): void;
    parseProcessingInstruction(): void;
    parseRelaxNG(href: string): void;
    private processInternalSubset;
    parseDoctype(): void;
    private processExternalSubset;
    private resolveExternalSubsetLocation;
    parsePublicDeclaration(): string[];
    parseSystemDeclaration(): string;
    parseXMLDeclaration(): void;
    lookingAt(text: string): boolean;
    private parseAttributePairs;
    parseAttributes(text: string): Map<string, string>;
    private validateEncodingValue;
    private normalizeDTDAttributes;
    private normalizeAttributeValue;
    private containsNumericCharReference;
    private decodeAttributeEntities;
    private expandEntityReplacement;
    startCDATA(): void;
    endCDATA(): void;
}
export {};
