declare class ContextEventHook {
    private context;
    after(callback: (ctx: any) => void): void;
    before(callback: (ctx: any) => void): this;
}
declare class ContextEventHandler {
    private groupContext;
    private setEvent;
    get WorkBook(): ContextEventHook;
    get Sheet(): ContextEventHook;
    get Row(): ContextEventHook;
    get Header(): ContextEventHook;
    get Footer(): ContextEventHook;
    get Error(): ContextEventHook;
}
declare abstract class HookProvider {
    abstract do(context: ContextEventHandler): void;
}
type EventHandlerType = {
    workBook: () => void;
    endWorkBook: () => void;
    sheet: (sheetName?: string) => void;
    endSheet: (sheetName?: string) => void;
    onRow: () => void;
    endRow: () => void;
    header: (sheetName?: string) => void;
    endHeader: (sheetName?: string) => void;
    footer: (sheetName?: string) => void;
    endFooter: (sheetName?: string) => void;
    /** Handle error. Return false to cancel import, otherhands return true */
    error: (error: Error) => boolean;
};
declare class EventHandler {
    private listEvents;
    onFile(func: EventHandlerType["workBook"]): void;
    endFile(func: EventHandlerType["endWorkBook"]): void;
    begin(func: EventHandlerType["sheet"]): void;
    end(func: EventHandlerType["endSheet"]): void;
    error(func: EventHandlerType["error"]): void;
    private buildHook;
}

export { ContextEventHandler, EventHandler, type EventHandlerType, HookProvider };
