import { Observable, Observer_Command_Type, Observer_Interface, Observer_Props, Observer_Type } from "../core/observer";
import { Data_Interface, IO_Observable_Reader_Interface, IO_Observable_Writer_Interface, IOable } from "./types";
export interface XLSX_Mapping_Item {
    sheet_name: string;
    source_property_name: string;
    target_poperty_name: string;
}
export interface XLSX_IO_ReadProps_Interface<T> extends IOable {
    path: string;
    simulate: boolean;
    worksheet: string;
    doSubfolders: boolean;
    limit: number;
    useCounter: boolean;
    json_template: T;
    commands?: Observer_Command_Type[];
    onPartialResult?: (value: T) => void;
}
export interface XLSX_IO_WriteProps_Interface<T> extends IOable {
    path: string;
    simulate: boolean;
    worksheet: string;
    exclude_columns: Array<string>;
    doSubfolders: boolean;
    limit: number;
    useCounter: boolean;
    json_template: T;
    commands?: Observer_Command_Type[];
    onPartialResult?: (value: T) => void;
}
export declare class XLSX_IO_Reader<D> implements IO_Observable_Reader_Interface<D>, Observable<D> {
    private observer_subject;
    private props;
    constructor(props: XLSX_IO_ReadProps_Interface<D>);
    add_observer(observer: Observer_Interface<D>, id: Observer_Type): void;
    notify_all(props: Observer_Props<D>): void;
    notify(props: Observer_Props<D>): void;
    read(): void;
}
export declare class XLSX_IO_Writer<D> implements IO_Observable_Writer_Interface<D>, Observable<D> {
    private observer_subject;
    private props;
    constructor(props: XLSX_IO_WriteProps_Interface<D>);
    add_observer(observer: Observer_Interface<D>, id: Observer_Type): void;
    notify_all(props: Observer_Props<D>): void;
    notify(props: Observer_Props<D>): void;
    write(dao: Data_Interface<D>): void;
}
