import { type IStorageBase } from '../core';
/** Минимальная форма стора для awaiter'а: только storage (готовность читаем из storage.initStatus). */
export interface AwaitableSynapse {
    storage: IStorageBase<any>;
}
export interface SynapseAwaiter<TStore extends AwaitableSynapse> {
    /**
     * Возвращает Promise, который резолвится когда Synapse готов
     */
    waitForReady(): Promise<TStore>;
    /**
     * Проверяет, готов ли Synapse прямо сейчас (синхронно)
     */
    isReady(): boolean;
    /**
     * Получает store если он готов, иначе undefined
     */
    getStoreIfReady(): TStore | undefined;
    /**
     * Подписывается на событие готовности
     * @param callback Функция, вызываемая когда store становится готов
     * @returns Функция отписки
     */
    onReady(callback: (store: TStore) => void): VoidFunction;
    /**
     * Подписывается на ошибки инициализации
     * @param callback Функция, вызываемая при ошибке
     * @returns Функция отписки
     */
    onError(callback: (error: Error) => void): VoidFunction;
    /**
     * Получает текущий статус
     */
    getStatus(): 'pending' | 'ready' | 'error';
    /**
     * Получает ошибку если есть
     */
    getError(): Error | null;
    /**
     * Очищает ресурсы
     */
    destroy(): void;
}
/**
 * Создает фреймворк-независимую утилиту для ожидания готовности Synapse.
 * Принимает `SynapseModule`-handle (PromiseLike), Promise готового synapse либо сам
 * готовый synapse. Работает в любом JS окружении: Node.js, браузер, React Native.
 */
export declare function createSynapseAwaiter<TStore extends AwaitableSynapse>(synapseStorePromise: PromiseLike<TStore> | TStore): SynapseAwaiter<TStore>;
