import { Observable } from 'rxjs';
import { Draft } from 'immer';
import { EffectAction } from '../types';
export * from './action-related';
interface DecoratorReturnType<V> {
    (target: any, propertyKey: string, descriptor: {
        value?: V;
    }): PropertyDescriptor;
}
export declare const ImmerReducer: <S = any>() => DecoratorReturnType<(state: Draft<S>, params: any) => undefined | void>;
export declare const Reducer: <S = any>() => DecoratorReturnType<(state: S, params: any) => S>;
export declare const Effect: <A = any, S = any>() => DecoratorReturnType<(action: Observable<A>, state$: Observable<S>) => Observable<EffectAction>>;
export declare const DefineAction: () => any;
