import { ActionFactoryActionType, ActionFactoryPayloadType, Store } from '@zedux/core';
import { Ecosystem } from './Ecosystem.js';
import { MaybeCleanup } from '../types/index.js';
import { pluginActions } from '../utils/plugin-actions.js';
declare type ValuesOf<Rec extends Record<any, any>> = Rec extends Record<any, infer T> ? T : never;
export declare type Mod = keyof typeof pluginActions;
export declare type ModAction = ActionFactoryActionType<ValuesOf<typeof pluginActions>>;
export declare type ModPayloadMap = {
    [K in Mod]: ActionFactoryPayloadType<(typeof pluginActions)[K]>;
};
export declare class ZeduxPlugin {
    /**
     * These actions should only be dispatched to an ecosystem's modBus
     * store, so they don't need prefixes
     */
    static actions: {
        ecosystemWiped: import("@zedux/core").ActionFactory<{
            ecosystem: Ecosystem<any>;
        }, "ecosystemWiped">;
        edgeCreated: import("@zedux/core").ActionFactory<{
            dependency: import("../types/atoms").AnyAtomInstance<"any"> | import("./Selectors").SelectorCache<any, any[]>;
            dependent: string | import("../types/atoms").AnyAtomInstance<"any"> | import("./Selectors").SelectorCache<any, any[]>;
            edge: import("../types/index").DependentEdge;
        }, "edgeCreated">;
        edgeRemoved: import("@zedux/core").ActionFactory<{
            dependency: import("../types/atoms").AnyAtomInstance<"any"> | import("./Selectors").SelectorCache<any, any[]>;
            dependent: string | import("../types/atoms").AnyAtomInstance<"any"> | import("./Selectors").SelectorCache<any, any[]>;
            edge: import("../types/index").DependentEdge;
        }, "edgeRemoved">;
        evaluationFinished: import("@zedux/core").ActionFactory<{
            node: import("../types/atoms").AnyAtomInstance<"any"> | import("./Selectors").SelectorCache<any, any[]>;
            time: number;
        }, "evaluationFinished">;
        instanceReused: import("@zedux/core").ActionFactory<{
            instance: import("../types/atoms").AnyAtomInstance<"any">;
            template: import("../types/atoms").AnyAtomTemplate<"any">;
        }, string>;
        stateChanged: import("@zedux/core").ActionFactory<{
            action?: import("@zedux/core").ActionChain<any, string> | undefined;
            cache?: import("./Selectors").SelectorCache<any, any[]> | undefined;
            instance?: import("../types/atoms").AnyAtomInstance<"any"> | undefined;
            newState: any;
            oldState: any;
            reasons: import("../types/index").EvaluationReason<any>[];
        }, "stateChanged">;
        statusChanged: import("@zedux/core").ActionFactory<{
            newStatus: import("../types/index").LifecycleStatus;
            node: import("../types/atoms").AnyAtomInstance<"any"> | import("./Selectors").SelectorCache<any, any[]>;
            oldStatus: import("../types/index").LifecycleStatus;
        }, "statusChanged">;
    };
    modStore: Store<Mod[]>;
    registerEcosystem: (ecosystem: Ecosystem) => MaybeCleanup;
    constructor({ initialMods, registerEcosystem, }?: {
        initialMods?: Mod[];
        registerEcosystem?: (ecosystem: Ecosystem) => MaybeCleanup;
    });
}
export {};
