import type { ReactElement, ReactNode } from 'react'; import type { Resolver } from '@shopify/async'; import type { IfAllOptionalKeys, NoInfer } from '@shopify/useful-types'; export declare enum AssetTiming { None = 1, NextPage = 2, CurrentPage = 3, Immediate = 4 } export interface AsyncHookTarget { readonly resolver: Resolver; usePreload(...props: IfAllOptionalKeys? ], [ NoInfer ]>): () => void; usePrefetch(...props: IfAllOptionalKeys? ], [ NoInfer ]>): () => void; useKeepFresh(...props: IfAllOptionalKeys? ], [ NoInfer ]>): () => void; } export interface AsyncComponentType extends AsyncHookTarget { (props: Props): ReactElement; Preload(props: PreloadOptions): React.ReactElement<{}> | null; Prefetch(props: PrefetchOptions): React.ReactElement<{}> | null; KeepFresh(props: KeepFreshOptions): React.ReactElement<{}> | null; renderLoading: ((props: Props) => ReactNode) | undefined; } export type PreloadOptions = T extends AsyncHookTarget ? U : never; export type PrefetchOptions = T extends AsyncHookTarget ? U : never; export type KeepFreshOptions = T extends AsyncHookTarget ? U : never; //# sourceMappingURL=types.d.ts.map