/**
 * A subscription is a way of telling an EffectManager, "Hey, let me know if anything
 * interesting happens over there!" So if you want to listen for messages on a web
 * socket, you would tell an EffectManager to create a subscription. If you want to get clock
 * ticks, you would tell an EffectManager to subscribe to that. The cool thing here is that
 * this means an *EffectManager* manages all the details of subscriptions instead of *you*.
 * So if a web socket goes down, *you* do not need to manually reconnect with an
 * exponential backoff strategy, the *EffectManager* does this all for you behind the scenes!
 * Every `Sub` specifies (1) which effects you need access to and (2) the type of
 * messages that will come back into your application.
 * @category Subscriptions
 */
export declare type Sub<Action, Home = string> = {
    readonly home: Home;
    readonly type: string;
    /**
     * This field is only needed in order to preserve the generic type paramter Action
     * @ignore
     */
    readonly __$$dummy_tag?: Action;
};
/**
 * When you need to subscribe to multiple things, you can create a `batch` of
 * subscriptions.
 * @category Subscriptions
 */
export declare function batch<A>(cmds: ReadonlyArray<Sub<A> | undefined>): Sub<A>;
/**
 * If you are using a fractal approach where a Sub can come from
 * a child's subscription function, you need to map the Sub in order for it
 * to produce an action that can be routed back to the child.
 * @category Fancy Stuff
 */
export declare function map<A1, A2>(actionMapper: (a1: A1) => A2, cmd: Sub<A1> | undefined): Sub<A2> | undefined;
//# sourceMappingURL=sub.d.ts.map