export declare type Callback = (err?: Error, data?: TData) => void; export declare type Partial = { [P in keyof T]?: T[P]; }; export declare class DataProvider { widget: Leaf.Widget; fetcher: (option: TRequestOption, callback: Callback) => void; constructor(option: { widget: Leaf.Widget; fetcher: (option: TRequestOption, callback: Callback) => void; }); events: Leaf.EventEmitter<{ startLoading: any; endLoading: any; update: any; error: Error; }>; data: TData; refresh(option?: Partial): this; map(dataMap: { [K in keyof TVM]: keyof TData | ((TData) => any); }): this; fill(data: TData): void; private dataMap; } export declare type Constructor = { new (...args: any[]): T; }; export declare class ListDataProvider { list: Leaf.List; fetcher: (option: TRequestOption, callback: Callback) => void; Item: Constructor; constructor(option: { list: Leaf.List; fetcher: (option: TRequestOption, callback: Callback) => void; Item: Constructor; }); events: Leaf.EventEmitter<{ startLoading: any; endLoading: any; update: any; error: Error; }>; refresh(option?: Partial): void; transform(transformer: (data: TData) => any): void; private transformer; map(dataMap: { [K in keyof TVM]: keyof TData | ((TData) => any); }): void; datas: TData[]; fill(datas: TData[]): void; private dataMap; } export interface DataProviderLike { events: Leaf.EventEmitter<{ update; error; startLoading; endLoading; }>; refresh(): any; } export declare class DataBehavior { constructor(...providers: (DataProvider | ListDataProvider | any)[]); providers: DataProviderLike[]; attach(rp: DataProviderLike): void; refresh(): void; render(todo?: Function): this; loading(handler: (percentage: number) => void): this; error(todo: (err) => void): any; error(err: Error): any; private renderHandler; private loadingHandler; private errorHandler; private updateDebounceTimer; private update(); private panic(error); private loadingCounter; private addLoading(); private removeLoading(); loadingDebounce: number; private loadingDebounceTimer; private withLoading(); }