export interface MagicController { get(key: string): Promise; set(key: string, val: any): Promise; } export interface MagicConfig { modules: { [key: string]: { data: { [key: string]: any; }; controller: MagicController; }; }; spinnerTimeout?: number; pendingOnPush?: boolean; } export declare class MagicValue { private config; private controller; private keyName; val: any; pending: boolean; spinning: boolean; error: any; private runningTimeout; constructor(config: MagicConfig, controller: MagicController, keyName: string, val?: any); startTask(): void; finishTask(): void; pull(): Promise; push(): Promise; } export interface MagicModule { [dataItemName: string]: MagicValue; } export declare class Magic { [moduleName: string]: MagicModule; constructor(config: MagicConfig); }