import * as React from 'react';
import type { ComponentInstance } from '../../types';
export type Marker = {
    type: 'loop_var';
    path: string;
    nested: string[];
} | {
    type: 'action';
    path: string;
} | {
    type: 'derived_var';
    path: string;
    loopInstanceUid: string;
} | {
    type: 'server_component';
    path: string;
    loopInstanceUid: string;
} | {
    type: 'nested_loop_var';
    path: string;
    nestedIndex: number;
    loopVarNested: string[];
};
/**
 * Get markers for injection points in a renderer
 *
 * @param renderer renderer to check
 */
export declare function getInjectionMarkers(renderer: Record<string, any>): Marker[];
export declare const MARKER_INDEX = "__index";
export declare const MARKER_IS_LAST = "__is_last";
export declare const MARKER_IS_FIRST = "__is_first";
/**
 * Inject a loop variable into a renderer.
 * This will replace any loop variable in the renderer with the loop value.
 *
 * @param renderer renderer to inject into
 * @param markers paths of loop variables in the renderer
 * @param loopValue value to inject
 */
export declare function applyMarkers<T extends Record<string, any>>({ renderer, markers, loopValue, itemKey, index, itemsLength, }: {
    renderer: T;
    markers: Marker[];
    loopValue: any;
    itemKey: React.Key;
    index: number;
    itemsLength: number;
}): T;
/**
 * Check if the renderer component has any loop variables
 * Only checks top-level props of the component
 */
export declare function hasMarkers(component: ComponentInstance): string | null;
//# sourceMappingURL=templating.d.ts.map