import { navigateToMiniProgram } from '@tarojs/taro';
import { TRouteInfo, TRecord } from '../type';

export type NavigateBackSync = (delta?: number | boolean, extraData?: TRecord) => Promise<TaroGeneral.CallbackResult>;
export interface INavigateToMiniProgramSyncOptions {
    appId?: string;
    path?: string;
    envVersion?: keyof navigateToMiniProgram.envVersion;
    extraData?: TRecord;
    shortLink?: string;
}
export type CommonRouteWithOptionsSync = (url: string, options?: TRecord) => Promise<TaroGeneral.CallbackResult>;
export type NavigateToSync = (urlOrMark: string | boolean, options?: TRecord | INavigateToMiniProgramSyncOptions) => Promise<TaroGeneral.CallbackResult>;
export interface ResultMethods {
    switchTab: CommonRouteWithOptionsSync;
    relaunch: CommonRouteWithOptionsSync;
    redirectTo: CommonRouteWithOptionsSync;
    navigateTo: NavigateToSync;
    navigateBack: NavigateBackSync;
}
export type Result = [TRouteInfo, ResultMethods];
declare function useRouter(): Result;
export default useRouter;
