import React from 'react';
import { AnchorProgressProviderProps, AnchorProgressProps } from '@bprogress/react';
export { Bar, BarProps, Indeterminate, IndeterminateProps, Peg, PegProps, Progress, ProgressComponentProps, ProgressContextValue, ProgressProps, Spinner, SpinnerIcon, SpinnerIconProps, SpinnerPosition, SpinnerProps, useProgress } from '@bprogress/react';
import { NavigateFunction, Path } from '@remix-run/react';
export { BProgressOptions } from '@bprogress/core';

interface RemixProgressProps extends AnchorProgressProps {
}
interface RemixProgressProviderProps extends AnchorProgressProviderProps {
}
/**
 * @param showProgress Show the progress bar. @default true
 * @param startPosition The position of the progress bar at the start of the page load - @default 0
 * @param disableSameURL Disable triggering progress bar on the same URL - @default true
 */
interface NavigateActionsProgressOptions {
    showProgress?: boolean;
    startPosition?: number;
    disableSameURL?: boolean;
    delay?: number;
    stopDelay?: number;
}
/**
 * @param customNavigate Custom navigate - @default undefined
 */
interface NavigateProgressOptions extends NavigateActionsProgressOptions {
    customNavigate?: () => NavigateFunction;
}
type NavigateOptions = {
    replace?: boolean;
    state?: any;
    preventScrollReset?: boolean;
    relative?: 'route' | 'path';
    flushSync?: boolean;
    viewTransition?: boolean;
};
type To = string | Partial<Path>;
interface ProgressNavigateFunction {
    (to: To, options?: NavigateOptions, progressOptions?: NavigateActionsProgressOptions): void;
    (delta: number, progressOptions?: NavigateActionsProgressOptions): void;
}

declare const RemixProgressProvider: ({ children, color, height, options, spinnerPosition, style, disableStyle, nonce, ...props }: RemixProgressProviderProps) => React.JSX.Element;

/**
 * Custom hook that extends Remix's useNavigate with progress bar functionality.
 *
 * @param options - Default progress options (e.g., showProgress, startPosition, disableSameURL)
 * @returns An enhanced navigate function with an extra parameter for progress options.
 */
declare function useNavigate(options?: NavigateProgressOptions): ProgressNavigateFunction;

export { type NavigateActionsProgressOptions, type NavigateProgressOptions, type ProgressNavigateFunction, RemixProgressProvider as ProgressProvider, type RemixProgressProps, type RemixProgressProviderProps, useNavigate };
