import { DelayDefaultPropsContext, SuspenseDefaultPropsContext } from "./contexts/DefaultPropsContexts.mjs";
import { ContextType, PropsWithChildren } from "react";
import * as _$react_jsx_runtime0 from "react/jsx-runtime";

//#region src/DefaultProps.d.ts
/**
 * A class for configuring default props for Suspensive components.
 *
 * @example
 * ```tsx
 * const defaultProps = new DefaultProps({
 *   Delay: {
 *     ms: 1200,
 *     fallback: <LoadingMessage>Loading additional content...</LoadingMessage>
 *   },
 *   Suspense: {
 *     fallback: <Spinner>Fetching data...</Spinner>,
 *     clientOnly: false,
 *   },
 * })
 * ```
 */
declare class DefaultProps {
  Suspense?: ContextType<typeof SuspenseDefaultPropsContext>;
  Delay?: ContextType<typeof DelayDefaultPropsContext>;
  constructor(defaultProps?: DefaultProps);
}
interface DefaultPropsProviderProps extends PropsWithChildren {
  defaultProps: DefaultProps;
}
/**
 * A provider component that controls the default settings of Suspensive components.
 * Use this to configure default props for Suspense, Delay, and other Suspensive components globally.
 *
 * @example
 * ```tsx
 * const defaultProps = new DefaultProps({
 *   Delay: {
 *     ms: 1000,
 *     fallback: <LoadingSpinner />
 *   },
 *   Suspense: {
 *     fallback: <Skeleton />,
 *     clientOnly: false,
 *   },
 * })
 *
 * function App() {
 *   return (
 *     <DefaultPropsProvider defaultProps={defaultProps}>
 *       <YourApp />
 *     </DefaultPropsProvider>
 *   )
 * }
 * ```
 *
 * @see {@link https://suspensive.org/docs/react/DefaultPropsProvider Suspensive Docs}
 */
declare const DefaultPropsProvider: ({
  defaultProps,
  children
}: DefaultPropsProviderProps) => _$react_jsx_runtime0.JSX.Element;
//#endregion
export { DefaultProps, DefaultPropsProvider };
//# sourceMappingURL=DefaultProps.d.mts.map