import { type LogLevel } from '../../Logger'; import type { BlockerFunction, IBlocker } from '../../types'; export type BlockerManagerInitOptions = { shouldBlock: BlockerFunction; id: number; onActivate: VoidFunction; onDeactivate: VoidFunction; logLevel: LogLevel; }; type InitBlockerManager = { proceed: VoidFunction; reset: VoidFunction; }; export declare class BlockerManager implements IBlocker { /** * Состояние блокировки навигации. * true — переход заблокирован, false — разрешён. * @example * ```ts * const blocker = router.createBlocker(nextLocation => nextLocation.pathname === '/main'); * * router.navigate('/main'); // вызовет блокировку * blocker.isBlocked(); // true * ``` */ isBlocked: boolean; readonly id: number; /** * Внешняя функция блокировки */ private readonly _shouldBlock; private onActivate; private onDeactivate; private resetFunction; private proceedFunction; private logger; constructor({ shouldBlock, id, onActivate, onDeactivate, logLevel, }: BlockerManagerInitOptions); get blocker(): IBlocker; activate: () => void; /** * После вызова метода `destroy` объект блокера больше не используется и не влияет на состояние навигации. * @example * ```ts * blocker.destroy(); * ``` */ destroy: () => void; init: ({ reset, proceed }: InitBlockerManager) => void; shouldBlock: BlockerFunction; /** * Снимает блокировку продолжая навигацию. * @example * ```ts * blocker.proceed(); // снимает блокировку и продолжает переход * ``` */ proceed: () => void; /** * Сбрасывает блокировку, не продолжая навигацию. * @example * ```ts * blocker.reset(); // снимает блокировку, не продолжая переход * ``` */ reset: () => void; } export {};