import { type BlockerFacade } from '../Blocker'; import { type EventDispatcher } from '../helpers'; import { type LogLevel } from '../Logger'; import { type Router } from '../Router'; import { type Location } from './location'; import { type MatchPath } from './matchPath'; import { type NavigateOptions } from './navigate'; import { type SyncStateSubscriber } from './navigationPhase'; import { type RawSearchParams } from './searchParams'; import { type SubscribeRouteChange } from './subscribeRoute'; export interface IRouterProvider { /** * Начальное состояние location. Необходим для того, чтобы не было перерендеров при инициализации приложения для react-router */ initialLocation: Location; blockerFacade: BlockerFacade; syncStateEventEmitter: EventDispatcher; matchPath: MatchPath; navigate: (path: string | Location, params: Omit & { searchParams?: RawSearchParams; }) => void; navigateAsync: (path: string | Location, params: Omit & { searchParams?: RawSearchParams; }) => PromiseLike; setSearchParams: (params: RawSearchParams, options?: { /** * Если false, то будут сохранены в истории браузера * @default true */ replace?: boolean; }) => void; back: Router<{}>['back']; reload: Router<{}>['reload']; setLogLevel: (logLevel: LogLevel) => void; /** * Подписка на событие начала смены маршрута */ subscribeRouteChangeStart: SubscribeRouteChange; /** * Подписка на событие конца смены маршрута */ subscribeRouteChangeEnd: SubscribeRouteChange; /** * Флаг, показывающий, инициализирован ли провайдер */ isInit: boolean; /** * Подписка на событие инициализации провайдера */ subscribeInitialize: (callback: () => void) => void; /** * Инициализирует MobX Router до старта навигации. * * Получает baseName из опций Router, чтобы учитывать его при вычислении начального location и навигации. */ triggerInitMobxRouter: (baseName?: string) => void; }