/**
 * SDK wrapper for block data prefetching.
 * Uses the shared core implementation from @riverbankcms/blocks with the SDK client.
 */
import type { PageOutline } from '../contracts';
import type { SdkCustomBlock } from '../config/types';
import type { RiverbankClient } from '../client/types';
export type PrefetchContext = {
    siteId?: string;
    pageId?: string;
    previewStage?: 'published' | 'preview';
    root?: Record<string, unknown>;
};
export type ResolvedBlockData = Record<string, Record<string, unknown>>;
/**
 * Supported loader endpoints for SDK data fetching.
 * Only these endpoints can be used in block data loaders when using the SDK.
 *
 * This is the SDK's public contract for whitelisted endpoints.
 * In the monorepo we should keep it in sync with blocks' internal list.
 */
export declare const SUPPORTED_LOADER_ENDPOINTS: readonly ["listPublishedEntries", "getPublishedEntryPreview", "listPublicEvents", "listPublicCourses", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "getPublicFormById", "getPublicBookingServices", "getPublicEventDetails"];
export type SupportedLoaderEndpoint = (typeof SUPPORTED_LOADER_ENDPOINTS)[number];
/**
 * Options for SDK block data prefetching.
 */
export type SdkPrefetchOptions = {
    /**
     * SDK custom blocks from site config.
     * Used to look up data loaders for custom.* blocks.
     */
    customBlocks?: SdkCustomBlock[];
};
/**
 * Prefetch block data for SDK-based applications.
 * Maps loader endpoints to corresponding SDK client methods.
 *
 * Supports both system blocks and SDK custom blocks with data loaders.
 *
 * @example
 * ```typescript
 * import { createRiverbankClient } from '@riverbankcms/sdk';
 * import { prefetchBlockData } from '@riverbankcms/sdk/data';
 *
 * const client = createRiverbankClient({ apiKey, baseUrl });
 * const page = await client.getPage({ siteId, path: '/' });
 *
 * // Basic usage (system blocks only)
 * const blockData = await prefetchBlockData(page.outline, {
 *   siteId: page.siteId,
 *   pageId: page.id,
 * }, client);
 *
 * // With custom blocks from SDK config
 * const blockData = await prefetchBlockData(page.outline, context, client, {
 *   customBlocks: site.sdkConfig?.customBlocks,
 * });
 * ```
 */
export declare function prefetchBlockData(page: PageOutline, context: PrefetchContext, client: RiverbankClient, options?: SdkPrefetchOptions): Promise<ResolvedBlockData>;
