import type { HandleActionEvent, HandleMouseEvent } from '../components/ButtonHandle/ButtonHandle';
import type { HandleGroupManifest, HandleManifest } from '../schema/node-definition/handle';
import type { NodeDisplayManifest } from '../schema/node-definition/node-manifest';
import type { InstanceDisplayConfig } from '../schema/node-instance';
export interface ResolutionContext extends Record<string, unknown> {
    display?: InstanceDisplayConfig;
    inputs?: Record<string, unknown>;
    nodeId?: string;
    isCollapsed?: boolean;
}
export type ResolvedDisplay = InstanceDisplayConfig & {
    label: string;
    icon: string;
    description?: string;
    iconColor?: string;
    labelTooltip?: string;
    labelBackgroundColor?: string;
    centerAdornmentComponent?: React.ReactNode;
};
export interface ResolvedHandle extends Omit<HandleManifest, 'repeat' | 'itemVar' | 'indexVar'> {
    id: string;
    label?: string;
    visible: boolean;
    onAction?: (event: HandleActionEvent) => void;
    onMouseEnter?: (event: HandleMouseEvent) => void;
    onMouseLeave?: (event: HandleMouseEvent) => void;
}
export interface ResolvedHandleGroup extends Omit<HandleGroupManifest, 'handles'> {
    handles: ResolvedHandle[];
}
interface TemplateVars {
    [key: string]: unknown;
    item?: unknown;
    index?: number;
}
export declare function resolveDisplay(manifestDisplay?: NodeDisplayManifest, context?: ResolutionContext): ResolvedDisplay;
export declare function resolveVisibility(visible: boolean | string | undefined, context: ResolutionContext): boolean;
export declare function replaceTemplateVars(template: string, vars: TemplateVars): string;
export declare function resolveHandles(handleGroups: HandleGroupManifest[], context: ResolutionContext): ResolvedHandleGroup[];
export {};
//# sourceMappingURL=manifest-resolver.d.ts.map