import type { FlexBoxProps } from '@ariestools/sdk-react/flexbox'; import type { AvatarProps, CardActionAreaProps, CardContentProps, CardHeaderProps, CardProps, MenuItemProps, MenuListProps, TableCellProps } from '@mui/material'; import type { Payload } from '@xyo-network/sdk'; import type { ComponentType } from 'react'; import type { ListMode } from '../shared/index.js'; /** Base props for components that render a payload. */ export interface PayloadRenderProps { payload?: T; } /** Props for detailed payload renderers that may be marked active. */ export interface PayloadDetailsRenderProps extends PayloadRenderProps { active?: boolean; } /** Props for list-style payload detail renderers. */ export interface PayloadDetailsListRenderProps extends PayloadDetailsRenderProps { listMode?: ListMode; visibleRows?: number; } /** Props for editable payload renderers with an optional change handler. */ export interface PayloadEditorRenderProps extends PayloadDetailsRenderProps { onChange?: (payload: Payload) => boolean; } /** Name and capability predicate shared by all payload render plugins. */ export interface PayloadRenderPluginBase { canRender: (payload?: Payload) => boolean; name: string; } /** Card UI slots provided by a payload render plugin. */ export interface PayloadRenderPluginCardComponents { actionArea: ComponentType; content: ComponentType; header: ComponentType; } /** Avatar UI slots provided by a payload render plugin. */ export interface PayloadRenderPluginAvatarComponents { image: ComponentType; } /** Table UI slots provided by a payload render plugin. */ export interface PayloadRenderPluginTableComponents { cell: ComponentType; } /** Menu UI slots provided by a payload render plugin. */ export interface PayloadRenderPluginMenuComponents { item: ComponentType; list: ComponentType; } /** Box/detail UI slots provided by a payload render plugin. */ export interface PayloadRenderPluginBoxComponents { /** @deprecated - use detailsBox */ details?: ComponentType; detailsBox: ComponentType; detailsCard?: ComponentType; editor: ComponentType; listModes?: ListMode[]; } /** Full component map required by a resolved payload render plugin. */ export interface PayloadRenderPluginComponents { avatar: PayloadRenderPluginAvatarComponents; box: PayloadRenderPluginBoxComponents; card: PayloadRenderPluginCardComponents; table: PayloadRenderPluginTableComponents; } /** Partial component map accepted when configuring a payload render plugin. */ export interface PayloadRenderPluginComponentsConfig { avatar?: Partial; box?: Partial; card?: Partial; menu?: Partial; table?: Partial; } /** Fully resolved payload render plugin with complete component slots. */ export interface PayloadRenderPlugin extends PayloadRenderPluginBase { components: PayloadRenderPluginComponents; } /** Partial configuration used to build a {@link PayloadRenderPlugin}. */ export interface PayloadRenderPluginConfig extends PayloadRenderPluginBase { components?: PayloadRenderPluginComponentsConfig; } //# sourceMappingURL=PayloadRenderPlugin.d.ts.map