/// <reference types="react" />
import * as React from 'react'
import { Handler, ErrorHandler, PushEvent } from './baseTypes'
import { Aperture } from './observable'
export interface State {
    replace?: boolean
    props: object
    renderEffect: boolean
    children: React.ReactNode | null
}
export interface Config<Props, Effect, Context = any> {
    handler?: Handler<Props, Effect, Context>
    errorHandler?: ErrorHandler<Props, Context>
    Context?: React.Context<Context>
    mergeProps?: boolean
    decorateProps?: boolean
}
export declare const withEffects: <
    Props,
    Effect,
    ChildProps = Props,
    Context = any
>(
    aperture: Aperture<Props, Effect, Context>,
    config?: Config<Props, Effect, Context>
) => (
    BaseComponent?: React.ComponentType<
        ChildProps & {
            pushEvent: PushEvent
        }
    >
) => React.ComponentClass<Props, any>
