import type { AnyExecutionContext, ContextualizedTask } from '../../../../../framework-types/execution-context/ExecutionContext';
import type { AnyTask, NamedTask } from '../../../../../framework-types/task/Types';
import type { AnyArray, AnyRecord, Unsubscribe } from '../../../../Types';
import { ModifierIdentifier } from '../Symbols';
import type { StateAtom } from '../Types';
import type { ErrorCallback, TaskParameter } from './Types';
declare class UnsubscribedError extends Error {
    name: string;
    constructor();
}
declare function createStateAtom<Data extends AnyRecord | AnyArray, Modifiers extends {
    [modifierName: string]: (data: Data, ...payload: AnyArray) => boolean;
}>(initialValue: Data, modifiers: Modifiers): StateAtom<Data, Modifiers>;
export type StateEffect = typeof StateEffectFactory;
export declare const StateEffectFactory: import("../../../../../framework-types/effect/Types").EffectFactory<AnyExecutionContext, {
    state: {
        UnsubscribedError: typeof UnsubscribedError;
        create: typeof createStateAtom;
        subscribe: <Ctx extends AnyExecutionContext, Atom extends StateAtom, A extends NamedTask<AnyTask>>(context: Ctx, atom: TaskParameter<Atom, A>, task: ContextualizedTask<Ctx, A>, errorCallback?: ErrorCallback) => Unsubscribe;
        dispatch: <Modifier extends ((...parameters: AnyArray) => boolean) & {
            [ModifierIdentifier]: StateAtom;
        }>(modifier: Modifier, ...payload: Parameters<Modifier>) => void;
    };
}>;
export {};
