import type { Nxtpression } from './nxtpression.ts';
import type { RssOptions } from './rss.ts';
export interface ReportXmlOptions {
    options?: XMLBuilderOptions;
    formatterOptions?: XMLWriterOptions;
    /**
     * Should resolve to a JS object representing the root XML schema, as readable by xmlbuilder2.
     */
    rootSchema?: Nxtpression<ExpandObject, {
        publishId: string;
        items: unknown[];
    }>;
    /**
     * Should resolve to a JS object representing the XML schema for each item, as readable by xmlbuilder2.
     * Required for output to be generated.
     */
    itemSchema?: Nxtpression<ExpandObject>;
}
export interface ReportRssOptions extends Partial<RssOptions> {
    namespaces?: Record<string, string>;
}
export declare const isXmlExpandable: (input: unknown) => input is ExpandObject;
export type ExpandObject = {
    [key: string]: any;
} | any[];
/**
 * @link https://oozcitak.github.io/xmlbuilder2/builder-functions.html#builder-options
 */
export interface XMLBuilderOptions {
    [key: string]: unknown;
    version?: "1.0";
    encoding?: string | undefined;
    standalone?: boolean | undefined;
    keepNullNodes?: boolean;
    keepNullAttributes?: boolean;
    ignoreConverters?: boolean;
    skipWhitespaceOnlyText?: boolean;
    convert?: ConvertOptions;
    defaultNamespace?: {
        ele?: undefined | null | string;
        att?: undefined | null | string;
    };
    namespaceAlias?: {
        [key: string]: string | null | undefined;
    };
    invalidCharReplacement?: string | ((char: string, offset: number, str: string) => string) | undefined;
    parser?: any;
}
/**
 * @link https://oozcitak.github.io/xmlbuilder2/builder-functions.html#settings-related-to-value-conversions
 */
interface ConvertOptions {
    att?: string;
    ins?: string;
    text?: string;
    cdata?: string;
    comment?: string;
}
/**
 * @link https://oozcitak.github.io/xmlbuilder2/serialization.html#serialization-settings
 */
interface XMLWriterOptions {
    wellFormed?: boolean;
    format?: "xml";
    headless?: boolean;
    prettyPrint?: boolean;
    indent?: string;
    newline?: string;
    offset?: number;
    width?: number;
    allowEmptyTags?: boolean;
    indentTextOnlyNodes?: boolean;
    spaceBeforeSlash?: boolean;
}
export interface ReportProgress {
    token: string;
    count?: number;
    progress?: number;
    complete?: boolean;
    hits?: number;
    total?: number;
    error?: string | null;
}
export declare const isReportProgress: (input: unknown) => input is ReportProgress;
export {};
