import { type ReactNode, type PropsWithChildren, type CSSProperties, type ComponentPropsWithoutRef, type MouseEvent, type ForwardRefExoticComponent, type RefAttributes } from 'react';
import { type LinkData } from '@makeswift/prop-controllers';
import { type Snippet } from '../../../client';
import { type HttpFetch } from '../../../state/makeswift-api-client';
import { type SiteVersion } from '../../../api/site-version';
import { BaseHeadSnippet } from './page/HeadSnippet';
type HeadComponent = (props: {
    children: ReactNode;
}) => ReactNode;
type HeadSnippet = (props: {
    snippet: Snippet;
}) => ReactNode;
type ImageComponent = (props: {
    src: string;
    alt: string;
    sizes?: string;
    width?: number;
    height?: number;
    priority?: boolean;
    fill?: boolean;
    style?: CSSProperties;
}) => ReactNode;
type LinkProps = Omit<ComponentPropsWithoutRef<'a'>, 'onClick'> & {
    linkType?: LinkData['type'];
    onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown;
};
type LinkComponent = ForwardRefExoticComponent<RefAttributes<HTMLAnchorElement> & LinkProps>;
export type FrameworkContext = {
    Head: HeadComponent;
    HeadSnippet: HeadSnippet;
    Image: ImageComponent;
    Link: LinkComponent;
    versionedFetch: (siteVersion: SiteVersion | null) => HttpFetch;
};
export declare const DefaultHead: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
export declare const DefaultHeadSnippet: typeof BaseHeadSnippet;
export declare const DefaultImage: ImageComponent;
export declare const DefaultLink: LinkComponent;
export declare const versionedFetch: FrameworkContext['versionedFetch'];
export declare const FrameworkContext: import("react").Context<FrameworkContext>;
export {};
//# sourceMappingURL=framework-context.d.ts.map