import type { IStorage, Selectors } from '../../core'; import type { Effect } from '../../reactive'; import { Dispatcher, Effects } from '../../reactive'; import type { Synapse, SyncSynapseModule } from './synapse.types'; import type { DependencyInput } from './types'; export interface SyncEffectsContext, TDispatcher, TSelectors> { storage: IStorage; dispatcher: TDispatcher; selectors: TSelectors; deps: ReadonlyArray<{ storage: IStorage; }>; } type EffectsInput = TEffects | Array | undefined; export interface SyncSynapseConfig, TDispatcher extends Dispatcher | undefined = undefined, TSelectors extends Selectors | undefined = undefined, TEffects extends Effects, any> | undefined = undefined> { storage: () => IStorage; dispatcher?: (storage: IStorage) => TDispatcher; selectors?: (storage: IStorage) => TSelectors; dependencies?: DependencyInput[]; dependencyTimeout?: number; externalDispatchers?: Record> | ((ctx: SyncEffectsContext) => Record>); effects?: (ctx: SyncEffectsContext) => EffectsInput | Promise>; postConstruct?: (synapse: Synapse) => void; } /** * Ленивый handle C-формы: конструкция main синхронна и мемоизирована (строится при первом обращении * к геттеру/`ready()`), эффекты стартуют отдельно в `ready()` после `waitForDependencies`. Расцеп даёт * синхронный `handle.selectors`/`.storage`/`.state$` — основа cross-store DI. */ export declare function createSyncSynapseModule, TDispatcher extends Dispatcher | undefined, TSelectors extends Selectors | undefined>(config: SyncSynapseConfig): SyncSynapseModule; export {};