import { EMPTY } from '@innet/jsx'; import { type WatchValue } from '@watch-state/utils'; import { State } from 'watch-state'; export type ForKeyFn = (data: T) => V; export type ForKeyStr = { [P in keyof T]: T[P] extends V | undefined ? P : never; }[keyof T]; export type ForKey = ForKeyFn | ForKeyStr; export declare function getForKey(data: T, key?: ForKey): V; type GetType>> = T extends WatchValue> ? TT : never; type GetKey>, V extends ForKey, any>> = V extends ForKeyStr, infer VV> ? VV : V extends ForKeyFn, infer VV> ? VV : never; export interface ForProps>, V extends ForKey, any>> { of?: T; key?: V; fallback?: JSX.Element; children?: (value: T extends Iterable> ? GetType : State>, index: T extends Iterable> ? number : State, key: V extends string ? V extends keyof GetType ? GetType[V] : never : GetKey) => JSX.Element; } export declare function For>, V extends ForKey, any>>({ key, of: ofPropRaw, children, }: ForProps): JSX.Element[] | typeof EMPTY; export {};