import * as React from 'react'; export declare type removeCb = () => void; export declare type MediumCallback = (data: T) => any; export declare type MiddlewareCallback = (data: T, assigned: boolean) => T; export declare type SidePush = { length?: number; push(data: T): void; filter(cb: (x: T) => boolean): SidePush; }; /** * An object describing side medium */ export interface SideMedium { /** * Pushes effect to the medium * @param effect any information for real handler */ useMedium(effect: T): removeCb; /** * Assigns effect handler to the medium * @param {Function(effect: T)} handler effect handler */ assignMedium(handler: MediumCallback): void; /** * Assigns a synchronous effect handler to the medium, which would be executed right on call * @param {Function(effect: T)} handler effect handler */ assignSyncMedium(handler: MediumCallback): void; /** * reads the data stored in the medium */ read(): T | undefined; options?: Record; } export declare type DefaultOrNot = { default: T; } | T; export declare type Importer = () => Promise>>; export declare type SideCarMedium = SideMedium>; export declare type SideCarHOC = { readonly sideCar: SideCarMedium; }; export declare type SideCarComponent = React.FunctionComponent>; export declare type SideCarMediumOptions = { async?: boolean; ssr?: boolean; };